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
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:
-Vaxlib
: Link proper library to make the machine understand
e.g. call flush(6)
.
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 raytas
in file MSrad3D.F90
.
See Sect. 3.6.
-Drhd_shortrad_dir1_l01=1
: Optimization:
Transpose arrays and use routine rhd_shortrad_dir3
for 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 `__ctype_b
''' errors.
-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 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):
In some cases it might be helpful to set
when encountering problems with OpenMP.