- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Chao,
Thank you very much for your kindly suggestion and explaination.
Thanks,
Zhanghong Tang

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