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.