Table of Contents
Fetching ...

Closing a Source Complexity Gap between Chapel and HPX

Shreyas Atre, Chris Taylor, Patrick Diehl, Hartmut Kaiser

TL;DR

This work tackles opening the source-code complexity gap between Chapel and HPX by introducing ChplX, a source-to-source compiler that translates Chapel into ISO C++20 code that runs on the HPX runtime. It evaluates single-node performance on Arm and x86 using Heat Equation, GUPS, and STREAM benchmarks, showing parity or improvements relative to Cray Chapel and demonstrating a near-line-for-line translation with modest boilerplate. The ChplX toolchain includes a compiler, a C++ library that mirrors Chapel features, and visualization support, and it introduces inlinecxx to embed C++ code. The findings indicate that Chapel can serve as a productive frontend for ISO C++ with HPX, achieving competitive performance while substantially reducing code complexity, and point to future work in bug fixes, GPU support, and expanded language coverage.

Abstract

A previous case study measured performance vs source-code complexity across multiple languages. The case study identified Chapel and HPX provide similar performance and code complexity. This paper is the result of initial steps toward closing the source-code complexity gap between Chapel and HPX by using a source-to-source compiler. The investigation assesses the single-machine performance of both Chapel and Chplx applications across Arm and x86.

Closing a Source Complexity Gap between Chapel and HPX

TL;DR

This work tackles opening the source-code complexity gap between Chapel and HPX by introducing ChplX, a source-to-source compiler that translates Chapel into ISO C++20 code that runs on the HPX runtime. It evaluates single-node performance on Arm and x86 using Heat Equation, GUPS, and STREAM benchmarks, showing parity or improvements relative to Cray Chapel and demonstrating a near-line-for-line translation with modest boilerplate. The ChplX toolchain includes a compiler, a C++ library that mirrors Chapel features, and visualization support, and it introduces inlinecxx to embed C++ code. The findings indicate that Chapel can serve as a productive frontend for ISO C++ with HPX, achieving competitive performance while substantially reducing code complexity, and point to future work in bug fixes, GPU support, and expanded language coverage.

Abstract

A previous case study measured performance vs source-code complexity across multiple languages. The case study identified Chapel and HPX provide similar performance and code complexity. This paper is the result of initial steps toward closing the source-code complexity gap between Chapel and HPX by using a source-to-source compiler. The investigation assesses the single-machine performance of both Chapel and Chplx applications across Arm and x86.

Paper Structure

This paper contains 12 sections, 2 equations, 3 figures, 2 tables.

Figures (3)

  • Figure 1: Heat Equation: Strong Scaling, Average Time and (\ref{['fig:performance:gupsStrongScaling']}) GUPS $n\_threads*bytes \div seconds \div 1e9$, Giga-Updates Per Second, 1GB Strong Scaling
  • Figure 2: STREAM Benchmark
  • Figure 3: Software estimates: (\ref{['fig:loc']}) Lines of code and (\ref{['fig:cocomo']}) estimated schedule effort using COCOMO.