next up previous contents index
Next: 3.7.12 Linux: PathScale Compiler Up: 3.7 Optimization, Compiler Switches Previous: 3.7.10 Linux: PGI Compiler   Contents   Index


3.7.11 Linux: Intel Compiler

With Version 7.0 and 7.1 of the Intel compiler CO5BOLD compiled (with tricks, see below). Version 8.0 still caused trouble. With version 9.1 everything compiles smoothly.

The native format on Intel machines is little_endian. With

export F_UFMTENDIAN=big
(to be set at runtime after compilation before running CO5BOLD) the default can be changed to big_endian. The appropriate UIO modules are uio_mac_intel_module.f90 in the little_endian case and uio_mac_sun_module.f90 in the big_endian case. The compiler is called with ifc.

Important switches are:

On Macintosh machines the typical optimization flags are -O3 -no-prec-div -fno-alias -ip. A big problem is the tiny stack size on those machines: large arrays taken from the stack should be avoided. For the SHORTrad module, this can be achieved by setting -Drhd_shortrad_arrays_l01=2 during compilation. In addition, relatively small chunk sizes should be specified in rhd.par, see Sect. 5.3.7 and Sect. 5.3.8.

Using the Intel compiler (before version 9.1) there was a problem with the UIO modules when OpenMP is activated. This was a bit weird because the UIO modules do not contain any OpenMP directives. However, this means that OpenMP can be safely deactivated for these modules. A proposed compiling sequence is (all modules activated):

export F90_LHDRAD=1
export F90_MSRAD=1
export F90_SHORTRAD=1
export F90_DUST=1
export F90_MHD=1

export F90_PARALLEL=scalar
./configure
make UIO

export F90_PARALLEL=openmp
./configure
make

In some cases it might be helpful to set

export LD_ASSUME_KERNEL=2.4.19

when encountering problems with OpenMP.


next up previous contents index
Next: 3.7.12 Linux: PathScale Compiler Up: 3.7 Optimization, Compiler Switches Previous: 3.7.10 Linux: PGI Compiler   Contents   Index