Rapid software prototyping for heterogeneous and distributed platforms

Rapid software prototyping for heterogeneous and distributed platforms
复制标题

DOI:
10.1016/j.advengsoft.2019.02.002
复制
发表时间:
2019-06-01
影响因子:
4.8
通讯作者:
De Sutter, Bjorn
De Sutter, Bjorn
中科院分区:
工程技术2区
文献类型:
--
作者:
Besard, Tim;Churavy, Valentin;De Sutter, Bjorn

文献摘要

被引文献

相似文献

科学家和工程师对软件的需求越来越大,他们的程序也变得越来越计算量大,越来越针对具体问题。这导致大量非专业程序员涌入,他们需要使用和编写高性能计算平台。随着单线程性能的持续停滞,使用GPU或FPGA等硬件加速器是必要的。使软件适应这些计算平台是一项艰巨的任务,特别是对于非专家程序员,导致应用程序无法利用新的硬件或需要大量rewrites.We提出了一个编程模型,允许非专家受益于高性能计算,同时使专家程序员充分利用底层硬件。在这个模型中,程序是通用类型的,数据的位置在类型系统中编码,并且多分派用于基于数据的类型选择功能。这使得现有软件能够快速原型化、重定向和重用,同时允许在需要时进行硬件特定优化。我们的方法允许在一种源语言中进行开发,使领域专家和性能工程师能够共同开发程序,而没有开销、摩擦、以及为同一项目开发多种编程语言所带来的挑战。我们展示了这种编程模型在朱莉娅使用现实的例子,显示这种方法的潜力,快速原型,其适用性为现实生活中的工程。我们专注于非专家程序员的可用性,并证明底层硬件的潜力可以充分利用。
The software needs of scientists and engineers are growing and their programs are becoming more compute-heavy and problem-specific. This has led to an influx of non-expert programmers, who need to use and program high-performance computing platforms.With the continued stagnation of single-threaded performance, using hardware accelerators such as GPUs or FPGAs is necessary. Adapting software to these compute platforms is a difficult task, especially for non-expert programmers, leading to applications being unable to take advantage of new hardware or requiring extensive rewrites.We propose a programming model that allows non-experts to benefit from high-performance computing, while enabling expert programmers to take full advantage of the underlying hardware. In this model, programs are generically typed, the location of the data is encoded in the type system, and multiple dispatch is used to select functionality based on the type of the data. This enables rapid prototyping, retargeting and reuse of existing software, while allowing for hardware specific optimization if required.Our approach allows development to happen in one source language enabling domain experts and performance engineers to jointly develop a program, without the overhead, friction, and challenges associated with developing in multiple programming languages for the same project.We demonstrate the viability and the core principles of this programming model in Julia using realistic examples, showing the potential of this approach for rapid prototyping, and its applicability for real-life engineering. We focus on usability for non-expert programmers and demonstrate that the potential of the underlying hardware can be fully exploited.