pluto,多面体,自动并行化

多面体.info提供有关多面体编译社区的信息,包括最新进展以及现有工作的概述。它严重依赖社区贡献,提供有关使用多面体编译技术的软件工具、该领域的最新出版物以及社区活动的信息。
多面体编译
多面体编译包括依赖于程序表示的编译技术,特别是那些涉及嵌套循环和数组的程序,这要归功于参数多面体952或Presburger关系31,并利用这些对象的组合和几何优化来分析和优化程序。最初是在编译器并行化的背景下提出的,现在用于广泛的应用,包括自动并行化、数据局部性优化、内存管理优化、程序验证、通信优化、SIMDization、硬件加速器的代码生成、高级综合等。在静态编译器、实时编译器以及DSL编译器中使用这些技术都有经验。多面体研究领域拥有深厚的学术背景,但越来越多的行业用户也开始采用此类技术。
使用多面体表示的兴趣在于,它们可以通过算法进行操纵或优化,算法的复杂性取决于它们的结构,而不是它们表示的元素数量。此外,可以根据程序参数(例如循环边界、图块大小、数组边界)设计通用和紧凑的解决方案。总之,多面体技术是为非循环控制流图或非结构化循环设计的编译技术(如调度、生命周期分析、寄存器分配)的符号对应物,用于结构化循环(但不展开它们)。此外,与将循环或数组作为一个整体处理的优化相比,多面体技术可以在其元素的粒度上工作,即循环迭代和语句(操作)实例的粒度,以及数组元素的粒度。
基础理论可以追溯到Karp、Miller和Winograd的《均匀递归方程的计算组织》(1968)13和P.Feautrier的《数组展开》(1988)10和《数组和标量参考的数据流分析》(1991)7等开创性贡献,并建立在80年代大图景出现之前,在循环变换(Lamport 12、Banerjee、Wolfe、Allen和Kennedy、Irigoin和Triolet 8等的工作)和收缩数组设计(Quinton、Rajopadhye、Delosme等的工作。1988年,PIP 9(参数整数编程)等优化工具的开发实现了多面体的参数优化,Polylib 52(自1987年以来,在Chernikova算法的基础上进行了开发)和Omega 3(由Bill Pugh和他的团队开发)是使这种多面体优化成为可能的关键贡献。Cousot和Halbwachs11在1978年发表的关于抽象解释的开创性论文《程序变量间线性约束的自动发现》也可以被视为多面体分析的一个基础轴,即使它产生了一个最初不相交的社区。
从那时起,在过去的20年里,研究界用Ehrhart多项式4、Barvinok计数算法、晶格优化、Presburger公式操作、代码生成算法扩展了理论和可用的多面体工具和库。开发免费工具,如ISL、CLooG、Pluto、PIPS、Fadalib、,Cl@k仅举几例,Gecos以及GCC和LLVM中多面体库的引入是传播多面体编译的重要步骤。应用领域现在涵盖了广泛的方向,例如:
程序分析
相关性分析
数组扩展和单赋值转换
数组元素的生存性和重用/局部性分析
阵列区域分析和近似
调度理论
Farkas引理与多维调度
嵌套循环的自动矢量化和并行化
与循环变换(交换、融合、重定时等)链接
循环平铺和平铺模型
程序验证
可计算性和可判定性
程序终止
种族检测
映射算法
收缩阵列设计
具有内存重用的内存映射(数组收缩)
数据映射(类似HPF),分布式内存的数据分布
通信优化
计数多项式和Ehrhart多项式
缓存未命中分析
内存大小计算
迭代计数(WCET)
并行编译器开发
硬件综合
自动矢量器/并行器
GPU编译
迭代编译
二进制优化和运行时优化
自2011年以来,多面体代码分析和优化的研究界每年都会在多面体编译技术国际研讨会(IMPACT)上举行会议,展示最新结果并组织一些小组讨论。IMPACT最初是CGO'11会议的研讨会,现在是HIPEAC国际会议的常规卫星研讨会。2013年还成立了一所多面体学校,其双重目标是:向新来者(通常是博士生或有兴趣将这些技术带入其应用领域的研究人员)教授多面体技术和工具,并帮助多面体专家讨论和建立其领域的最新技术。这所学校正在计划第二期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值