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
big_endian. The appropriate UIO modules are
big_endiancase. The compiler is called with
Important switches are:
-Vaxlib: Link proper library to make the machine understand e.g.
fpp: Activate the preprocessor (silently).
-O3: General optimization flag.
-tpp6 -xK: Optimization especially for Pentium III (and Athlon, includes SSE vector commands).
-tpp7 -xW: Optimization especially for Pentium IV (includes SSE2 vector commands).
-xP: Optimization especially for Core 2 Duo and simular architectures.
-ip: Optimization: activate interprocedural optimization within each source file. This enables inlining.
-DMSrad_raytas=2: Optimization: choose non-default version of loop in
SUBROUTINE raytasin file
MSrad3D.F90. See Sect. 3.6.
-Drhd_shortrad_dir1_l01=1: Optimization: Transpose arrays and use routine
rhd_shortrad_dir3for rays in x1 direction. See Sect. 3.6.
-openmp: Parallelization: OpenMP directives are activated. Note that the for compiler versions before 9.0 the UIO routines should be compiled without OpenMP support (even if they do not contain any OpenMP directives themselves).
-i_dynamic: Helpful against ``undefined reference to `
-r8 -fpconstant: Useful to force compilation in double precision (see 3.7.3).
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
see Sect. 5.3.7 and
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):
In some cases it might be helpful to set
when encountering problems with OpenMP.