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

5 posts / 0 nouveau(x)
Dernière contribution
Reportez-vous à notre Notice d'optimisation pour plus d'informations sur les choix et l'optimisation des performances dans les produits logiciels Intel.

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

Laisser un commentaire

Veuillez ouvrir une session pour ajouter un commentaire. Pas encore membre ? Rejoignez-nous dès aujourd’hui