Overview
The intention is that programs be compiled on the login nodes and executed on the compute nodes. Because the compute nodes and login nodes have the same operating systems, binaries created for compute nodes will run on the login node. Each programming environment contains the full set of compatible compilers and libraries.
Using MKL
The Intel Math Kernel Library (MKL) is available on Cluster353 for the Intel compiler, providing routines and functions that perform a wide variety of operations on vectors and matrices including sparse matrices. The library also includes fast Fourier transform (FFT) functions, vector mathematical and vector statistical functions with Fortran and C interfaces, and ScaLAPACK.
Using OpenMP
Adding OpenMP threading to an MPI code is an efficient way to run on multicore processors. Since OpenMP uses a global shared address space within each node, using OpenMP may reduce memory usage while adding parallelism. It can also reduce time spent in MPI communications. A collection of OpenMP resources, tutorials, etc can be found at OpenMP Reources. An interesting advantage of OpenMP is that you can add it incrementally to an existing code.
Compiling with OpenMP
OpenMP is supported in all three programming environments available on Edison; however, each compiler suite has a different syntax for enabling OpenMP.
Compiler Suite
Intel Compilers
GNU Compilers
Command line option for OpenMP
-openmp
-fopenmp