Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
minLevel1
maxLevel2
include
outlinefalse
indent
exclude
typelist
class
printablefalse

...

Expand
titleMore information
  • Execute cc --version, CC --version, or ftn --version to check which compiler is being used.

  • With PrgEnv-intel loaded, ${MKLROOT} is set to the corresponding Intel Math Kernal Library (MKL).

  • To use Intel Classic, execute module swap intel intel-classic after loading PrgEnv-intel

  • With PrgEnv-nvhpc loaded, ${NVIDIA_PATH} is set to the corresponding NVIDIA SDK location.

  • There is PrgEnv-nvidia, but it will become deprecated soon, so it is not recommended.

  • With PrgEnv-aocc loaded, ${AOCC_PATH} is set to the corresponding AOCC location.

GPU acceleration

For building an application with GPU acceleration, users can use either PrgEnv-nvhpc, cudatoolkit/<version> or nvhpc-mixed. We recommend using PrgEnv-nvhpc for completeness.

Expand
titleMore information
  • [Feb 2024] According to the information from nvidia-smi, NVIDIA driver version on LANTA is currently525.105.17 which supports CUDA version up to 12.0.

  • Please be aware of the compatibility between CUDA and cray-mpich. For instance, CUDA 12 is supported only since cray-mpich/8.1.27.

  • For cross-compile, you may have to use nvcc -ccbin cc to compile .cu

  • You have to manually pass the respective OpenACC/OpenMP offloading flags of each compiler.

  • You may have to pass -lcudart (cudatoolkit), -L${NVIDIA_PATH}/cuda/lib64 -lcudart -lcuda (nvhpc-mixed) and possibly a few others at linking phase (or by setting them in LDFLAGS before configure).

Build target

To enable optimizations that depend on the hardware architecture of LANTA, the following modules should be loaded together with PrgEnv.

...

Module name

...

Hardware target

...

Note

...

craype-x86-milan

...

AMD EPYC Milan (x86)

...

-

...

craype-accel-nvidia80

...

NVIDIA A100

...

Load after PrgEnv-nvhpc, cudatoolkit or nvhpc-mixed

Expand
titleMore information
  • If craype-x86-milan is not loaded when using cc, CC or ftn, you may get a warning
    No supported cpu target is set, CRAY_CPU_TARGET=x86-64 will be used. Load a valid targeting module or set CRAY_CPU_TARGET

  • With the target modules loaded, -march, -mtune, -hcpu, -haccel, -tp, -gpu, ... will be automatically filled in by cc, CC, ftn. To visualize this, try cc --version -craype-verbose.

Cray optimized libraries

Most Cray optimized libraries become accessible only after loading a PrgEnv, ensuring compatibility with the selected compiler suite. Additionally, some libraries, such as NetCDF, require loading other specific libraries first. Below is the hierarchy of commonly used cray-* modules.

...

Expand
titleExample: PrgEnv-intel + NetCDF
Code Block
languagebash
module purge
module load craype-x86-milan
module load PrgEnv-intel
module load cray-hdf5-parallel
module load cray-netcdf-hdf5parallel
module list
# Without version specified, the latest version will be loaded.

CPE version

To ensure backward compatibility after a system upgrade, it is recommended to fix the Cray Programming Environment version using either cpe/<version> or cpe-cuda/<version>. Otherwise, the most recent version will be loaded by default.

Expand
titleNote: unload cpe / cpe-cuda

When unloading cpe or cpe-cuda, you will encounter,

Unloading the cpe module is insufficient to restore the system defaults.
Please run 'source /opt/cray/pe/cpe/<version>/restore_lmod_system_defaults.[csh|sh]'.

This simply means that the remaining modules are still of the cpe/<version> that you just unloaded. They are not automatically reverted back to the system default version. It is necessary to execute the above command to manually reload and restore them to the defaults.

On the other hand, if you use module purge, you can safely ignore the above message.

1.2 ThaiSC pre-built modules

For user convenience, we provide several shared modules of some widely used software and libraries. These modules were built on top of the HPE Cray Programming Environment, using the CPE toolchain.

CPE toolchain

A CPE toolchain module is a bundle of craype-x86-milan, PrgEnv-<compiler> and cpe-cuda/<version>. The module is defined as a toolchain for convenience and for use with EasyBuild, the framework used for installing most ThaiSC modules.

...

title [Feb 2024] Current CPE toolchains

...

CPE toolchain

...

Note

...

cpeGNU/23.03

