- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello!
I am using PARDISO for factorization of symmetrical complex matrices. Recently I downloaded evaluation library v. 11.2 upd3 and run a code that was developed for v.10 library some time ago. It solves the problem with success but only with 1 thread. I.e. I failed to enable multithreading for PARDISO. Last time I used OMP_NUM_THREADS variable and it was ok.
How can I enable multithreading? Can the evaluation (trial) license be locked for more than 1 thread?
Environment:
-
Win7 OS
-
MS Visual Studio 2010 C++
-
Desktop PC with Intel i5 CPU
Pardiso iparm:
iparm[0] = 0; // No solver default.
iparm[1] = 3; // The parallel (OpenMP) version of the nested dissection algorithm
iparm[2] = 0; //
iparm[3] = 0; // No iterative-direct algorithm.
iparm[4] = 0; // No user fill-in reducing permutation.
iparm[5] = 0; // Write solution into x.
iparm[6] = 0; // Not in use.
iparm[7] = 2; // Max numbers of iterative refinement steps.
iparm[8] = 0; // Not in use.
iparm[9] = 13; // Perturb the pivot elements with 1E-13.
iparm[10] = 1; // Use nonsymmetric permutation and scaling MPS.
iparm[11] = 0; // Not in use.
iparm[12] = 0; // Not in use.
iparm[13] = 0; // Output: Number of perturbed pivots.
iparm[14] = 0; // Not in use.
iparm[15] = 0; // Not in use.
iparm[16] = 0; // Not in use.
iparm[17] = -1; // Output: Number of nonzeros in the factor LU.
iparm[18] = -1; // Output: Mflops for LU factorization.
iparm[19] = 0; // Output: Numbers of CG Iterations.
Task: Reordering + factorization of Complex symmetrical matrix;
Goal: multithread run within OpenMP paradigm
I tried following methods for multithreading:
-
Set environment variable OMP_NUM_THREADS– does not work (process uses 1 thread/CPU kernel)
-
Set variable MKL_NUM_THREADS– does not work (process uses 1 thread)
-
Call function omp_set_num_threads(num_threads) – does not work (process uses 1 thread)
-
Call function mkl_set_num_thread(num threads) – does not work (process uses 1 thread)
All “*_set_num_thread” functions call are in the main() before calling any Pardiso routine. Variables are set for the process or in the main function.
Thank you in advance.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Roman, the evaluation version of MKL is the same as the product version. How do you link your application? it looks like you linked sequential threading libs.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you for answer!
It seems so. Could you tell me please, what libraries are necessary to link in order to use PARDISO in a parallel? I mean, static libs?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
static or dynamic - doesn't make a sense from threading point of view. Please refer to the mkl linker adviser follow with the link: https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor/ to find how to link with threading version.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The link is very helpful. Thanks a lot!

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