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

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

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

publicaciones de 5 / 0 nuevos
Último envío
Para obtener más información sobre las optimizaciones del compilador, consulte el aviso sobre la optimización.

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

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

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

Hi Chao,

Thank you very much for your kindly suggestion and explaination.

Thanks,

Zhanghong Tang

Inicie sesión para dejar un comentario.