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

Memory usage during solve in function of number of cores

De_Muer__Tom
초급자
698 조회수

During the solve step of Pardiso of the system A*X=B where B is multiple right-hand-side we see that the memory consumed by Pardiso is highly dependent on the number of cores.  So we observe mem(total) = mem(A) + mem(X) + #cores * mem(B).  The documentation mentions this indirectly, but we like to have tighter control over the memory of Pardiso.  

One approach we can use is to split the right hand sides B wrt the number of cores so that on various systems the same amount of memory is used int the end.

Is there another to ensure that the workspace that Pardiso allocates is limited to a given number times of B, independent on the number of cores that will be used for solving?  Ideally we want to benefit from the parallelism but not pay up the memory cost or at least find a better balance where we incur some cost in performance but not all by plainly reducing the number of OMP threads used.  I did not find any setting that gave that level of control except reducing the number of threads.

0 포인트
2 응답
Gennady_F_Intel
중재자
698 조회수

Tom,

How did you get this memory consumption, via iparm[16] ?   Do you link with threaded version of MKL?  Is that version 2018?

--Gennady

 

 

0 포인트
De_Muer__Tom
초급자
698 조회수

Hi Gennady,

Got this indeed from iparm[16], we also trapped malloc to confirm.  It is the threaded 2018 version of MKL.  We saw the same behavior on 2017, not so on earlier versions we believe (no hard confirmation for that though).

br,
Tom

0 포인트
응답