Shaheen III#
Users can benefit from many software packages and scientific libraries available as modules. Users can also compile their source code using various compiler toolchains in the Cray Programming Environment.
Environment Modules#
Before requesting the installation of new packages or libraries, please check if the desired package is already installed on the system.
To find the list of all the packages installed:
module avail
To find a specific package:
module avail -S name
To get information on the package usage:
module help <package-name>
module show <package-name>
To display Cray Scientific Libraries:
module avail –L
To load a module:
module load <package-name>
Compiler Toolchains#
Cray, AMD, and GCC compiler toolchains are provided through modules.
The module PrgEnv-<compiler>
is used to activate the respective toolchain.
Regardless of the underlying compiler, the user must use the compiler wrappers cc, CC, and ftn depending on the programming language as seen in the table below:
Vendor |
Programming environment |
Module |
Language |
Compiler wrapper |
Base compiler |
---|---|---|---|---|---|
Cray |
|
|
|
|
|
|
|
|
|||
|
|
|
|||
GNU |
|
|
|
|
|
|
|
|
|||
|
|
|
|||
AMD |
|
|
|
|
|
|
|
|
|||
|
|
|
|||
Intel |
|
|
|
|
|
|
|
|
|||
|
|
|
For the latest programming environment modules, the default versions are available here: Changes in the Programming Environment after October 2024 Maintenance - Recompile Your Applications
In the programming environment, the compiler wrappers do not change according to different compilers. However, one can directly call the underlying compiler under some circumstances.
The documentation (e.g., flags) for the underlying compiler can be obtained via the following command:
man <compiler>
The compiler specific flags can be directly passed to the compiler wrappers.
The default flags passed by the wrapper can be obtained via the following command:
cc -craype-verbose
The whole compiler invocation can be seen via the following command:
cc --cray-print-opts=all
PrgEnv-cray: Uses the Cray Compiling Environment (CCE) for compiling Fortran, C, and C++ code. It provides Cray-specific optimizations.
PrgEnv-gnu: Uses the standard GNU Compiler Collection (GCC) for compiling applications.
PrgEnv-aocc: Uses the AMD Optimizing C/C++ Compiler (AOCC), which is designed to deliver specific optimizations for AMD processors, focusing on enhancing performance for compute-intensive workloads.
PrgEnv-intel: Uses the standard Intel Compiler Collection for compiling applications.
PrgEnv-gnu-amd: This environment is useful when you want to utilize GCC for Fortran code but need AMD’s Clang C/C++ compiler for better optimization of C and C++ code. It is particularly helpful in situations where specific C/C++ code optimization is crucial.
PrgEnv-cray-amd: This is used when you prefer using the Cray Compiling Environment for its advanced optimization capabilities for Fortran code, but also want to leverage the AMD Clang compiler for C/C++ code. It is beneficial when working with mixed-language applications that need specific optimizations provided by both Cray and AMD.
Cray Programming Environment and Compiler Wrappers#
Cray provides PrgEnv-<compiler>
modules (e.g., PrgEnv-cray
) to load the compiler toolchains.
The PrgEnv-cray
module is loaded by default. The following command can be used to switch between compiler toolchains:
module switch PrgEnv-cray PrgEnv-gnu
The modules for different versions of the compiler can be listed and changed.
The following example shows how to change the compiler for PrgEnv-cray
:
$ module av cce
cce/16.0.1 cce/17.0.0 cce/17.0.1 cce/18.0.0(default)
$ module switch cce cce/17.0.1
MPI#
Cray MPICH is provided by default. It is also linked when the compiler wrappers cc
, CC
, and ftn
are used.