Miscellaneous topics¶
Using the compilers without the wrappers¶
| Compiler module | C compiler | C++ compiler | Fortran fixed format | Fortran free format |
|---|---|---|---|---|
| cce | craycc, clang |
crayCC, craycxx, clang++ |
crayftn |
crayftn |
| gcc | gcc |
g++ |
gfortran |
gfortran |
| gcc-native | gcc-12, etc. |
g++-12, etc. |
gfortran-12, etc. |
gfortran-12, etc. |
| aocc | clang |
clang++ |
flang |
flang |
| rocm | amdclang |
amdclang++ |
amdflang |
amdflang |
Remarks
-
The Cray clang compilers need to be pointed to the version of gcc to use using the
--gcc-toolchain=<value>option. The wrapper adds something like--gcc-toolchain=/opt/cray/pe/gcc/8.1.0/snos. Otherwise the compile will fail to find a suitable set of include files.TODO: Test this.
-
A good trick to figure out which options the PE wrappers add is to use the
-craype-verboseflag on the command line of the wrappers.
Compiler versions¶
| CPE | cce | gcc | aocc | amd |
|---|---|---|---|---|
| 21.08 | 12.0.2 | gcc/10.3.0 |
3.0.0 | 4.5.2 |
| 21.12 | 13.0.0 | gcc/11.2.0 |
3.1.0 | 4.5.2 |
| 22.08 | 14.0.2 | gcc/11.2.0 |
3.2.0 | 5.0.2 |
| 22.12 | 15.0.0 | gcc/11.2.0 |
3.2.0 | 5.2.3 |
| 23.03 | 15.0.1 | gcc/11.2.0 |
3.2.0 | 5.2.3 |
| 23.09 | 16.0.1 | gcc/12.2.0 |
3.2.0 | 5.2.3 |
| 23.12 | 17.0.0 | gcc-native/12.3 |
4.1.0 | 6.0.3 |
| 24.03 | 17.0.1 | gcc-native/13.2 |
4.1.0 | 6.0.3 |
Finding the include files etc. for hipcc when compiling other code with the Cray compiler¶
export HIPCC_COMPILE_FLAGS_APPEND="--offload-arch=gfx90a $(CC --cray-print-opts=cflags)"
export HIPCC_LINK_FLAGS_APPEND=$(CC --cray-print-opts=libs)
Compilers compared¶
- GNU Fortran, old and new flang:
- Page in the Linaro blog (August 24, 2023) but the results of the benchmarks are on Arm.