Applying Type Oriented Programming to the PGAS Memory Model

09/26/2020
by   Nick Brown, et al.
0

The Partitioned Global Address Space memory model has been popularised by a number of languages and applications. However this abstraction can often result in the programmer having to rely on some in built choices and with this implicit parallelism, with little assistance by the programmer, the scalability and performance of the code heavily depends on the compiler and choice of application. We propose an approach, type oriented programming, where all aspects of parallelism are encoded via types and the type system. The type information associated by the programmer will determine, for instance, how an array is allocated, partitioned and distributed. With this rich, high level of information the compiler can generate an efficient target executable. If the programmer wishes to omit detailed type information then the compiler will rely on well documented and safe default behaviour which can be tuned at a later date with the addition of types. The type oriented parallel programming language Mesham, which follows the PGAS memory model, is presented. We illustrate how, if so wished, with the use of types one can tune all parameters and options associated with this PGAS model in a clean and consistent manner without rewriting large portions of code. An FFT case study is presented and considered both in terms of programmability and performance - the latter we demonstrate by a comparison with an existing FFT solver.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
10/27/2020

Extended abstract: Type oriented programming for task based parallelism

Writing parallel codes is difficult and exhibits a fundamental trade-off...
research
09/27/2020

A Type-Oriented Graph500 Benchmark

Data intensive workloads have become a popular use of HPC in recent year...
research
10/05/2020

Wasm/k: Delimited Continuations for WebAssembly

WebAssembly is designed to be an alternative to JavaScript that is a saf...
research
09/04/2021

Type Stability in Julia: Avoiding Performance Pathologies in JIT Compilation (Extended Version)

As a scientific programming language, Julia strives for performance but ...
research
11/15/2020

Coming to Terms with Your Choices: An Existential Take on Dependent Types

Type-level programming is an increasingly popular way to obtain addition...
research
11/06/2017

Comparison of Parallelisation Approaches, Languages, and Compilers for Unstructured Mesh Algorithms on GPUs

Efficiently exploiting GPUs is increasingly essential in scientific comp...
research
08/21/2019

Scala Implicits are Everywhere: A large-scale study of the use of Implicits in the wild

The Scala programming language offers two distinctive language features ...

Please sign up or login with your details

Forgot password? Click here to reset