From the perspective of OpenMP, a node is a single process shared by many threads. MPI treats the node as many separate processes that do no share memory.
Views of a node from OpenMP and MPI codes
  • OpenMP (or pthreads) only
    • launch one process per node, just on a single node
    • have each process fork one thread (or maybe more) per core
    • share data using shared memory
    • can't share data with a different process (except maybe via file I/O)
  • MPI only
    • launch one process per core, on one node or on many
    • pass messages among processes without concern for location
    • (maybe create different communicators intra-node vs. inter-node)
    • ignore the potential for any memory to be shared
Note:

With hybrid OpenMP/MPI programming, we aim to create a blend of these two views, in which each MPI process launches multiple OpenMP threads that share local memory. Different ways of doing this will be described in the next topic, Creating Hybrid Configurations.

 
©  |   Cornell University    |   Center for Advanced Computing    |   Copyright Statement    |   Inclusivity Statement