Pure functions in C: A small keyword for automatic parallelization
journal contribution
posted on 2020-06-09, 09:18 authored by T Süß, Lars NagelLars Nagel, MA Vef, A Brinkmann, D Feld, T Soddemann© 2020, The Author(s). The need for parallel task execution has been steadily growing in recent years since manufacturers mainly improve processor performance by increasing the number of installed cores instead of scaling the processor’s frequency. To make use of this potential, an essential technique to increase the parallelism of a program is to parallelize loops. Several automatic loop nest parallelizers have been developed in the past such as PluTo. The main restriction of these tools is that the loops must be statically analyzable which, among other things, disallows function calls within the loops. In this article, we present a seemingly simple extension to the C programming language which marks functions without side-effects. These functions can then basically be ignored when the automatic parallelizer checks the parallelizability of loops. We integrated the approach into the GCC compiler toolchain and evaluated it by running several real-world applications. Our experiments show that the C extension helps to identify additional parallelization opportunities and, thus, to significantly increase the performance of applications.
Funding
German Ministry for Education and Research (BMBF) under project Grant 01|H13004A (FAST)
German Research Foundation (DFG) through the German Priority Programme 1648 “Software for Exascale Computing” (SPPEXA)
ADA-FS project
Projekt DEAL
History
School
- Science
Department
- Computer Science
Published in
International Journal of Parallel ProgrammingVolume
49Pages
1–24Publisher
SpringerVersion
- VoR (Version of Record)
Rights holder
© The authorsPublisher statement
This is an Open Access Article. It is published by Springer under the Creative Commons Attribution 4.0 Unported Licence (CC BY). Full details of this licence are available at: http://creativecommons.org/licenses/by/4.0/Acceptance date
2020-05-05Publication date
2020-05-30Copyright date
2021ISSN
0885-7458eISSN
1573-7640Publisher version
Language
- en
Depositor
Dr Lars Nagel Deposit date: 9 June 2020Usage metrics
Categories
Keywords
Licence
Exports
RefWorksRefWorks
BibTeXBibTeX
Ref. managerRef. manager
EndnoteEndnote
DataCiteDataCite
NLMNLM
DCDC