...

GCC 11.2.0

...

cpeCray/23.03

...

CCE 15.0.1

...

cpeIntel/23.03

...

Deprecated and hidden. It will be removed in the future.

...

cpeIntel/23.09

...

Intel Compiler 2023.1.0

ThaiSC modules

All ThaiSC modules are located at the same module path, so there is no module hierarchy. Executing module avail on LANTA will display all available ThaiSC modules. For a more concise list, you can use module overview, then, use module whatis <name> or module help <name> to learn more about a specific module.

Users can readily use ThaiSC modules and CPE toolchains to build their applications. Some popular application software are pre-installed as well, for more information, refer to Applications usage.

Code Block
languagebash
username@lanta-xname:~> module overview ------------------------------ /lustrefs/disk/modules/easybuild/modules/all ------------------------------ ADIOS2

Code Block
languagebash
--------------------------------- /opt/cray/pe/lmod/modulefiles/core ---------------------------------
PrgEnv-aocc   (2)   cce          (3)   cray-libpals (3)   craypkg-gen   (2)   nvhpc          (2)
PrgEnv-cray   (2)   cpe-cuda     (3)   cray-libsci  (3)   cudatoolkit   (6)   nvidia         (2)
PrgEnv-gnu    (2)   cpe          (3)   cray-mrnet   (2)   gcc           (3)   papi           (3)
PrgEnv-intel  (2)   cray-R       (2)   cray-pals    (3)   gdb4hpc       (3)   perftools-base (3)
PrgEnv-nvhpc  (2)   cray-ccdb    (2)   cray-pmi     (3)   intel-classic (2)   sanitizers4hpc (2)
PrgEnv-nvidia (2)   cray-cti     (5)   cray-python  (2)   intel-oneapi  (2)   valgrind4hpc   (3)
aocc          (2)   cray-dsmml   (1)   cray-stat    (2)   intel         (2)
atp           (3)   cray-dyninst (2)   craype       (3)   iobuf         (1)

--------------------------------- /opt/cray/pe/lmod/modulefiles/craype-targets/default ----------------------------------
craype-x86-milan        (1)     craype-accel-nvidia80   (1)      ... other modules ...

GPU acceleration

For building an application with GPU acceleration, users can use either PrgEnv-nvhpc, cudatoolkit/<version> or nvhpc-mixed. We recommend using PrgEnv-nvhpc for completeness.

Expand
titleMore information
  • [Feb 2024] According to the information from nvidia-smi, NVIDIA driver version on LANTA is currently525.105.17 which supports CUDA version up to 12.0.

  • Please be aware of the compatibility between CUDA and cray-mpich. For instance, CUDA 12 is supported only since cray-mpich/8.1.27.

  • For cross-compile, you may have to use nvcc -ccbin cc to compile .cu

  • You have to manually pass the respective OpenACC/OpenMP offloading flags of each compiler.

  • You may have to pass -lcudart (cudatoolkit), -L${NVIDIA_PATH}/cuda/lib64 -lcudart -lcuda (nvhpc-mixed) and possibly a few others at linking phase (or by setting them in LDFLAGS before configure).

Build target

To enable optimizations that depend on the hardware architecture of LANTA, the following modules should be loaded together with PrgEnv.

Module name

Hardware target

Note

craype-x86-milan

AMD EPYC Milan (x86)

-

craype-accel-nvidia80

NVIDIA A100

Load after PrgEnv-nvhpc, cudatoolkit or nvhpc-mixed

Expand
titleMore information
  • If craype-x86-milan is not loaded when using cc, CC or ftn, you may get a warning
    No supported cpu target is set, CRAY_CPU_TARGET=x86-64 will be used. Load a valid targeting module or set CRAY_CPU_TARGET

  • With the target modules loaded, -march, -mtune, -hcpu, -haccel, -tp, -gpu, ... will be automatically filled in by cc, CC, ftn. To visualize this, try cc --version -craype-verbose.

Cray optimized libraries

Most Cray optimized libraries become accessible only after loading a PrgEnv, ensuring compatibility with the selected compiler suite. Additionally, some libraries, such as NetCDF, require loading other specific libraries first. Below is the hierarchy of commonly used cray-* modules.

...

Expand
titleExample: PrgEnv-intel + NetCDF
Code Block
languagebash
module purge
module load craype-x86-milan
module load PrgEnv-intel
module load cray-hdf5-parallel
module load cray-netcdf-hdf5parallel
module list
# Without version specified, the latest version will be loaded.

