Scientific Computing and Data / High Performance Computing / Documentation / Compiling
Documentation
Software and Packages
- Software and Applications
- Modules
- Compiling
- Schrodinger Suite
- MATLAB, Simulink and MATLAB Distributed Compute Server
- Singularity
- Jupyter Notebook
Queues and Resources
- LSF Queues And Policies
- GPGPU
- GPU Etiquette
- Access TSM with GUI
- Access TSM with Command Line
- Checkpoint Restart
- Disaster Recovery Plan
Job Submission
Directories
Rstudio
Services
Compiling
The programming environment is centered on the compiler. Minerva supports C/C++ and Fortran compilers from INTEL, and GNU Compiler Collection (GCC). Only one compiler is available at a time to avoid ambiguity. Compiling code for parallel execution on Minerva must use the proper implementation of MPI and link against the proper libraries. The MPI implementation currently supported by Minerva is Open MPI, which is descended from LAM. In particular, note that Open MPI is not part of the MPICH family of MPI implementations.
For each supported compiler suite, a version of Open MPI that is compatible with that compiler is loaded by using the module command. For example, to use the GCC compilers with Open MPI:
module load openmpi
To use the INTEL compilers with Open MPI:
module load openmpi/1.6.5-intel-parallel-s-xe-2013-sp1-u1
When compiling non-MPI programs, modules for compilers without MPI support can be loaded instead:
module load gcc
Compiler Names
Compiler “wrappers” provided by Open MPI supply the correct compiler and linker flags for MPI applications. For non-MPI codes the “native” compilers may be used directly.
Language | Open MPI | Native GCC | Native Intel |
Fortran | mpif77, mpif90 | gfortran | ifort |
C/C++ | mpicc | gcc | icc |
Basic Examples
Serial Code
gfortran -O2 -o test test.f
MPI
mpicc -O2 -o MPItest MPItest.c
OpenMP
icc -O2 -openmp -o OpenMPtest OpenMPtest.c
Available compiler options depend on the underlying native compiler; complete descriptions are available via the “man” command.