When calling the SCALAPACK routine PSSYEVD with several threads, only the first MPI task is actually threading as expected.
I have met this issue on both my laptop and on a supercomputer, both running with MKL 2019.2.
In practice, the "top" command on my laptop when running with 2 MPI tasks and 2 MKL threads shows that the first MPI task runs at 200%, whereas the second one runs at 100%.
Note that this problem disappear when I call the double precision routine PDSYEVD instead or when I call the more regular PSSYEV.
actually this looks very strange because of our implementation is the same for single and double precision data types.
Am I understand you right that you run PSSYEVD executable on SMP machine and expect to see different threading based on top output?
Let me be more precise. Here is why I do on my 4-core laptop:
> export OMP_NUM_THREADS=2 > export MKL_NUM_THREADS=2 > mpirun -np 2 ./a.out & > top PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 15075 bruneval 20 0 2883124 422376 23480 R 198.7 2.6 0:21.94 a.out 15076 bruneval 20 0 1236508 237804 18008 R 99.7 1.5 0:11.64 a.out
The top shows two unbalanced MPI tasks. This is not what I expect. PDSYEVD would produce two tasks with 200% each.
Could someone reproduce this?