CPE version

To ensure backward compatibility after a system upgrade, it is recommended to fix the Cray Programming Environment version using either cpe/<version> or cpe-cuda/<version>. Otherwise, the most recent version will be loaded by default.

Expand
titleNote: unload cpe / cpe-cuda

When unloading cpe or cpe-cuda, you will encounter,

Unloading the cpe module is insufficient to restore the system defaults.
Please run 'source /opt/cray/pe/cpe/<version>/restore_lmod_system_defaults.[csh|sh]'.

This simply means that the remaining modules are still of the cpe/<version> that you just unloaded. They are not automatically reverted back to the system default version. It is necessary to execute the above command to manually reload and restore them to the defaults.

On the other hand, if you use module purge, you can safely ignore the above message.

1.2 ThaiSC pre-built modules

For user convenience, we provide several shared modules of some widely used software and libraries. These modules were built on top of the HPE Cray Programming Environment, using the CPE toolchain.

CPE toolchain

A CPE toolchain module is a bundle of craype-x86-milan, PrgEnv-<compiler> and cpe-cuda/<version>. The module is defined as a toolchain for convenience and for use with EasyBuild, the framework used for installing most ThaiSC modules.

Expand
title [Feb 2024] Current CPE toolchains

CPE toolchain

Note

cpeGNU/23.03

GCC 11.2.0

cpeCray/23.03

CCE 15.0.1

cpeIntel/23.03

Deprecated and hidden. It will be removed in the future.

cpeIntel/23.09

Intel Compiler 2023.1.0

ThaiSC modules

All ThaiSC modules are located at the same module path, so there is no module hierarchy. Executing module avail on LANTA will display all available ThaiSC modules. For a more concise list, you can use module overview, then, use module whatis <name> or module help <name> to learn more about a specific module.

Users can readily use ThaiSC modules and CPE toolchains to build their applications. Some popular application software are pre-installed as well, for more information, refer to Applications usage.

Code Block
languagebash
username@lanta-xname:~> module overview
------------------------------------- /lustrefs/disk/modules/easybuild/modules/all --------------------------------------
ADIOS2        (2)   FriBidi               (2)   MrBayes         (1)   Trimmomatic  (1)   hwloc         (1)
ATK           (2)   GATK                  (1)   NASM            (1)   UDUNITS2     (1)   intltool      (1)
Amber         (1)   GDAL                  (2)   NLopt           (2)   VASP         (3)   jbigkit       (2)
Apptainer     (1)   GEOS                  (2)   Nextflow        (2)   VCFtools     (1)   libGLU        (2)
Armadillo     (2)   GLM                   (2)   Ninja           (1)   WPS          (2)   libaec        (2)
AutoDock-vina (1)   GLib                  (2)   OSPRay          (2)   WRF          (1)   libdeflate    (2)
Autoconf      (1)   GMP                   (3)   OpenCASCADE     (2)   WRFchem      (1)   libdrm        (2)
Automake      (1)   GObject-Introspection (2)   OpenEXR         (2)   Wayland      (2)   libepoxy      (2)
Autotools     (1)   GROMACS               (2)   OpenFOAM        (2)   X11          (2)   libffi        (1)
BCFtools      (1)   GSL                   (3)   OpenJPEG        (2)   XZ           (3)   libgeotiff    (2)
BEDTools      (1)   Gaussian              (1)   OpenSSL         (1)   Xerces-C++   (1)   libglvnd      (2)
BLAST+        (1)   GenericIO             (2)   OpenTURNS       (2)   Yasm         (1)   libiconv      (2)
BLASTDB       (1)   Go                    (1)   PCRE            (1)   arpack-ng    (2)   libjpeg-turbo (3)
BWA           (1)   HDF-EOS               (2)   PCRE2           (1)   assimp       (1)   libpciaccess  (2)
BamTools      (1)   HDF                   (2)   PDAL            (1)   at-spi2-atk  (2)   libpng        (3)
Beast         (1)   HTSlib                (1)   PETSc           (2)   at-spi2-core (2)   libreadline   (2)
Bison         (1)   HYPRE                 (2)   PROJ            (2)   aws-ofi-nccl (1)   libtirpc      (2)
Blosc         (2)   HarfBuzz  EasyBuild  (1)   MAFFT       (2)   Pango (1)   Trimmomatic  (1)   libaec  (2)   beagle-lib   (1) Amber  libtool       (1)
Boost   Eigen      (14)   METIS    ICU       (2)   VASP         (3)   libdeflate  ParMETIS  (1) Apptainer     (12)   FDS  binutils      (1)   libunwind MPC    (2)
Bowtie        (1)   VCFtools Imath    (1)   libgeotiff    (1) Armadillo     (12)   ParallelIO FastQC     (1)   MPFR    bzip2        (13)   WPS   libxml2       (23)
 Bowtie2 libiconv      (1)
