Modernizing Parallel Code with Pattern Analysis

Roberto Castañeda Lozano, Murray Cole, Bjoern Franke

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Abstract

Fifty years of parallel programming has generated a substantial legacy parallel codebase, creating a new portability challenge: re-parallelizing already parallel code. Our solution exploits inherently portable parallel patterns, and addresses the challenge of identifying patternization opportunities in legacy parallel code via constraint matching on traced dynamic dataflow graphs. Notably, this makes the analysis source-independent and equally applicable to sequential and parallel legacy code. We identify various map and reduction patterns, including compositions, in Pthreads code. Experiments with the Starbench suite show that our analysis is effective (finding 86% of the patterns known in the literature), accurate (reporting actual patterns in 98% of the cases), and efficient (scaling linearly with the size of the execution traces). We re-express the found patterns via a parallel pattern library, making code freely portable across CPU/GPU systems and performing competitively with hand-tuned implementations at zero additional effort.
Original languageEnglish
Title of host publicationProceedings of the 26th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP '21)
PublisherACM
Pages418–430
Number of pages13
ISBN (Print)9781450382946
DOIs
Publication statusPublished - 17 Feb 2021
Event26th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming - Virtual Conference
Duration: 27 Feb 20213 Mar 2021
https://ppopp21.sigplan.org/

Conference

Conference26th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming
Abbreviated titlePPoPP 2021
CityVirtual Conference
Period27/02/213/03/21
Internet address

Keywords

  • parallel patterns
  • code modernization
  • dynamic analysis
  • Pattern matching

Fingerprint Dive into the research topics of 'Modernizing Parallel Code with Pattern Analysis'. Together they form a unique fingerprint.

Cite this