main.pdf (169.04 kB)
Pure functions in C: A small keyword for automatic parallelization
conference contribution
posted on 2018-02-06, 11:49 authored by Tim Suss, Lars NagelLars Nagel, Marc-Andre Vef, Andre Brinkmann, Dustin Feld, Thomas Soddemann© 2017 IEEE. The need for parallel task execution has been steadily growing in recent years since manufacturers mainly improve processor performance by scaling the number of installed cores instead of the frequency of processors. To make use of this potential, an essential technique to increase the parallelism of a program is to parallelize loops. However, a main restriction of available tools for automatic loop parallelization is that the loops often have to be 'polyhedral' and that it is, e.g., not allowed to call functions from within the loops.In this paper, 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 checking the parallelization opportunities for polyhedral loops. We extended the GCC compiler toolchain accordingly and evaluated several real-world applications showing that our extension helps to identify additional parallelization chances and, thus, to significantly enhance the performance of applications.
Funding
This work was supported by the German Ministry for Education and Research under grant 01|H13004A (FAST).
History
School
- Science
Department
- Computer Science
Published in
Proceedings - IEEE International Conference on Cluster Computing, ICCCVolume
2017-SeptemberPages
552 - 556Citation
SUSS, T. ...et al., 2017. Pure functions in C: A small keyword for automatic parallelization. Presented at the 2017 IEEE International Conference on Cluster Computing (CLUSTER), Honolulu, HI, USA, 5-8 Sept, pp. 552-556.Publisher
© Institute of Electrical and Electronics Engineers (IEEE)Version
- AM (Accepted Manuscript)
Publisher statement
This work is made available according to the conditions of the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) licence. Full details of this licence are available at: https://creativecommons.org/licenses/by-nc-nd/4.0/Publication date
2017Notes
© 2017 IEEE. Personal use of this material is permitted. Permission from IEEE must be obtained for all other uses, in any current or future media, including reprinting/republishing this material for advertising or promotional purposes, creating new collective works, for resale or redistribution to servers or lists, or reuse of any copyrighted component of this work in other works.ISBN
9781538623268ISSN
1552-5244Publisher version
Language
- en