Effective Extensible Programming: Unleashing Julia on GPUs

Effective Extensible Programming: Unleashing Julia on GPUs
复制标题

DOI:
10.1109/tpds.2018.2872064
复制
发表时间:
2019-04-01
影响因子:
5.3
通讯作者:
De Sutter, Bjorn
De Sutter, Bjorn
中科院分区:
计算机科学2区
文献类型:
--
作者:
Besard, Tim;Foket, Christophe;De Sutter, Bjorn

文献摘要

被引文献

相似文献

gpu和其他加速器是用于加速计算密集型、可并行化应用程序的流行设备。然而,对这些设备进行编程是一项艰巨的任务。编写高效的设备代码具有挑战性,通常是用低级编程语言完成的。高级语言很少得到支持,或者没有与高级语言生态系统的其余部分集成。为了克服这个问题,我们提出了编译器基础结构,以便有效地为现有编程语言添加对新硬件或环境的支持。我们通过在Julia编程语言中添加对NVIDIA gpu的支持来评估我们的方法。通过与现有编译器集成,我们大大降低了实现和维护新编译器的成本,并促进了现有应用程序代码的重用。此外,使用高级Julia编程语言为GPU编程提供了新的动态方法。这大大提高了程序员的工作效率,同时保持应用程序的性能类似于官方的NVIDIA CUDA工具包。
GPUs and other accelerators are popular devices for accelerating compute-intensive, parallelizable applications. However, programming these devices is a difficult task. Writing efficient device code is challenging, and is typically done in a low-level programming language. High-level languages are rarely supported, or do not integrate with the rest of the high-level language ecosystem. To overcome this, we propose compiler infrastructure to efficiently add support for new hardware or environments to an existing programming language. We evaluate our approach by adding support for NVIDIA GPUs to the Julia programming language. By integrating with the existing compiler, we significantly lower the cost to implement and maintain the new compiler, and facilitate reuse of existing application code. Moreover, use of the high-level Julia programming language enables new and dynamic approaches for GPU programming. This greatly improves programmer productivity, while maintaining application performance similar to that of the official NVIDIA CUDA toolkit.