The following is a list of C, C++ and Fortran compilers available on the CHPC cluster:
icc
(for C and C++)ifort
gcc
g++
gfortran
The module command provides a convenient mechanism for managing which environment variables are set in your shell session. The following is a list of the basic usage of the module command:
module avail
module add <module>
module list
module remove <module>
or
module rm <module>
#include <stdio.h> int main() { printf("Hello World"); return 0; }
#include <stdlib.h> #include <stdio.h> #include <mpi.h> int main(argc, argv) int argc; char *argv[]; { int rank, size, len; char name[MPI_MAX_PROCESSOR_NAME]; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Get_processor_name(name, &len); printf ("Hello world! I'm %d of %d on %s\n", rank, size, name); MPI_Finalize(); exit(0); }
PROGRAM Hello PRINT *, "Hello World" END PROGRAM Hello
The following code snippets demonstrate how to compile the above code examples use the GNU compiler suite:
gcc -o hello hello.c
mpicc -o hello hello.c
gfortran -o hello hello.f90
The above compilers include support for OpenMP. To compile an OpenMP code add the -fopenmp
option. For example:
gcc -o mp_hello -fopenmp mp_hello.c
code from https://computing.llnl.gov/tutorials/openMP/samples/C/omp_hello.c
The following code snippets demonstrate how to compile OpenMP examples with the Intel compilers:
icc -openmp omp_hello.c -o hello
ifort -openmp omp_hello.f -o hello
An example of compiling and executing a simple Java program:
public class MyFirstJavaProgram { public static void main(String []args) { System.out.println("Hello World"); // prints Hello World } }
To compile this, make sure you have the java module loaded, then:
javac MyFirstJavaProgram.java
A bytecode-compiled file should be created, named MyFirstJavaProgram.class
To execute it, run as follows:
java MyFirstJavaProgram
MPI (Message Passing Interface – http://www.open-mpi.org) is provided using the OpenMPI libraries. To compile MPI code use the mpicc
or mpif90
compilers.
To run an MPI job see the man pages for PBS Pro. On the login node, type “man qsub”. To obtain an interactive node,
use qsub -I
The login node prevents long-running processes therefore an interactive node is useful for compilations and builds. To test your code, load the module you want to use first, and then compile your code with it:
$mpicc -o bin/test src/hello_world.c
To test it:
mpirun -np 8 bin/test
You should see something similar to:
Hello world! I'm 7 of 8 on cnode-2-6 Hello world! I'm 6 of 8 on cnode-2-6 Hello world! I'm 5 of 8 on cnode-2-6 Hello world! I'm 1 of 8 on cnode-2-6 Hello world! I'm 0 of 8 on cnode-2-6 Hello world! I'm 3 of 8 on cnode-2-6 Hello world! I'm 2 of 8 on cnode-2-6 Hello world! I'm 4 of 8 on cnode-2-6