Hello again,
I have been benchmarking new compute equipment for a while now and it I found a number of interesting issues that I don't completely understand. One example benchmark is the svd of a 1000x200000 matrix, and as discussed previously on the forum I implemented the scalapack variant by performing an LQ decomposition first, then performing the SVD of L using pcgesvd and finally calculating VT using pcunmlq. The last part is the slowest in general, but I have been getting values as low as 25-30 seconds for this problem (all three steps together) with this code on a small cluster with dual socket quadcore blades, using a total of 64 cores.
Interestingly the best SMP machine is close to 60 seconds and a bluegene/P is a bit behind that.
I'm disappointed about the performance of the SMP systems, but the bottleneck seems to be somewhere with MPI or using MPI on a shared memory SMP system.
For comparison I also turned to just using plain Lapack cgesdd and multithreaded BLAS (GotoBLAS). Using 16 threads on my 16 core SMP machine in the office it takes 1060 seconds to solve this problem, while my scalapack program described above using 16 mpi ranks takes 128 seconds for the same problem on the same machine. Is there any way to get more performance out of SMP systems ?
Thanks, Thomas

