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

How to setup environment to let PARDISO use all CPU resource?

Zhanghong_T_
Novice
262 Views

Dear all,

I am trying to use PARDISO in machines with 2 X5675 CPUs. I have enabled hyperthread in CMOS so I can see 24 cores in windows task manager. I run PARDISO with parallel paramerter settings:

   iparm(1) = 1 ! no solver default
  !iparm(2) = 2 ! fill-in reordering from METIS
  iparm(2) = 3 ! parallel (OpenMP) version of the nested dissection algorithm
  iparm(4) = 0 ! no iterative-direct algorithm
  iparm(5) = 0 ! no user fill-in reducing permutation
  iparm(6) = 0 ! =0 solution on the first n compoments of x
  iparm(8) = 9 ! numbers of iterative refinement steps
  iparm(10) = 13 ! perturbe the pivot elements with 1E-13
  iparm(11) = 1 ! use nonsymmetric permutation and scaling MPS
  iparm(13) = 0 ! maximum weighted matching algorithm is switched-off (default for symmetric). Try iparm(13) = 1 in case of inappropriate accuracy
  iparm(14) = 0 ! Output: number of perturbed pivots
  iparm(18) = -1 ! Output: number of nonzeros in the factor LU
  iparm(19) = -1 ! Output: Mflops for LU factorization
  iparm(20) = 0 ! Output: Numbers of CG Iterations
  iparm(21) = 1 ! Apply 1x1 and 2x2 Bunch and Kaufman pivoting during the factorization process
  iparm(24) = 1 ! PARDISO uses new two-level factorization algorithm

In addition, I have set the following environment variables:

MKL_NUM_THREADS   24
MKL_DOMAIN_ALL       24
OMP_NUM_THREADS  24 

However, when running the program with one process, the CPU usage is 50% when solving, when running with two processes, the CPU usage of every process is 25% when solving, and so on. The final result is the total CPU usage is only 50%.

What have I missed to do?

Thanks,

Zhanghong Tang

0 Kudos
4 Replies
Chao_Y_Intel
Moderator
262 Views

Zhanghong,

For hyperthreading system, it is recommended to set the application threading number to half of the total physical threadings
You can check a few of the detail on this post:
http://software.intel.com/en-us/forums/topic/294954

You can use the following setting to enforce more threading:
MKL_DYNAMIC=FALSE
MKL_NUM_THREADS= number of the threadings.

but it may not increase the application performance.

Regards,
Chao

0 Kudos
Zhanghong_T_
Novice
262 Views

Hi Chao,

Thank you very much for your kindly reply. So you recommend that I set as follows?

MKL_NUM_THREADS   12
MKL_DOMAIN_ALL       12
OMP_NUM_THREADS  12

Thanks,

Zhanghong Tang

0 Kudos
Chao_Y_Intel
Moderator
262 Views

Zhanghong,

yes, it is recommend to set as 12 threadings.  MKL_NUM_THREADS/OMP_NUM_THREADS/MKL_DOMAIN_NUM_THREADS, you only need to choose one of them.

Thanks,
Chao

0 Kudos
Zhanghong_T_
Novice
262 Views

Hi Chao,

Thank you very much for your kindly suggestion and explaination.

Thanks,

Zhanghong Tang

0 Kudos
Reply