...
首页> 外文期刊>Concurrency and computation: practice and experience >Asynchronous adaptive optimisation for generic data-parallel array programming
【24h】

Asynchronous adaptive optimisation for generic data-parallel array programming

机译:通用数据并行数组编程的异步自适应优化

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

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

       

摘要

Programming productivity very much depends on the availability of basic building blocks that can be reused for a wide range of application scenarios and the ability to define rich abstraction hierarchies. Driven by the aim for increased reuse, such basic building blocks tend to become more and more generic in their specification; structural as well as behavioural properties are turned into parameters that are passed on to lower layers of abstraction where eventually a differentiation is being made. In the context of array programming, such properties are typically array ranks (number of axes/dimensions) and array shapes (number of elements along each axis/dimension). This allows for abstract definitions of operations such as element-wise additions, concatenations, rotations, and so on, which jointly enable a very high-level compositional style of programming, similar to, for instance, MATLAB. However, such a generic programming style generally comes at a price in terms of runtime overheads when compared against tailor-made low-level implementations. Additional layers of abstraction as well as the lack of hard-coded structural properties often inhibits optimisations that are obvious otherwise. Although complex static compiler analyses and transformations such as partial evaluations can ameliorate the situation to quite some extent, there are cases, where the required level of information is not available until runtime. In this paper, we propose to shift part of the optimisation process into the runtime of applications. Triggered by some runtime observation, the compiler asynchronously applies partial evaluation techniques to frequently used program parts and dynamically replaces initial program fragments by more specialised ones through dynamic relinking. In contrast to many existing approaches, we suggest this optimisation to be done in a rather non-intrusive, decoupled way. We use a full-fledged compiler that is run on a separate core. This measure enables us to run the compiler on its highest optimisation-level, which requires non-negligible compilation times for our optimisations. We use the compiler's type system to identify the potential dynamic optimisations. And we use the host language's module system as a facilitator for the dynamic code modifications. We present the architecture and implementation of an adaptive compilation framework for Single Assignment C, a data-parallel array programming language. Single Assignment C advocates shape-generic and rank-generic programming with arrays. A sophisticated, highly optimising compiler technology nevertheless achieves competitive runtime performance. We demonstrate the suitability of our approach to achieve consistently high performance independent of the static availability of array properties by means of several experiments based on a highly generic formulation of rank-invariant convolution as a case study.
机译:编程效率在很大程度上取决于可在各种应用程序场景中重用的基本构建块的可用性以及定义丰富的抽象层次结构的能力。在旨在提高重用性的目标的推动下,此类基本构件在其规范中趋于变得越来越通用。结构和行为属性被转换为参数,然后传递给较低的抽象层,最终进行区分。在数组编程的上下文中,此类属性通常是数组等级(轴数/维数)和数组形状(沿每个轴数/维数的元素数)。这允许对操作进行抽象定义,例如逐元素加法,级联,旋转等,这些联合定义可实现非常高级的组合式编程风格,类似于MATLAB。但是,与定制的底层实现相比,这种通用编程风格通常会在运行时开销方面付出代价。附加的抽象层以及缺乏硬编码的结构特性通常会抑制优化,而这种优化在其他方面是显而易见的。尽管复杂的静态编译器分析和转换(例如部分评估)可以在一定程度上缓解这种情况,但在某些情况下,所需的信息级别要到运行时才可用。在本文中,我们建议将优化过程的一部分转移到应用程序的运行时中。受到某些运行时观察的触发,编译器异步地将部分评估技术应用于经常使用的程序部分,并通过动态重新链接以更专业的方式动态替换初始程序片段。与许多现有方法相反,我们建议此优化以一种非侵入性,分离的方式完成。我们使用在单独的内核上运行的成熟编译器。此措施使我们能够在最高优化级别上运行编译器,这需要我们进行优化的编译时间不可忽略。我们使用编译器的类型系统来识别潜在的动态优化。并且我们使用宿主语言的模块系统作为动态代码修改的辅助工具。我们为单任务C(一种数据并行数组编程语言)提供了一种自适应编译框架的体系结构和实现。单一作业C提倡使用数组进行形状通用和秩通用编程。但是,复杂的,高度优化的编译器技术可实现具有竞争力的运行时性能。我们通过基于秩不变卷积的高度通用表述的几个实验作为案例研究,证明了我们的方法是否适合实现一致的高性能,而与阵列属性的静态可用性无关。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号