Note: The options are for the
aocc.py file included in this repository and are
not the same as those for the repository at CSCS.
Note about the compilers¶
From the user guides, introduction section:
- AOCC 2.1 is based on LLVM 9.0 release (llvm.org, 19th Sep 2019) with improved Flang Fortran frond-end added with F2008 features and bug fixes.
- AOCC 2.2 is based on LLVM 10.0 release (llvm.org, 24th Mar 2020) with improved Flang Fortran front-end added with F2008 features and bug fixes.
- AOCC 3.0 is based on LLVM 12 trunk (llvm.org, 22nd Oct 2020) with Flang as a Fortran front-end added with F2008, Real 128 features. AOCC 3.0 also includes the support for OpenMP Debugging Interface (OMPD) APIs.
- AOCC 3.1 release is based on LLVM 12 release (llvm.org, 14th April 2021) with Flang as a Fortran front-end added with F2008 and Real 128 features. It is an incremental version of AOCC 3.0 that includes bug fixes and a support for compiler directives in Flang.
- AOCC 3.2 AOCC 3.2 is based on the LLVMTM 13 compiler infrastructure (llvm.org, 4 October 2021) and includes bug fixes and support for other new features.
The cpeAMD toolchain supports the common toolchain options, the additional AOCC flags and some additional Cray-specific flags, two of which are really just redefinitions of standard compiler flags.
The following options map on AOCC-dpecific compiler flags can be similar to similar options in the cpeGNU toolchain:
|Enable Link Time Optimization
|Generate dynamically linked executable (default: True)
|Alternate Cray-MPICH library for MT support (default: False)
mpich-mt: Directs the driver to link in an alternate version of the Cray-MPICH library which provides fine-grained multi-threading support to applications that perform MPI operations within threaded regions. (default: False)
Two further options trigger different compiler flags than in the GCC toolchain:
optarch but have otherwise the same meaning.
Mapping of options onto compiler flags¶
Compiler optimization level¶
The common options translate into:
|-O2 -fvectorize -fslp-vectorize
Other optimization-related options (and see also parallelism below):
Floating point precision¶
The decision of our mapping is based partly on information from Cray and partly on looking through various manuals on Clang.
strict: We simply stick to
-ffp-model=strict. This automatically disables all of the
-ffast-mathenablements so there is no need to add
-fno-fast-math. Note that at this level, fused multiply adds are disabled.
precise: We stick to
- Default level: Currently the same as
loose: Set to
-ffp-model=fastbut try to turn on again a few safeguards:
veryloose: Set to
Note: Very recnet versions of clang add
may be interesting to add to
loose but is not
yet supported by AOCC 2.2.
|-ffp-model=fast -fhonor-infinities -fhonor-nans -fsigned-zeros
Other floating-point optimisation and accuracy-related flags:
|Not supported in clang/flang
Common parallelism-related options¶
|False: -fno-vectorize -fno-slp-vectorize
|True: -fvectorize -fslp-vectorize
|-ftree-switch-conversion -floop-interchange -floop-strip-mine -floop-block
|No compiler flags
Code generation and linking options¶
|No flag as this is currently the only mode supported
|Pack the linker options as comma separated list (default: False)
|Use RPATH wrappers when --rpath is enabled in EasyBuild configuration (default: True)