AutoDock-vina (1)  JasPer FortranGIS (1)   Mamba           (12)   WRF Perl         (1)   libjpeg-turbo (2)
Autoconf     cURL (1)   FreeXL     (1)   lz4  MrBayes         (13)
Brotli  WRFchem      (12)   libpciaccess Java (1) Automake      (1)   GATK       (12)   NASMPostgreSQL      (2)   cairo   (1)   XZ  (2)   minimap2      (31)
C-Blosc2  libpng    (2)   KaHIP (3) Autotools     (1)   GDAL       (12)   NextflowQuantumESPRESSO (2)    canu   (2)   Xerces-C++   (1)   libreadlinenccl   (3) BCFtools      (1)
  GEOSCFITSIO       (12)   OpenEXRLAME         (1)   aws-ofi-nccl (1)   libtirpc  (1)   RAxML-NG (1) BEDTools      (1)   GMP  cpeCray      (21)   OpenFOAMncurses        (2)
CGAL  beagle-lib   (1)   libtool  (2)   LLVM  (1) BLAST+        (1)   GROMACS    (21)   OpenJPEGSAMtools        (1)   cpeGNU  binutils     (1)   libunwind    nlohmann_json (1)
CMake  BLASTDB       (12)   GSL  LMDB      (1)   OpenSSL         (1)   SCOTCH  bzip2        (32)   libxml2  cpeIntel     (21)
BWA    numactl       (1)
CrayNVHPC  Gaussian   (1)   LibTIFF   PCRE            (12)   SDL2   cURL         (12)   lz4ecCodes      (2)   pixman  (3) BamTools      (1)
DB   Go         (12)   M4  PCRE2           (1)   canu    (1)   SLEPc  (1)   minimap2      (12)  Beast expat        (12)   HDF-EOS pkgconf   (1)   PROJ (1)
DBus          (1)   cpeCray  MAFFT    (1)   nccl          (1)   SPAdes Bison         (1)   flex HDF        (1)   tbb     ParallelIO      (1)
ESMF   cpeGNU       (12)   ncursesMETIS       (1) Boost         (42)   SQLite    HTSlib      (12)   fontconfig Perl  (2)   termcap       (1)
  cpeIntelEasyBuild     (1)   numactlMPC       (1) Bowtie        (1)   HYPRE(2)   SWIG   (1)   PostgreSQL      (13)   ecCodes freetype     (12)   pkgconf     x264  (1) Bowtie2       (1)
 Eigen ICU        (31)   MPFR  QuantumESPRESSO (2)   expat        (2)   tbb (2)   SZ       (1) C-Blosc2      (12)   Imathgettext      (1)   x265  RAxML-NG        (1)
FDS  flex         (1)   xorg-macros   (1)
CFITSIOMUMPS         (1)   JasPer     (2)   SpectrA SAMtools        (1)   gettextgit-lfs      (1)   xorg-macros zfp  (2)
FFmpeg        (2) CGAL  Mako        (1)   Java       (2)   SuiteSparse SCOTCH    (2)   googletest   (1)   git-lfs xprop     (1)   zlib (2)
FastQC        (21)  CMake Mamba        (2)   KaHIP      (1)   SPAdesSuperLU_DIST    (2)    gperf  (1)   gperftools   (1)   zfp zstd          (32)
CrayNVHPC FortranGIS    (12)   LMDB  Mesa     (1)   SQLite          (12)   groff  Tcl      (1) DB      (2)   gperftools   (12)   LibTIFFzlib    (1)   SWIG   (2)
FreeXL        (2)   hwloc  Meson      (1) ESMF          (12)   M4Tk         (1)   Tcl  (2)   groff        (12)   zstd    jbigkit      (13)
Expand
titleExample: Boost/1.81.0-cpeGNU-23.03
Code Block
languagebash
module purge
module load Boost/1.81.0-cpeGNU-23.03
echo ${CPATH}
echo ${LIBRARY_PATH}
echo ${LD_LIBRARY_PATH}

...