OpenMP
From HP-SEE Wiki
Contents |
Information
- Web site: http://openmp.org/
- Described version: 3.0
- Licensing: BSD license
- User documentation: http://www.openmp.org/mp-documents/spec30.pdf
- Download: http://openmp.org/wp/openmp-compilers/
- Source code: N/A
Authors/Maintainers
Summary
The OpenMP Application Program Interface (API) supports multi-platform shared- memory parallel programming in C/C++ and Fortran on all architectures, including Unix platforms and Windows NT platforms. Jointly defined by a group of major computer hardware and software vendors, OpenMP is a portable, scalable model that gives shared-memory parallel programmers a simple and flexible interface for developing parallel applications for platforms ranging from the desktop to the supercomputer. OpenMP is an implementation of multithreading, a method of parallelization whereby the master "thread" (a series of instructions executed consecutively) "forks" a specified number of slave "threads" and a task is divided among them. The threads then run concurrently, with the runtime environment allocating threads to different processors. The section of code that is meant to run in parallel is marked accordingly, with a preprocessor directive that will cause the threads to form before the section is executed. Each thread has an "id" attached to it which can be obtained using a function (called omp_get_thread_num()). The thread id is an integer, and the master thread has an id of "0". After the execution of the parallelized code, the threads "join" back into the master thread, which continues onward to the end of the program. By default, each thread executes the parallelized section of code independently. "Work- sharing constructs" can be used to divide a task among the threads so that each thread executes its allocated part of the code. Both task parallelism and data parallelism can be achieved using OpenMP in this way. The runtime environment allocates threads to processors depending on usage, machine load and other factors. The number of threads can be assigned by the runtime environment based on environment variables or in code using functions. The OpenMP functions are included in a header file labelled "omp.h" in C/C++.
Features
- Listed features
Architectural/Functional Overview
- high level design info, how it works, performance - may be a link, or several links
Usage Overview
- http://openmp.org/examples/Using-OpenMP-Examples-Distr.zip
- http://www.llnl.gov/computing/tutorials/openMP
Dependacies
- list of all relevant dependencies on other libraries
HP-SEE Applications
- EagleEye (Feature Extraction from Satellite Images Using a Hybrid Computing Architecture)
- HP-SEE (Design of fullerene and metal-diothiolene-based materials for photonic applications)
- GIM (Geophysical Inversion Modeling)
- HMLQCD (Hadron Masses from Lattice QCD)
- NUQG (Numerical study of ultra-cold quantum gases)
- HC-MD-QM-CS (Hybrid Classical/Quantum Molecular Dynamics Quantum Mechanical Computer Simulation of Condensed Phases)
- GENETATOMIC (Genetic algorithms in atomic collisions)
- AMRCM (Parallel algorithm and program for the resolving continuum mechanics equations using Adaptive Mesh Refinement)
- DNAMA (DNA Multicore Analysis)
- MDSCS (Molecular Dynamics Study of Complex systems)
Resource Centers
- BG, BG
- HPCG, BG
- IFIN_BC, RO
- IFIN_Bio, RO
- InfraGRID, RO
- ISS_GPU, RO
- NCIT-Cluster, RO
- NIIFI SC, HU
- PARADOX, RS
Usage by other projects and communities
- If any
Recommendations for Configuration and Usage
Please describe here any common settings, configurations or conventions that would make the usage of this resource (library or tool) more interoperable or scalable across the HP-SEE resources. These recommendations should include anything that is related to the resource and is agreed upon by administrators and users, or across sites and applications. These recommendations should emerge from questions or discussions opened by site administrators or application developers, at any stage, including installation, development, usage, or adaptation for another HPC centre.
Provided descriptions should describe general or site specific aspects of resource installation, configuration and usage, or describe the guidelines or convention for deploying or using the resource within the local (user/site) or temporary environment (job). Examples are:
- Common configuration settings of execution environment
- Filesystem path or local access string
- Environment variables to be set or used by applications
- Options (e.g. additional modules) that are needed or required by applications and should be present
- Minimum quantitative values (e.g. quotas) offered by the site
- Location and format of some configuration or usage hint instructing applications on proper use of the resource or site specific policy
- Key installation or configuration settings that should be set to a common value, or locally tweaked by local site admins
- Conventions for application or job bound installation and usage of the resource