Rapid software prototyping for heterogeneous and distributed platforms

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...

Full description

Bibliographic Details
Main Authors: Besard, Tim P, Churavy, Valentin R, Edelman, Alan, Sutter, Bjorn De
Other Authors: Massachusetts Institute of Technology. Department of Mathematics
Format: Article
Language:English
Published: Elsevier BV 2020
Online Access:https://hdl.handle.net/1721.1/124135
_version_ 1826205335952556032
author Besard, Tim P
Churavy, Valentin R
Edelman, Alan
Sutter, Bjorn De
author2 Massachusetts Institute of Technology. Department of Mathematics
author_facet Massachusetts Institute of Technology. Department of Mathematics
Besard, Tim P
Churavy, Valentin R
Edelman, Alan
Sutter, Bjorn De
author_sort Besard, Tim P
collection MIT
description 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. Keywords: Julia; Generic programming; Heterogeneous systems; CUDA; Distributed computing
first_indexed 2024-09-23T13:11:05Z
format Article
id mit-1721.1/124135
institution Massachusetts Institute of Technology
language English
last_indexed 2024-09-23T13:11:05Z
publishDate 2020
publisher Elsevier BV
record_format dspace
spelling mit-1721.1/1241352022-10-01T13:37:15Z Rapid software prototyping for heterogeneous and distributed platforms Besard, Tim P Churavy, Valentin R Edelman, Alan Sutter, Bjorn De Massachusetts Institute of Technology. Department of Mathematics Massachusetts Institute of Technology. Department of Electrical Engineering and Computer Science 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. Keywords: Julia; Generic programming; Heterogeneous systems; CUDA; Distributed computing National Science Foundation (Grant DMS-1312831) National Science Foundation (Grant OAC-1835443) 2020-03-12T19:26:21Z 2020-03-12T19:26:21Z 2019-06 2018-10 2020-03-09T11:58:14Z Article http://purl.org/eprint/type/JournalArticle 0965-9978 https://hdl.handle.net/1721.1/124135 Besard, Tim et al. "Rapid software prototyping for heterogeneous and distributed platforms." Advances in Engineering Software 132 (June 2019): 29-46 en http://dx.doi.org/10.1016/j.advengsoft.2019.02.002 Advances in Engineering Software Creative Commons Attribution-NonCommercial-NoDerivs License http://creativecommons.org/licenses/by-nc-nd/4.0/ application/pdf Elsevier BV Prof. Edelman
spellingShingle Besard, Tim P
Churavy, Valentin R
Edelman, Alan
Sutter, Bjorn De
Rapid software prototyping for heterogeneous and distributed platforms
title Rapid software prototyping for heterogeneous and distributed platforms
title_full Rapid software prototyping for heterogeneous and distributed platforms
title_fullStr Rapid software prototyping for heterogeneous and distributed platforms
title_full_unstemmed Rapid software prototyping for heterogeneous and distributed platforms
title_short Rapid software prototyping for heterogeneous and distributed platforms
title_sort rapid software prototyping for heterogeneous and distributed platforms
url https://hdl.handle.net/1721.1/124135
work_keys_str_mv AT besardtimp rapidsoftwareprototypingforheterogeneousanddistributedplatforms
AT churavyvalentinr rapidsoftwareprototypingforheterogeneousanddistributedplatforms
AT edelmanalan rapidsoftwareprototypingforheterogeneousanddistributedplatforms
AT sutterbjornde rapidsoftwareprototypingforheterogeneousanddistributedplatforms