Imperial College London

ProfessorNobukoYoshida

Faculty of EngineeringDepartment of Computing

Academic Visitor
 
 
 
//

Contact

 

+44 (0)20 7594 8240n.yoshida Website

 
 
//

Location

 

556Huxley BuildingSouth Kensington Campus

//

Summary

 

Publications

Citation

BibTex format

@inproceedings{Castro-Perez:2020:10.1145/3377555.3377889,
author = {Castro-Perez, D and Yoshida, N},
doi = {10.1145/3377555.3377889},
pages = {143--154},
publisher = {ACM},
title = {Compiling first-order functions to session-typed parallel code},
url = {http://dx.doi.org/10.1145/3377555.3377889},
year = {2020}
}

RIS format (EndNote, RefMan)

TY  - CPAPER
AB - Building correct and efficient message-passing parallel pro-grams still poses many challenges. The incorrect use ofmessage-passing constructs can introduce deadlocks, anda bad task decomposition will not achieve good speedups.Current approaches focus either on correctness or efficiency,but limited work has been done on ensuring both. In thispaper, we propose a new parallel programming framework,PAlg, which is a first-order language withparticipant anno-tationsthat ensuresdeadlock-freedom by construction.PAlgprograms are coupled with an abstraction of their communi-cation structure, aglobal typefrom the theory ofmultipartysession types(MPST). This global type serves as an outputfor the programmer to assess the efficiency of their achievedparallelisation.PAlgis implemented as an EDSL in Haskell,from which we can: 1. compile to low-level message-passingC code; 2. compile to sequential C code, or interpret as se-quential Haskell functions; and, 3. infer the communicationprotocol followed by the compiled message-passing program.We use the properties of the inferred global types to performbasic message reordering optimisations to the compiled Ccode. We prove theextensional equivalenceof our outputparallelisation, as well as theprotocol compliance. We eval-uate our approach on a number of benchmarks. We achievelinear speedups on a shared-memory 12-core machine, anda speedup of 16 on a 2-node, 24-core NUMA.
AU - Castro-Perez,D
AU - Yoshida,N
DO - 10.1145/3377555.3377889
EP - 154
PB - ACM
PY - 2020///
SP - 143
TI - Compiling first-order functions to session-typed parallel code
UR - http://dx.doi.org/10.1145/3377555.3377889
UR - http://hdl.handle.net/10044/1/77582
ER -