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

/Qparallel or -parallel flag compined with Coarray / MPI

DataScientist
Valued Contributor I
335 Views

My understanding is that the /Qparallel or -parallel flags work as OpenMP parallelization underneath. But what does happen if a Coarray or MPI parallelized code is combined and compiled with the -parallel flag? I do not see errors or problems happening on a test problem that I have tried, but I doubt if it has led to any performance improvements beyond what Coarray/MPI offers.

On a side note, does the Intel ifort automatically integrate the omp dynamic library with the final executable or the DLL library? or should it be separately provided along with the executable? I am getting mixed results on a test system, once it work, another time (combined with Coarray/MPI) the executable complained about missing `libiomp5md.dll`.

 

0 Kudos
1 Solution
Steve_Lionel
Black Belt Retired Employee
322 Views

Auto-parallel will try to parallelize loops that operate on local variables. You're right that it uses OpenMP underneath. There's nothing inherently problematic about combining coarrays and OpenMP and I have seen it done a number of times.

On Windows, the OpenMP library is provided in DLL form only, so you will always need to have libiomp5md.dll in PATH (or in the executable directory). On Linux, a static library is still available, though discouraged.

As always, you should test the performance with different options to see which works best for you.

View solution in original post

3 Replies
Steve_Lionel
Black Belt Retired Employee
323 Views

Auto-parallel will try to parallelize loops that operate on local variables. You're right that it uses OpenMP underneath. There's nothing inherently problematic about combining coarrays and OpenMP and I have seen it done a number of times.

On Windows, the OpenMP library is provided in DLL form only, so you will always need to have libiomp5md.dll in PATH (or in the executable directory). On Linux, a static library is still available, though discouraged.

As always, you should test the performance with different options to see which works best for you.

JohnNichols
Valued Contributor II
317 Views

Is it better to have it in the path or in the exe directory -- I would have thought the former from previous comments you made?

Steve_Lionel
Black Belt Retired Employee
313 Views

Better in PATH - as the installer makes it. But some people want to copy their EXEs and not install the "redistributables", so putting copies of the DLLs in the EXE folder is an alternative.

Reply