The paper entitled “The NAS Parallel Benchmarks for evaluating C++ parallel programming frameworks on shared-memory architectures” was published in the Journal of Future Generation Computer Systems (FGCS). This work was realized by GMAP Master’s student Júnior Löff, advised by Dr. Luiz Gustavo Fernandes, and co-advised by Dr. Dalvan Griebler. In addition, it had the collaboration of GMAP master’s student Gabriell Araujo, Dr. Gabriele Mencagli, Dr.MassimoTorquati, and Dr. Marco Danelutto from the University of Pisa.
The following is the abstract of the article:
The NAS Parallel Benchmarks (NPB), originally implemented mostly in Fortran, is a consolidated suite containing several benchmarks extracted from Computational Fluid Dynamics (CFD) models. The benchmark suite has important characteristics such as intensive memory communications, complex data dependencies, different memory access patterns, and hardware components/sub-systems overload. Parallel programming APIs, libraries, and frameworks that are written in C++ as well as new optimizations and parallel processing techniques can benefit if NPB is made fully available in this programming language. In this paper we present NPB-CPP, a fully C++ translated version of NPB consisting of all the NPB kernels and pseudo-applications developed using OpenMP, Intel TBB, and FastFlow parallel frameworks for multicores. The design of NPB-CPP leverages the Structured Parallel Programming methodology (essentially based on parallel design patterns). We show the structure of each benchmark application in terms of composition of few patterns (notably Map and MapReduce constructs) provided by the selected C++ frameworks. The experimental evaluation shows the accuracy of NPB-CPP with respect to the original NPB source code. Furthermore, we carefully evaluate the parallel performance on three multi-core systems (Intel, IBM Power, and AMD) with different C++ compilers (gcc, icc, and clang) by discussing the performance differences in order to give to the researchers useful insights to choose the best parallel programming framework for a given type of problem.Júnior Löff et al.
More information about FGCS can be found on the official website.
By: Gabriella Andrade.