Practical parallelization of scientific applications with OpenMP, OpenACC and MPI

被引:26
作者
Aldinucci, Marco [1 ,2 ]
Cesare, Valentina [3 ]
Colonnelli, Iacopo [1 ,2 ]
Martinelli, Alberto Riccardo [1 ,2 ]
Mittone, Gianluca [1 ,2 ]
Cantalupo, Barbara [1 ,2 ]
Cavazzoni, Carlo [4 ]
Drocco, Maurizio [5 ]
机构
[1] Univ Torino, Comp Sci Dept, Turin, Italy
[2] CINI, HPC Key Technol & Tools Natl Lab, Venice, Italy
[3] INAF Osservatorio Astrofis Catania, Catania, Italy
[4] Leonardo SpA, Rome, Italy
[5] IBM Res, TJ Watson Lab, Yorktown Hts, NY USA
基金
欧盟地平线“2020”;
关键词
Loop parallelism; CUDA; OpenMP; OpenACC; MPI;
D O I
10.1016/j.jpdc.2021.05.017
中图分类号
TP301 [理论、方法];
学科分类号
081202 ;
摘要
This work aims at distilling a systematic methodology to modernize existing sequential scientific codes with a little re-designing effort, turning an old codebase into modern code, i.e., parallel and robust code. We propose a semi-automatic methodology to parallelize scientific applications designed with a purely sequential programming mindset, possibly using global variables, aliasing, random number generators, and stateful functions. We demonstrate that the same methodology works for the parallelization in the shared memory model (via OpenMP), message passing model (via MPI), and General Purpose Computing on GPU model (via OpenACC). The method is demonstrated parallelizing four real-world sequential codes in the domain of physics and material science. The methodology itself has been distilled in collaboration with MSc students of the Parallel Computing course at the University of Torino, that applied it for the first time to the project works that they presented for the final exam of the course. Every year the course hosts some special lectures from industry representatives, who present how they use parallel computing and offer codes to be parallelized. (C) 2021 Elsevier Inc. All rights reserved.
引用
收藏
页码:13 / 29
页数:17
相关论文
共 58 条
[1]   A parallel pattern for iterative stencil plus reduce [J].
Aldinucci, M. ;
Danelutto, M. ;
Drocco, M. ;
Kilpatrick, P. ;
Misale, C. ;
Pezzi, G. Peretti ;
Torquati, M. .
JOURNAL OF SUPERCOMPUTING, 2018, 74 (11) :5690-5705
[2]  
Aldinucci M., 2017, Journal of Physics: Conference Series, V898, DOI 10.1088/1742-6596/898/8/082039
[3]  
Aldinucci M., 1999, P PDCS INT C PAR DIS, P955
[4]   Behavioural skeletons for component autonomic management on grids [J].
Aldinucci, Marco ;
Campa, Sonia ;
Danelutto, Marco ;
Dazzi, Patrizio ;
Laforenza, Domenico ;
Tonellotto, Nicola ;
Kilpatrick, Peter .
MAKING GRIDS WORK, 2008, :3-+
[5]   HPC4AI, an AI-on-demand federated platform endeavour [J].
Aldinucci, Marco ;
Rabellino, Sergio ;
Pironti, Marco ;
Spiga, Filippo ;
Viviani, Paolo ;
Drocco, Maurizio ;
Guerzoni, Marco ;
Boella, Guido ;
Mellia, Marco ;
Margara, Paolo ;
Drago, Idilio ;
Marturano, Roberto ;
Marchetto, Guido ;
Piccolo, Elio ;
Bagnasco, Stefano ;
Lusso, Stefano ;
Vallero, Sara ;
Attardi, Giuseppe ;
Barchiesi, Alex ;
Colla, Alberto ;
Galeazzi, Fulvio .
2018 ACM INTERNATIONAL CONFERENCE ON COMPUTING FRONTIERS, 2018, :279-286
[6]  
Aldinucci M, 2011, LECT NOTES COMPUT SC, V6853, P170, DOI 10.1007/978-3-642-23397-5_17
[7]   Programming languages for data-Intensive HPC applications: A systematic mapping study [J].
Amaral, Vasco ;
Norberto, Beatriz ;
Goulao, Miguel ;
Aldinucci, Marco ;
Benkner, Siegfried ;
Bracciali, Andrea ;
Carreira, Paulo ;
Celms, Edgars ;
Correia, Luis ;
Grelck, Clemens ;
Karatza, Helen ;
Kessler, Christoph ;
Kilpatrick, Peter ;
Martiniano, Hugo ;
Mavridis, Ilias ;
Pllana, Sabri ;
Respicio, Ana ;
Simao, Jose ;
Veiga, Luis ;
Visa, Ari .
PARALLEL COMPUTING, 2020, 91
[8]  
Amdahl G. M., 1967, AFIPS CONF P, P483
[9]  
[Anonymous], 2017, FASTFLOW HIGH LEVEL
[10]  
[Anonymous], 1993, Loop transformations for restructuring compilers: The foundations