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

How to inform the user that PARDSIO is running in OOC mode?

Hassan-Ebrahimi
New Contributor I
1,354 Views

Hi

 

I am using intel MKL PARDSIO direct solver in a product. The version is that of OneAPI 2022.

 

By setting iparm(60) =1 the solver runs in OOC mode only if there isn't enough memory for the In-Core calculation.

The product writes a log file for the user's information. In particular the user may want to know if the solver is running in OOC mode.

 

PARDSIO has a parameter (  msglvl ) for printing the statistical information and calculation process.  But the messages are shown in the standard output only. 

 

How can we set to write them into a file?

 

Also, is it possible to predict the OOC status before starting the factorization?

 

Thank you.

 

Hassan

 

 

 

 

0 Kudos
1 Solution
morskaya_svinka_1
New Contributor I
1,228 Views

I guess you can use OS API from the programming language you use to call MKL PARDISO and redirect standard output of the process to where you want (for example, to several files and to the screen at the same time) and change it back when pardiso work is complete. I am interested though how exactly MKL PARDISO checks the amount of RAM available to be able to check it myself and use IC or OOC explicitly by setting iparm[59]=0 or iparm[59]=2. Then I can notify the user even before factorization starts in the way I want (e. g. using GUI).
I saw that MKL PARDISO memory consumption (WorkingSet) on Windows 10 is not a constant value during the factorization process, its peak value is reached at the end of the factorization or at solution and refinement phases (I attached the logs where I printed memory consumption every second). It also does not use all the required RAM estimated by max(iparm[14], iparm[15] + iparm[16]), just about 75% of it when swap file is disabled and 95% when enabled. I'm not sure what for I wrote this last paragraph, just wanted to share my investigation.

View solution in original post

0 Kudos
4 Replies
morskaya_svinka_1
New Contributor I
1,229 Views

I guess you can use OS API from the programming language you use to call MKL PARDISO and redirect standard output of the process to where you want (for example, to several files and to the screen at the same time) and change it back when pardiso work is complete. I am interested though how exactly MKL PARDISO checks the amount of RAM available to be able to check it myself and use IC or OOC explicitly by setting iparm[59]=0 or iparm[59]=2. Then I can notify the user even before factorization starts in the way I want (e. g. using GUI).
I saw that MKL PARDISO memory consumption (WorkingSet) on Windows 10 is not a constant value during the factorization process, its peak value is reached at the end of the factorization or at solution and refinement phases (I attached the logs where I printed memory consumption every second). It also does not use all the required RAM estimated by max(iparm[14], iparm[15] + iparm[16]), just about 75% of it when swap file is disabled and 95% when enabled. I'm not sure what for I wrote this last paragraph, just wanted to share my investigation.

0 Kudos
Hassan-Ebrahimi
New Contributor I
1,210 Views

Thanks for your reply and for sharing your investigation.  They are very helpful.

I also preferred to predict the IC/OOC status before the factorization starts but I couldn't find out how.  Then I decided to use the status that PARDISO reports at the beginning of the factorization. 

 

Regards,

 

Hassan

 

0 Kudos
Mark_L_Intel
Moderator
1,151 Views

Hello @Hassan-Ebrahimi,

 

    Adding a reference for other Forum participants to Pardiso documentation regarding iparm parameters. In addition to above answer by @morskaya_svinka_1, you could look at  iparm[62] in above link.   

0 Kudos
morskaya_svinka_1
New Contributor I
1,108 Views

@Mark_L_Intel, looking at iparm[62] after analysis phase has nothing to do with helping predict whether IC or OOC mode will be used, right? I guess you mentioned iparm[62] just in case to check possible memory consumption.  But this is a very strange parameter to me, as it is often equal to 0 after analysis phase. According to the description in current latest documentation 2024.2 (and older versions 2022.1, 2024.0, others I did not read), iparm[62]=0 means that MKL PARDISO requires 0 kilobytes for internal floating-point arrays during factorization phase. How is that possible is a good question, as I think internal floating-point arrays must be used always. So I think either it is a wrong description in the documentation or iparm[62] is messed with some other iparm, e. g. iparm[61]. I made a post about it recently https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/OneAPI-PARDISO-iparm-62-0/m-p/1636246#M36518

0 Kudos
Reply