Static Loop Parallelization Decision Using Template Metaprogramming
Autor: | Bruno Bachelet, Alexis Pereda, Claude Mazel, David R.C. Hill |
---|---|
Přispěvatelé: | Laboratoire d'Informatique, de Modélisation et d'Optimisation des Systèmes (LIMOS), Ecole Nationale Supérieure des Mines de St Etienne (ENSM ST-ETIENNE)-Université Clermont Auvergne [2017-2020] (UCA [2017-2020])-Centre National de la Recherche Scientifique (CNRS), Ecole Nationale Supérieure des Mines de St Etienne-Centre National de la Recherche Scientifique (CNRS)-Université Clermont Auvergne [2017-2020] (UCA [2017-2020]), Ecole Nationale Supérieure des Mines de St Etienne-Université Clermont Auvergne [2017-2020] (UCA [2017-2020])-Centre National de la Recherche Scientifique (CNRS) |
Rok vydání: | 2018 |
Předmět: |
010302 applied physics
Sequence [INFO.INFO-PL]Computer Science [cs]/Programming Languages [cs.PL] Computer science 02 engineering and technology Parallel computing C++ expression templates 01 natural sciences Metaprogramming parallelization decision 020202 computer hardware & architecture Expression templates Loop (topology) Variable (computer science) code parallelization Parallel processing (DSP implementation) 0103 physical sciences 0202 electrical engineering electronic engineering information engineering Code (cryptography) metaprogramming Template metaprogramming [INFO.INFO-DC]Computer Science [cs]/Distributed Parallel and Cluster Computing [cs.DC] |
Zdroj: | HPCS IEEE International Conference on High Performance Computing and Simulation (HPCS) IEEE International Conference on High Performance Computing and Simulation (HPCS), Jul 2018, Orléans, France. pp.1015-1021, ⟨10.1109/HPCS.2018.00159⟩ 2018 International Conference on High Performance Computing & Simulation (HPCS) |
DOI: | 10.1109/hpcs.2018.00159 |
Popis: | International audience; This article proposes to use C++ template metaprogramming techniques to decide at compile-time which parts of a code sequence in a loop can be parallelized. The approach focuses on characterizing the way a variable is accessed in a loop (reading or writing), first to decide how the loop should be split to enable the analysis for parallelization on each part, and then to decide if the iterations inside each loop are independentso that they can be run in parallel. The conditions that enable the parallelization of a loop are first explained to justify the proposed decision algorithm exposed. Then, a C++ library-based solution is presented that uses expression templates to get the relevant information necessary for the parallelization decision of a loop, and metaprograms to decide whether to parallelize the loop and generate a parallel code. |
Databáze: | OpenAIRE |
Externí odkaz: |