Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
Announcements
FPGA community forums and blogs on community.intel.com are migrating to the new Altera Community and are read-only. For urgent support needs during this transition, please visit the FPGA Design Resources page or contact an Altera Authorized Distributor.
29285 Discussions

Release Configuration Flags - Need for additional DLLs

rasa
Beginner
557 Views

I have three questions:

1) The executable in release configuration says that some DLLs are not found when used in machines that do not have ifort installed. Here are the options that I am using for compilation:

ifort /nologo /debug:full /Qparallel /assume:buffered_io /Qipo /fpp /gen-interfaces /stand:f03 /warn:all /fp:precise /Qfp-speculation=off /module:&quotRelease\\" /object:&quotRelease\\" /traceback /check:all /libs:static /threads /c /QaxTPNS /Qvc9 /Qlocation,link,C:Program FilesMicrosoft Visual Studio 9.0VCbin"

When I turn off /Qparallel and /Qipo and run in debug the executable runs. The DLL 'libiomp5md.dll' is not found on some machines. Are there any special flags to make the parallelization /IPO work without additional DLLs?

2) Why am I getting the following warning?

ifort: command line warning #10212: /fp:precise evaluates in source precision with Fortran.

I thought /fp:precise floating point model is compatible with /Qfp-speculation=off. I want to compile such that the results can be repeated (reproduced) on multiple hardware / platforms with the same double precision accuracy in the code.

integer, parameter, public :: dp_k = selected_real_kind(2*precision(1.0_sp_k))

3) There used to an Intel page and discussion about multiple CPU displatch flags (/QaxTPNS). I can not find it now. Is the above flag still good to make sure that the execulatble is optimized for all common CPU configurations? Whats the suggestion for the current version 11.1.054?

Your help is appreciated.

0 Kudos
3 Replies
Steven_L_Intel1
Employee
557 Views

1) /Qopenmp-link:static You will probably have to add this under Additional Options

2) In Intel C++, precise and source mean slightly different things, but in Intel Fortran they mean the same thing. Use /fp:source to avoid the warning.

3) As far as I know, you are limited to three code paths with /Qax - generic and two specific. There's certainly no point in specifying P and N, which are variants on SSE2, as that's the default. My advice would be to use /QaxSSE4.1 to get code that takes advantage of Core 2 processors. For more information, see here.

0 Kudos
rasa
Beginner
557 Views
Steve. Thanks for your quick and informative reply. That answers my 123.
0 Kudos
TimP
Honored Contributor III
557 Views

1) openmp-link:static links the static library in place of libiomp5md.

There shouldn't be any direct relationship between /Qipo and the libraries used.

3) Current Core 2 CPUs (but not early ones) would take advantage of the SSE4.1 option, and it will be fairly good for Core I as well. Any deviation from Steve's recommendation would apply only in specific circumstances. If your application depends strongly on complex arithmetic and performance on older SSE3-capable CPUs were important, you might want to include /arch:SSE3 in the options, but it seems that would prevent running on CPUs which don't support SSE3.

If you want to take advantage of SSE4.1 but also run on 32-bit CPUs which don't support SSE2, it seems you require /QaxSSE4.1 /arch:IA32

0 Kudos
Reply