...
首页> 外文期刊>Parallel and Distributed Systems, IEEE Transactions on >Parallelization Hints via Code Skeletonization
【24h】

Parallelization Hints via Code Skeletonization

机译:通过代码骨架化的并行化提示

获取原文
获取原文并翻译 | 示例
   

获取外文期刊封面封底 >>

       

摘要

Tools that provide optimization hints for program developers are facing severe obstacles and often unable to provide meaningful guidance on how to parallelize real-life applications. The main reason is due to the high code complexity and its large size when considering commercially valuable code. Such code is often rich with pointers, heavily nested conditional statements, nested while–based loops, function calls, etc. These constructs prevent existing compiler analysis from extracting the full parallelization potential. We propose a new paradigm to overcome this issue by automatically transforming the code’ into a much simpler skeleton-like form that is more conductive for auto-parallelization. We then apply existing tools of source–level automatic parallelization on the skeletonized code in order to expose possible parallelization patterns. The skeleton code, along with the parallelized version, are then provided to the programmer in the form of an Integrated Development Environment (IDE) recommendation. The proposed skeletonization algorithm replaces pointers by integer indexes and C-struct references by references to multi-dimensional arrays. For example, the loop will be skeletonized to: where holds the embedding of the original list. Consequently, the main goal of the skeletonization process is to embed pointer-based data stru- tures into arrays. Though the skeletonized code is not semantically equivalent to the original code, it suggests a possible parallelization pattern for the selected code segment and can be used as an effective parallelization hint to the programmer. We applied the method on the SPEC CPU benchmarks and the skeletonization process detected 27 percent additional loops that can be parallelized/vectorized on top of the compiler auto-parallelizer/vectorizer. A performance gain of up to 45 percent was measured for benchmarks that were manually parallelized based on the generated skeleton code.
机译:为程序开发人员提供优化提示的工具正面临严峻的障碍,并且通常无法提供有关如何并行化实际应用程序的有意义的指导。主要原因是由于在考虑具有商业价值的代码时具有很高的代码复杂性和其较大的大小。此类代码通常包含指针,大量嵌套的条件语句,嵌套的基于while的循环,函数调用等。这些结构阻止现有的编译器分析提取全部并行化潜力。我们提出了一种新的范式来解决此问题,方法是将代码自动转换为更简单的骨架状形式,从而更易于自动并行化。然后,我们在框架化代码上应用源级自动并行化的现有工具,以揭示可能的并行化模式。然后,以集成开发环境(IDE)推荐的形式将框架代码以及并行化版本提供给程序员。提出的骨架化算法用整数索引替换指针,并用对多维数组的引用替换C结构引用。例如,循环将被框架化为:其中保留原始列表的嵌入。因此,框架化过程的主要目标是将基于指针的数据结构嵌入到数组中。尽管框架化代码在语义上不等同于原始代码,但它为所选代码段建议了一种可能的并行化模式,并且可用作程序员的有效并行化提示。我们将该方法应用于SPEC CPU基准测试,骨架化过程检测到27%的附加循环,这些循环可以在编译器自动并行化器/矢量化器之上进行并行化/矢量化。对于基于生成的框架代码手动并行化的基准,测得的性能提升高达45%。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号