Refactoring for introducing and tuning parallelism for heterogeneous multicore machines in Erlang

Vladimir Janjic, Christopher Brown (Lead / Corresponding author), Adam Barwell, Kevin Hammond

Research output: Contribution to journalArticlepeer-review


This paper presents semi-automatic software refactorings to introduce and tune structured parallelism in sequential Erlang code, as well as to generate code for running computations on GPUs and possibly other accelerators. Our refactorings are based on the lapedo framework for programming heterogeneous multi-core systems in Erlang. lapedo is based on the PaRTE refactoring tool and also contains (1) a set of hybrid skeletons that target both CPU and GPU processors, (2) novel refactorings for introducing and tuning parallelism, and (3) a tool to generate the GPU offloading and scheduling code in Erlang, which is used as a component of hybrid skeletons. We demonstrate, on four realistic use-case applications, that we are able to refactor sequential code and produce heterogeneous parallel versions that can achieve significant and scalable speedups of up to 220 over the original sequential Erlang program on a 24-core machine with a GPU.

Original languageEnglish
Article numbere5420
Number of pages25
JournalConcurrency and Computation: Practice and Experience
Issue number14
Early online date24 Jun 2019
Publication statusPublished - 25 Jul 2021


  • Erlang
  • GPU
  • heterogeneous
  • multi-core
  • parallelism
  • refactoring

ASJC Scopus subject areas

  • Software
  • Theoretical Computer Science
  • Computer Science Applications
  • Computer Networks and Communications
  • Computational Theory and Mathematics


Dive into the research topics of 'Refactoring for introducing and tuning parallelism for heterogeneous multicore machines in Erlang'. Together they form a unique fingerprint.

Cite this