- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@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
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page