Condo Cluster: Recommended compiler options

Use of the Intel Fortran, C, and C++ compilers (icc, icpc, ifort) is recommended for all applications. Detailed information about these compilers can be found by issuing 'man icc' and 'man ifort'.

Recommended compiler options for High Performance

The default compiler options include such optimizations as -O2, -m64, -msse2. However, the use of the following compiler option will usually provide better performance of your program.


This option in its turn sets the following options:

 -ipo, -O3, -no-prec-div, -static, -fp-model fast=2, and -xHost
The -xHost compiler option tells the compiler to generate instructions for the highest instruction set available on the compilation host processor.

The -ipo option turns on inter-procedural optimization. To get the full benefit of this optimization, you must compile all program files at the same time. For example,

   mpiifort -fast -msse3 program1.f90 program2.f90 program3.f90

Compiling for the fat and huge compute nodes

While the head node and all regular compute nodes in the cluster have Intel(R) Xeon(R) CPU E5-2640 v3 processors, the fat and huge nodes have Intel(R) Xeon(R) v2 processors. One of the differences is the level of the supported Instruction Set Extensions. On the regular compute nodes AVX2 is supported, but on the special nodes only AVX is supported. Thus when compiling on the head node with "-fast" compiler option, the AVX2 instructions will be generated which are not supported on the fat and huge nodes. For this reason, when compiling on the head node for the fat/huge nodes, one should add "-xAVX" option AFTER the "-fast" option.

Recommended compiler options for Debugging

The '-check all' ifort compiler option turns on checks for various conditions at run time. Intel C/C++ compiler also supports a number of -check* options. For details issue "man icc".

The -w3 Intel C/C++ compiler option enables diagnostics for remarks, warnings, and errors. Additional warnings are also enabled. The -warn ifort option enables all warning messages except errors and stderrors.