A compiler extension for parallel matrix programming

Kevin Williams, Matthew Le, Ted Kaminski, Eric Van Wyk

Research output: Contribution to journalConference articlepeer-review

1 Scopus citations


This paper describes a compiler extension to our prototype extensible C translator that adds new features for parallel execution of matrix operations and shows their application to problems in spatio-temporal data mining. The extension provides new language features for constructing new matrices, mapping functions over elements of a matrix, and accumulating operations that, for example, can sum values in a matrix. It also provides the appropriate semantic analysis to check for errors before translating the constructs down to parallel C code. The extension also provides features that let the programmer indicate how the extension translates these matrix constructs down to C code. Programmers seeking higher levels of performance can specify how the underlying for-loops are structured so that code using, for example, loop-tiling techniques or vector processors, is generated. In general, compiler extensions supported by our approach allow new domain-specific syntax and semantic analyses to be easily added to the host language. Specifications of the host C language and the extensions are composed to create a custom translator that maps extended C programs down to plain (parallel) C code, checking for domain-specific errors and applying high-level domain-specific optimizations in the process.

Original languageEnglish (US)
Article number6957256
Pages (from-to)471-480
Number of pages10
JournalProceedings of the International Conference on Parallel Processing
Issue numberNovember
StatePublished - Nov 13 2014
Event43rd International Conference on Parallel Processing, ICPP 2014 - Minneapolis, United States
Duration: Sep 9 2014Sep 12 2014

Bibliographical note

Publisher Copyright:
© 2014 IEEE.


  • Extensible languages
  • Matrix programming
  • Parallel programming


Dive into the research topics of 'A compiler extension for parallel matrix programming'. Together they form a unique fingerprint.

Cite this