Quantcast
Channel: Intel® Software - Intel® oneAPI Math Kernel Library & Intel® Math Kernel Library
Viewing all articles
Browse latest Browse all 3005

MKL / PARDISO Multithreading Issue

$
0
0

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.


Viewing all articles
Browse latest Browse all 3005

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>