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

## Pardiso # of threads maximum...

Beginner
904 Views

I tested PARDISO and found that IPAM[3] is limited in 8. I tried to use 16 threads, but summary shows that it uses 8.

What should I fix ?

iparm[FORT(1)] = 1; // 0 - all default, 1 - MUST supply all
iparm[FORT(2)] = 2; // 0 - MMD, 2 - ND METIS
iparm[FORT(3)] = get_num_threads(); // num of threads
iparm[FORT(4)] = 0; // No iterative-direct algorithm
iparm[FORT(5)] = 0; // No user fill-in reducing permutation
iparm[FORT(6)] = 0; // Write solution into x
iparm[FORT(7)] = 0; // Not in use
iparm[FORT(8)] = 0; // num of iterative refinement
iparm[FORT(9)] = 0; // Not in use
iparm[FORT(10)] = 13; // Pivot 13 - non sym 8 sym indefinite
iparm[FORT(11)] = 1; // Scaling 1 - non sym, 0 - sym
iparm[FORT(12)] = 0; // Conjugate transposed/transpose solve
iparm[FORT(13)] = 1; // 1 - normal matching, 2 - advanced
iparm[FORT(14)] = 0; // Output: Number of perturbed pivots
iparm[FORT(15)] = 0; // Not in use
iparm[FORT(16)] = 0; // Not in use
iparm[FORT(17)] = 0; // Not in use
iparm[FORT(18)] = -1; // -1 - report nz in factors
iparm[FORT(19)] = -1; // -1 - report MFlops
iparm[FORT(20)] = 0; // Output: Numbers of CG Iterations
iparm[FORT(21)] = 1; // 0 - 1x1 pivot] 1 - 2x2 bunch-kaufman pivot (default)
iparm[FORT(24)] = 1; // 0 - one level parallel, 1 - two level (default)
iparm[FORT(25)] = 1; // 0 - seq solve] 1 - par solve (default)
iparm[FORT(27)] = 1; // 0) no check, 1) matrix check
iparm[FORT(52)] = 1; // num of dist solver : multi thread only should be 1

cout << "IPARM[FORT(3)] = " << iparm[FORT(3)] << endl;

PARDISO returns like this:

Statistics:
===========
< Parallel Direct Factorization with number of processors: > 8
< Numerical Factorization with BLAS3 and O(n) synchronization >

< Linear system Ax = b >
number of equations: 357889
number of non-zeros in A: 26539009
number of non-zeros in A (%): 0.020720

8 Replies
Employee
904 Views

Hi,
Currently iparm[2] doesn't used. MKL PARDISO by default use env. setting of number of threads.

With best regards,

Alexander Kalinkin

Employee
904 Views

Hi,

In this topic (http://software.intel.com/en-us/forums/topic/347047#comment-1718453) explain how one can change number of threads used by PARDISO.

With best regards,

Alexander Kalinkin

Beginner
904 Views

Thank you for the quick answer. I tried both environment variable setup and runtime omp library setup.

However, neither works.

Statistics:
===========
< Parallel Direct Factorization with number of processors: > 8
< Numerical Factorization with BLAS3 and O(n) synchronization >

< Linear system Ax = b >
number of equations: 357889
number of non-zeros in A: 26539009
number of non-zeros in A (%): 0.020720

number of right-hand sides: 1

< Factors L and U >
number of columns for each panel: 72
number of independent subgraphs: 0
< Preprocessing with state of the art partitioning metis>
number of supernodes: 66609
size of largest supernode: 10455
number of non-zeros in L: 367780045
number of non-zeros in U: 356687962
number of non-zeros in L+U: 724468007
[PARDISO] Analysis completed ...
[PARDISO] Number of perturbed pivots = 0
[PARDISO] Number of peak memory symbolic = 961930
[PARDISO] Number of permenant memory symbolic = 687696
=== PARDISO is running in In-Core mode, because iparam(60)=0 ===
Percentage of computed non-zeros for LL^T factorization
0 % 1 % 2 % 3 % 4 % 5 % 6 % 7 % 8 % 9 % 10 % 11 % 12 % 13 % 14 % 15 % 16 % 17 % 18 % 19 % 20 % 21 % 22 % 23 % 24 % 25 % 26 % 27 % 28 % 29 % 30 % 31 % 32 % 33 % 34 % 35 % 36 % 37 % 38 % 39 % 40 % 41 % 42 % 43 % 44 % 45 % 46 % 47 % 48 % 49 % 50 % 51 % 52 % 53 % 54 % 55 % 56 % 57 % 58 % 59 % 60 % 61 % 62 % 63 % 64 % 65 % ^C
[kyungjoo @nozomi] bench > echo \$OMP_NUM_THREADS
16
[kyungjoo @nozomi] bench >

Beginner
904 Views

Another question: The machine is 2x8 (=16) core machine. Then, does intel compiler think that the machine has maximum 8 threads ?

Employee
904 Views

Hi,

About changing number of threads for PARDISO solver please see this topic: http://software.intel.com/en-us/forums/topic/347047

With best regards,

Alexander Kalinkin

Employee
904 Views

Hi,

Hi

Will answer in private topic, because problem of posting hyperlinks.

With best regards,

Alexander Kalinkin

Beginner
904 Views

Thank you. It works now. However, this is tricky. One last question for today: can I interpret the number of supernodes as "number of fronts" ?

< Parallel Direct Factorization with number of processors: > 16

< Preprocessing with state of the art partitioning metis>

number of supernodes: 35204
size of largest supernode: 5671

Employee
904 Views

Hi,

can I interpret the number of supernodes as "number of fronts" ?  No, the supernode has a bit another meaning, its correlate with number of unknowns and matrix structure.