-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MUMPS not using more than one core #17
Comments
What platform are you on? This might be OS or BLAS library dependent. MUMPS runs multithreaded for me with OpenBLAS on Linux when I set OMP_NUM_THREADS before starting Julia. To be precise, I tested this just now on:
If you're on OS X and using Apple's BLAS you need to set VECLIB_MAXIMUM_THREADS, rather than OMP_NUM_THREADS. |
Also on Linux:
and I can successfully get Pardiso to use multiple cores on this system via the export OMP_NUM_THREADS approach. Oddly (I'm not sure if this is related) but I have the following testing script:
which I was able to run once, but after aborting mid-factorization, and then re-running now only outputs the error:
At the same time, running |
Strange. I'm sorry, I have no good idea why openBLAS isn't picking up on your OMP_NUM_THREADS setting. In any event, neither the wrapper code nor the MUMPS library itself do anything to control multithreading. All that is going on is that MUMPS does much of its work through BLAS calls and these can be done multithreaded. So you set the number of threads for BLAS to use and MUMPS will just use what's there. I would double check that you built this package against the correct BLAS library and that you can run that library multithreaded in general. Unfortunately that's all I can think of, sorry. As for your other error, that seems to be a case of MUMPS throwing the wrong error message. My guess is that your random matrix was rank deficient. In this case MUMPS should throw a -6 or -10 error code but for some reason it's throwing -3. I checked that trying to factor a rank deficient complex matrix can give the -3 error code. e.g.
MUMPS.jl just returns the error code thrown by MUMPS itself so this is an upstream bug. |
Thanks for the pointer on that misleading error message. I guess I'll take a look at the build. |
The only thing I had to modify out of the box was in
to get it to compile on Ubuntu. This seems to be the standard way to hook into blas and I'm not sure what other options I would need to give it. |
During my testing I haven't been able to get MUMPS to use more than a single core. Following the instructions in the MUMPS documentation I have set the env variable OMP_NUM_THREADS=12 (prior to starting Julia). On this same system, this approach of exporting OMP_NUM_THREADS works for telling Pardiso to use more cores. What else could I look into trying to get MUMPS to use parallelism in factorization and solving?
The text was updated successfully, but these errors were encountered: