Use of toolchains is enabled by loading modules, refer to the section 'Using Modules'. Note: when a MPI module (eg openmpi-gcc, impi-intel, etc.) is loaded the appropriate compiler module is loaded by default.
Intel C/C++ and Fortran
The Intel compiler suite offers an industry-leading C compiler, C++ compiler and Fortran compiler which include optimization features and multithreading capabilities.
The default compilers on NREL's Linux HPC systems are the Intel Compiler.
GNU C/C++ and Fortran
The GNU compiler collection includes front ends for C, C++, Objective-C, Fortran, Java, Ada and Go, as well as libraries for these languages (libstdc++, libgcj, etc.). GCC was originally written as the compiler for the GNU operating system.
The GNU compilers are available on NREL Linux HPC systems.
Portland Group (PGI) C/C++ and Fortran
The PGI compiler suite is a high-performance, robust compiler required by some important applications. It is available on NREL HPC Linux systems, but not supported as a primary toolchain component.
The PGI Accelerator compilers, available on the Peregrine system, include NVIDIA GPU support for the directive-based OpenACC 1.0 programming model. The PGI Accelerator C/C++ compiler also includes full support for NVIDIA CUDA C extensions targeting multi-core CPUs as a compute device (CUDA-x86). This allows code written in CUDA for NVIDIA GPUs to run on standard CPUs such as Intel Xeon.
The PGI Accelerator Fortran compiler provides support for CUDA Fortran and OpenACC on NVIDIA GPUs.
Although Peregrine does not contain GPU accelerators, the PGI Accelerator compilers permit code development and cross-compilation for such systems.
Message-Passing Interface Libraries
The Intel MPI framework is the preferred MPI on Peregrine for high-performance computing where performance scalability over multiple nodes is a concern. The impi-intel modules create the appropriate environment to build against this MPI and utilize the resulting libraries or applications.
The OpenMPI framework is a Free and Open Source package that is commonly developed against by many programmers. We currently support this MPI package together with GCC as a toolchain. The openmpi-gcc modules create the relevant environment for building and running on Peregrine. Note that even-numbered minor releases (e.g., 1.6.X) are stable releases; odd-numbered minor releases (e.g., 1.7.X) are feature releases. Link applications against openMPI versions accordingly.
The MVAPICH MPI is designed for extreme scalability over the most modern high-performance network fabrics. As such, it comprises the foundation for our "scalable" toolchains. Both Intel and GCC compiler suites are supported.