Dual-level parallelism exploitation with OpenMP in coastal ocean circulation modeling

Two alternative dual-level parallel implementations of the Multiblock Grid Princeton Ocean Model (MGPOM) are compared in this paper. The first one combines the use of two programming paradigms: message passing with the Message Passing Interface (MPI) and shared memory with OpenMP (version called MPI...

Descripción completa

Detalles Bibliográficos
Autores: González Tallada, Marc|||0000-0002-3780-1106, Ayguadé Parra, Eduard|||0000-0002-5146-103X, Martorell Bofill, Xavier|||0000-0002-0417-3430, Labarta Mancho, Jesús José|||0000-0002-7489-4727, Luong, P V
Tipo de recurso: artículo
Fecha de publicación:2002
País:España
Institución:Universitat Politècnica de Catalunya (UPC)
Repositorio:UPCommons. Portal del coneixement obert de la UPC
Idioma:inglés
OAI Identifier:oai:upcommons.upc.edu:2117/28446
Acceso en línea:https://hdl.handle.net/2117/28446
https://dx.doi.org/10.1007/3-540-47847-7_43
Access Level:acceso abierto
Palabra clave:OpenMP
Parallel programming (Computer science)
OpenMP and MPI implementations
Multiple levels of parallelism
Multiblock grid
Coastal ocean circulation model
Programació en paral·lel (Informàtica)
Àrees temàtiques de la UPC::Informàtica::Arquitectura de computadors::Arquitectures paral·leles
Descripción
Sumario:Two alternative dual-level parallel implementations of the Multiblock Grid Princeton Ocean Model (MGPOM) are compared in this paper. The first one combines the use of two programming paradigms: message passing with the Message Passing Interface (MPI) and shared memory with OpenMP (version called MPI-OpenMP); the second uses only OpenMP (version called OpenMP-Only). MGPOM is a multiblock grid code that enables the exploitation of two levels of parallelism. The MPI-OpenMP implementation uses MPI to parallelize computations by assigning each grid block to a unique MPI process. Since not all grid blocks are of the same size, the workload between processes varies. OpenMP is used within each MPI process to improve load balance. The alternative OpenMP-Only implementation uses some extensions proposed to OpenMP that defines thread groups in order to efficiently exploit the available two levels of parallelism. These extensions are supported by a research OpenMP compiler named NanosCompiler. Performance results of the two implementations from the MGPOM code on a 20-block grid for the Arabian Gulf simulation demonstrate the efficacy of the OpenMP-Only versions of the code. The simplicity of the OpenMP implementation as well as the possibility of using and simply defining policies to dynamically change the allocation of OpenMP threads to the two levels of parallelism is the main result of this study and suggests to consider this alternative for the parallelization of future applications.