OpenMP is widely accepted as a de facto standard for shared memory parallel programming in Fortran, C and C++. nested parallelization has been included in the first OpenMP specification, but it took a few years until ...
详细信息
OpenMP is widely accepted as a de facto standard for shared memory parallel programming in Fortran, C and C++. nested parallelization has been included in the first OpenMP specification, but it took a few years until the first commercially available compilers supported this optional part of the specification. We employed nested parallelization using OpenMP in three production codes: a C++ code for content-based image retrieval, a C++ code for the computation of critical points in multi-block CFD datasets, and a multi-block Navier-Stokes solver written in Fortran90. In this paper we discuss the opportunities as well as the deficiencies of the nested parallelization support in OpenMP.
Multi-core processors are very common in the form of dual-core and quad-core processors. To take advantage of multiple cores, parallel programs are written. Existing legacy applications are sequential and runs on mult...
详细信息
ISBN:
(纸本)9781509019878
Multi-core processors are very common in the form of dual-core and quad-core processors. To take advantage of multiple cores, parallel programs are written. Existing legacy applications are sequential and runs on multiple cores utilizing only one core. Such applications should be either rewritten or parallelized to make efficient use of multiple cores. Manual parallelization requires huge efforts in terms of time and money and hence there is a need for automatic parallelization. Automatic Code Parallelizer using OpenMP automates the insertion of compiler directives to facilitate parallel processing on multi-core shared memory machines. The proposed tool converts an input sequential C source code into a multi-threaded parallel C source code. The tool supports multi-level parallelization with the generation of nested OpenMP constructs. The proposed scheme statically decomposes a sequential C program into coarse grain tasks, analyze dependency among tasks and generates OpenMP parallel code. The focus is on coarse-grained task parallelism to improve performance beyond the limits of loop parallelism. Due to the broad support of OpenMP standard, the generated OpenMP codes can run on a wide range of SMP machines and may result in a performance improvement.
Approximate Bayesian computation (ABC) provides us with a way to infer parameters of models, for which the likelihood function is not available, from an observation. Using ABC, which depends on many simulations from t...
详细信息
Approximate Bayesian computation (ABC) provides us with a way to infer parameters of models, for which the likelihood function is not available, from an observation. Using ABC, which depends on many simulations from the considered model, we develop an inferential framework to learn parameters of a stochastic numerical simulator of volcanic eruption. Moreover, the model itself is parallelized using Message Passing Interface (MPI). Thus, we develop a nested-parallelized MPI communicator to handle the expensive numerical model with ABC algorithms. ABC usually relies on summary statistics of the data in order to measure the discrepancy model output and observation. However, informative summary statistics cannot be found for the considered model. We therefore develop a technique to learn a distance between model outputs based on deep metric-learning. We use this framework to learn the plume characteristics (eg. initial plume velocity) of the volcanic eruption from the tephra deposits collected by field-work associated with the 2450 BP Pululagua (Ecuador) volcanic eruption.
暂无评论