当前位置: X-MOL 学术Int. J. Parallel. Program › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Pure Functions in C: A Small Keyword for Automatic Parallelization
International Journal of Parallel Programming ( IF 0.9 ) Pub Date : 2020-05-30 , DOI: 10.1007/s10766-020-00660-4
Tim Süß , Lars Nagel , Marc-André Vef , André Brinkmann , Dustin Feld , Thomas Soddemann

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.

中文翻译:

C 语言中的纯函数:自动并行化的一个小关键字

近年来,对并行任务执行的需求一直在稳步增长,因为制造商主要通过增加已安装内核的数量而不是缩放处理器频率来提高处理器性能。为了利用这种潜力,提高程序并行性的一项基本技术是并行化循环。过去已经开发了几种自动循环嵌套并行器,例如 PluTo。这些工具的主要限制是循环必须是静态可分析的,除其他外,不允许在循环内调用函数。在本文中,我们展示了一个看似简单的 C 编程语言扩展,它标记了没有副作用的函数。当自动并行器检查循环的可并行性时,这些函数基本上可以被忽略。我们将该方法集成到 GCC 编译器工具链中,并通过运行多个实际应用程序对其进行评估。我们的实验表明,C 扩展有助于识别额外的并行化机会,从而显着提高应用程序的性能。
更新日期:2020-05-30
down
wechat
bug