I am having some problems which look very much like a call to ZGESDD is not thread safe, when linking against lapack and BLAS. I am calling the routine ZGESDD within an OPENMP parallel section, and see that if I run with multiple threads, this call produces garbage.
I have checked:
The problem goes away if the call to ZGESDD is placed in an !$OMP CRITICAL section, to avoid multiple threads calling this routine at the same time.
The problem goes away if I link against ACML rather than ATLAS.
The problem goes away if I replace the ZGESDD call with ZGESVD (which is supposed to do the same thing, but I understand ZGESVD is generally slower).
The problem was first encountered with the version of atlas distributed by ubuntu, but remains when I recompile ATLAS myself (although there appeara to be cases where I can run with more threads in this case, but still hit a race condition for enough threads, this may however just be effects of how long the function call takes affecting whether the race condition is realised).
This is using ATLAS 3.10.0 as downloaded from sourceforge, and the Lapack 3.4.2 tar file for Lapack, on a four core Linux machine, with Kernel 3.2.0-40-generic #64-Ubuntu SMP.
Many thanks in advance for any help with this.
Log in to post a comment.