GPU上的数组边界检查:Futhark编译策略

0 下载量 44 浏览量 更新于2024-07-14 收藏 271KB PDF 举报
"Bounds Checking on the GPU - Futhark (hlpp20) - 计算机科学" 这篇论文探讨了一种在GPU上进行数组索引安全性检查的简单编译策略,特别针对高级语言。该技术不依赖硬件异常终止的支持,并且在正常运行情况下设计为高效。作者Troels Henriksen指出,此方法依赖于数组语言的特定特性,即没有任意的跨线程通信,以确保在出现错误时执行仍能保持良好定义。 在GPU编程中,由于其并行计算的特性,数组索引错误可能导致难以预测的结果。传统的安全语言会在运行时对所有潜在风险操作进行检查,防止此类问题,而未经检查的(unsafe)语言则可能在运行时因错误导致不可预知的行为。论文中提出的编译策略旨在为GPU环境提供类似的安全性,同时尽量减少性能损失。 Futhark是一种函数式数组语言,作者已经将该检查技术实现到Futhark的编译器中。通过19个基准测试,结果显示,检查数组索引的几何平均开销分别只有4%和6%,这表明在两种不同的GPU上,这种安全检查对性能的影响是相对较小的。 关键词包括GPU、函数式编程和编译器,这表明论文主要关注的是在GPU上的函数式语言优化和安全性,以及如何在保持效率的同时实现对数组操作的有效检查。 1. 引言部分指出,语言可以分为两类:不安全的语言允许运行时的编程错误导致不可预测的结果;而安全的语言则通过运行时检查来防止风险操作。数组索引是这类问题的一个关键示例,无效的索引会导致程序出错。 2. 研究目标是提供一种在GPU上对数组索引进行安全检查的方法,不依赖硬件异常处理机制,并且在正常情况下高效运行。 3. 该方法基于数组语言的特性,即不存在跨线程的任意通信,确保即使在失败情况下也能保持良好的程序执行状态。 4. Futhark编译器的实现验证了该技术的可行性,实验结果表明,安全检查带来的性能开销相对较低,这意味着它在实际应用中是可行的。 5. 这项工作对于理解如何在并行计算环境中保证程序安全性和效率具有重要意义,对于GPU编程和编译器设计领域提供了有价值的贡献。