- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am working in scientific computation on an application with a large number of Fourier transforms of large 2D arrays and wish to take advantage of the threading of MKL via IMSL. However I have been unable to make my application use any more than a single thread. This persists in a stripped down application consisting of nothing more than a do loop over forwards and backwards ffts.
I am using IVF Professional edition for Windows with IMSL: compiler version 10.1.011, MKL version 10.0.011, IMSL version 6.0.0, installed in that order from the three CDs included in the distribution. I am compiling from the IDE in Visual Studio 2005 PPE which came with the distribution.
I have followed the instructions in the Compiler DocumentationBuilding applicationsUsing librariesUsing IMSL* section of the help. I have followed the (slightly different) instructions on http://www.intel.com/support/performancetools/libraries/mkl/win/sb/CS-028372.htm. I have tried mixing the two. All compile, but none uses more than a single thread. This is the case whether I use the static - link_fnl_static_hpc - or dll -link_fnl_static_hpc - version of the libraries via the include command.
I know that the OpenMP capability works, because a separate program using a simple OpenMP do loop successfully uses all four available threads (or can be successfully restricted by using omp_set_num_threads).
This worked so well when I was using IVF 9 and IMSL 5. I must just be missing some compiler switch or include path, but I can't find it.
Please let me know if I can supply any more information. Any suggestions would be gratefully appreciated.
I am using IVF Professional edition for Windows with IMSL: compiler version 10.1.011, MKL version 10.0.011, IMSL version 6.0.0, installed in that order from the three CDs included in the distribution. I am compiling from the IDE in Visual Studio 2005 PPE which came with the distribution.
I have followed the instructions in the Compiler DocumentationBuilding applicationsUsing librariesUsing IMSL* section of the help. I have followed the (slightly different) instructions on http://www.intel.com/support/performancetools/libraries/mkl/win/sb/CS-028372.htm. I have tried mixing the two. All compile, but none uses more than a single thread. This is the case whether I use the static - link_fnl_static_hpc - or dll -link_fnl_static_hpc - version of the libraries via the include command.
I know that the OpenMP capability works, because a separate program using a simple OpenMP do loop successfully uses all four available threads (or can be successfully restricted by using omp_set_num_threads).
This worked so well when I was using IVF 9 and IMSL 5. I must just be missing some compiler switch or include path, but I can't find it.
Please let me know if I can supply any more information. Any suggestions would be gratefully appreciated.
Link Copied
4 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You are compiling with /Qopenmp?
I suggest sending a sample application to Intel Premier Support so that we can check it out.
I suggest sending a sample application to Intel Premier Support so that we can check it out.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Why not just omit IMSL altogether and use MKL. It's a superior product, threaded, multi-core aware, cluster ready, high valued, and at a decent price.
Gerry
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank-you very much for your replies.
Steve: I am compiling with /Qopenmp. I have sent a sample to Intel Premier Support. Thanks for the suggestion.
Gerry: That's an interesting idea. I guess I was hoping for a quick-fix since I've got rather a lot of code that was working with IMSL under the previous version. I couldn't get rid of IMSL altogether as I am using some other routines not present in MKL (interpolations, special functions, etc.). But if there is no reason I can't use both explicitly in the same program, then that is certainly worth looking into. Thanks.
EDIT: I should add to that, though, that even if I can switch to using MKL directly, I would like to solve the original problem. IMSL multithreading via the MKL libraries is part of the product description so must be doable.
Scott
Steve: I am compiling with /Qopenmp. I have sent a sample to Intel Premier Support. Thanks for the suggestion.
Gerry: That's an interesting idea. I guess I was hoping for a quick-fix since I've got rather a lot of code that was working with IMSL under the previous version. I couldn't get rid of IMSL altogether as I am using some other routines not present in MKL (interpolations, special functions, etc.). But if there is no reason I can't use both explicitly in the same program, then that is certainly worth looking into. Thanks.
EDIT: I should add to that, though, that even if I can switch to using MKL directly, I would like to solve the original problem. IMSL multithreading via the MKL libraries is part of the product description so must be doable.
Scott
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
See Fig. 2 in
http://softwaredispatch.intel.com/?pin=ON29EE32&xid=0A2&t=3&lid=2114
BTW, FFTW (http://www.fftw.org) comes with a Fortran interface as well as C. It would be interesting to see where on the figure IMSL would wind up.
Gerry

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