Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.

dss_solve_real in parallel?

sobotkajc
Beginner
256 Views
I'm using the dss routines in version 10.0.3.020 of the intel mkl solver for linux. I am able to compile and run my program without a problem. My sparse matrix is fairly large and cpu intensive, so I use multiple threads on a server with multiple cpus. I run the reorder and factorization routines once at the beginning of my program, and they appear to use multiple cpus according to top. I can also increase or decrease the solution time of the other dss processes by increasing or decreasing the number of cpus. For instance, if I use 1 processor, I can factor the matrix in ~1500 secs, but if I use 6 processors, this factorization only requires abou 600 seconds.

The dss_solve_real routine does not appear to run in parallel. Changing the number of processors does not influence the solution time which requires about 38 secs. My program calls the dss_solve_real routine several hundred times during execution, and I only have one right hand side that I can pass to dss_solve_real at any given time. Is there an option that I can pass to the mkl solver to use parallelism? Or, are their any options that would reduce the time to execute this porition of the dss solver?

Any help would be greatly appreciated. Thank you!
0 Kudos
2 Replies
Gennady_F_Intel
Moderator
256 Views
Hi,
Dss_solve_real has not parallelized in the case of one right hand side. But it is threaded for many right sides. Partially parallelization of many right sides case was done in MKL 9.1 and later releases (real symmetric and real symmetric positive defined matrices). Parallelization of Mtype=6 (complex and symmetric matrices) was done in MKL 10.0 and later realeses. The case of many right hand sides has been fully parallelized in MKL 10.2 beta and Gold coming soon.
Let me explain what is the problem with one right hand side. Solving step in PARDISO for one right hand side is like level 2 dense blas e.g. small number of operations and too many loads.
Until the latest Intel CPU ( Nechalem) parallelization of this step caused performance degradation and there were a couple of MKL releases where this case was parallel. Therefore we had had to roll back this parallelization due to many users complaints. On Nehalem this step can give some performance improvements on this stage.
--Gennady

0 Kudos
sobotkajc
Beginner
256 Views
Gennady,

Thank you for your response. Unfortunately I can only pass dss_solve_real one right hand side at a time and cannot take advantage of the parallelism as a consequence. Are there any other options to speed up dss_solve_real?
0 Kudos
Reply