Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

IMSL 6: trying to use SMP

scott3
Beginner
691 Views
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.

0 Kudos
4 Replies
Steven_L_Intel1
Employee
691 Views
You are compiling with /Qopenmp?

I suggest sending a sample application to Intel Premier Support so that we can check it out.
0 Kudos
g_f_thomas
Beginner
691 Views

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

0 Kudos
scott3
Beginner
691 Views
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
0 Kudos
g_f_thomas
Beginner
691 Views

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

0 Kudos
Reply