OpenMP

OpenMP can be used to get your models, simulations and analyses to go faster, either on a multicore desktop, a node of a supercomputing cluster or on an accelerator such as the Xeon Phi or a GPU.

OpenMP is a thread-based standard for parallelism on a shared memory architecture. Advances to the standard are discussed and set out by the OpenMP Architectural Review Board and available on the official OpenMP web site. The latest standard is 4.5. All major compilers support at least version 3.0.

Further discussion on what's new in each version will follow shortly, but the key information is that OpenMP 4.0 introduced some support for accelerators (such as GPUs and Xeon Phi) and 4.5 extended this support.

The main alternatives to using OpenMP are

  • OpenACC - similar directives-based approach for running code on accelerators
  • CUDA and OpenCL - specific run time libraries and language extenstions for running on accelerators. CUDA is specific to the GPUs produced by NVIDIA. OpenCL runs on all GPUs and CPUs (where supported)
  • MPI - allows processes to be distributed across cores, potentially on different nodes. The main player for using more than one compute node.

OpenMP Resources