- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm running the pardiso solver on a machine with CentOS 6.5 using Fortran. I'm using MKL v 11.3
When I set the number of threads using either environment variable MKL_NUM_THREADS or inside the Fortran code, using the mkl_set_num_threads() function, everything works as expected when I define the number of threads to be 32 or less. Whenever, I set the number of the number of threads to be anything larger than 32, say for example 48, pardiso only sees 32 threads.
My machine has 4 cpu's with 16 cores in each cpu, and I have the entire machine to myself. So ... I'd like to set the number of threads to be 64.
Any ideas of how I can do this?
Many thx,
Bob
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi rdees,
have you ever checked maximum number of threads you could use (mkl_get_max_threads())? You could also try with OpenMP:
omp_set_num_threads( 48 ); #pragma omp parallel num_threads( 48 ) { ... }
Best regards,
Fiona
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Fiona,
Thx for the hint. I fiddled around a bit more and got it to work.
When I tried setting the number of threads using the function mkl_set_num_threads(48) it did not work, (i.e. instead it still set the number of threads to 32). If I issued the line mkl_set_num_threads(8), it did set the number of threads to 8. mkl_set_num_threads function works as long as I set the number to be less than or equal to 32.
However, if I issue the command mkl_set_num_threads_local(48), I do indeed get access to 48 threads.
I'm not quite sure why it works with mkl_set_num_threads_local and not mkl_set_num_threads.
If anyone knows why, I'd be quite interested.
Thx,
Bob
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi rdees,
mkl_set_num_threads() would not set limitation for number of threads, normally you could use any number of threads which is less than maximum threads you have in your system. Could you please tell me the size of matrix you calculated in your code, you might could not use large number of threads for small size of matrix. Please test with large size of matrix and also try to use mkl_set_dynamic(0) to disable dynamic adjustment of threads.
mkl_set_dynamic(0); mkl_set_num_threads(48); //your code calling pardiso ...
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page