- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi
I am having problems in PARDISO out of core solver. In my code, I set these variables (using C convention):
iparam[2] = 1;
iparam[59] = 2;
I use VS2005 (Windows XP, 32-bit, P4, 2GB) and I call PARDISO from inside a COM DLL. The size of the matrix I try to solve = ~340,000 with 7.5 million nonzeros.
First I define "MKL_PARDISO_OOC_MAX_CORE_SIZE = 2000" in "pardiso_ooc.cfg" and then, I am getting "-2" error code (insufficient memory). And If it is "MKL_PARDISO_OOC_MAX_CORE_SIZE = 250", I am getting -9 (insufficient memory for OOC). I tried a few other numbers, but i still get either -2 or -9.
Interestingly, if I create a simple Windows-console application and try to solve my matrix, It works successfully with both in-core and OOC PARDISO.
Any help greatly appreciated
regards
bulent
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I just checked my version: 10.0.4.023
b.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Bulent,
I think that the cause of the problem you met is limitation for allocation memory from DLL ( I guess that this limit something around 2 GB ). Some people compains about 1 Gb only.
Look at your case:
The Input data: Size of the matrix ~ 340.000, nonzero(A) ~ 7.500.000
Therefore after reordering we can expect the number of nonzeros LU factors may be for example > 500.000.000. So, for allocation this LU factors requires more that 2 Gb.
++++++++++++++++++++++++++++++++++++++++
As an example: I have tried to reproduce the task
Input matrix size = 350 000
Mtype == 2 (real and symmetric positive definite matrix)
and please look at the snip of statistics report:
< Linear system Ax = b>
#equations: 350000
#non-zeros in A: 1384500
non-zeros in A (): 0.001130
#right-hand sides: 1
< Factors L and U >
#columns for each panel: 80
& nbsp; #independent subgraphs: 0
< Preprocessing with state of the art partitioning metis>
#supernodes: 230149
size of largest supernode: 5062
number of nonzeros in L 152892710
number of nonzeros in U 1
number of nonzeros in L+U 152892711
++++++++++++++++++++++++++++++++++++++++++
Please pay attention for this matrix (only 1.4 million non-zeroes) we have nonzeros for LU ~ 150 million, therefore for allocation this array require ~ 8*150 million > 1.2 Gb
This is just suggestion. You can easy to check this suggestion to reduce the task size.
Please let me know if any further question.
Regards,
--Gennady
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Gennady
Thanks for your comments. I run in-core version of PARDISO in my little test program (calling PARDISO routines from a windows-console application). Here is the results I have:
< Linear system Ax = b>
#equations: 324885
#non-zeros in A: 7440848
non-zeros in A (%): 0.007050
#right-hand sides: 1
< Factors L and U >
#columns for each panel: 80
#independent subgraphs: 0
< Preprocessing with state of the art partitioning metis>
#supernodes: 55249
size of largest supernode: 2479
number of nonzeros in L 63468206
number of nonzeros in U 1
number of nonzeros in L+U 63468207
For factorization part, apparently, the programs needs 63468207 * 8 /1E6 = 507.75 MB memory.
I see your comments regarding high memory requirements and I totally agree with you.. And, I understand that when I call PARDISO from a DLL, it may be the reason that either OS or DLL does not allow PARDISO use ~500 MB from the heap memory.
On the other had, what is confusing me is that I run into the same limitation when I use out-of-core version of PARDISO called from my DLL. (for OOC version, I believe this 500MB is stored in files , and then the solver partially reads some of these files into memory during factorization).
Regards
Bulent
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi
I am having problems in PARDISO out of core solver. In my code, I set these variables (using C convention):
iparam[2] = 1;
iparam[59] = 2;
I use VS2005 (Windows XP, 32-bit, P4, 2GB) and I call PARDISO from inside a COM DLL. The size of the matrix I try to solve = ~340,000 with 7.5 million nonzeros.
First I define "MKL_PARDISO_OOC_MAX_CORE_SIZE = 2000" in "pardiso_ooc.cfg" and then, I am getting "-2" error code (insufficient memory). And If it is "MKL_PARDISO_OOC_MAX_CORE_SIZE = 250", I am getting -9 (insufficient memory for OOC). I tried a few other numbers, but i still get either -2 or -9.
Interestingly, if I create a simple Windows-console application and try to solve my matrix, It works successfully with both in-core and OOC PARDISO.
Any help greatly appreciated
regards
bulent
Hi, Bulent,
You are not alone. I reported the exact same problem to Intel premier support 4 months ago, with a complete sample project, a dataset (ftp://ftp.orca3d.com/pub/Intel/PardisoAlone.zip), and the computer description,yet still had no answer up to today. Accidentally, we run the same executable in a single processor machine last week, and it runthrough without any problem. Please join me to ask MKL developteam to fix this dual-core related PARDISO-OOC bug ASAP.
Regards
Ming

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page