Experiences with Building Domain Specific Compilation Plugins in Graal

Colin Barrett, Christos Kotselidis, Foivos Zakkak, Nikos Foutris, Mikel Luján

Research output: Chapter in Book/Report/Conference proceedingConference contributionpeer-review

266 Downloads (Pure)

Abstract

In this paper, we describe our experiences in co-designing a domain-specific compilation stack. Our motivation stems from the missed optimization opportunities we observed while implementing a computer vision library in Java. To tackle the performance shortcomings, we developed Indigo, a computer vision API co-designed with a compilation plugin for optimizing computer vision applications.
Indigo exploits the extensible nature of the Graal compiler which provides invocation plugins, that replace methods with dedicated nodes, and generates machine code compatible with both the Java Virtual Machine (JVM) and the SIMD hardware unit. Our approach improves performance by up to 66.75x when compared to pure Java implementations and by up to 2.75x when compared to the original C++ implementation. These performance improvements are the result of low-level concurrency, idiomatic implementation of algorithms, and by keeping temporary objects in the wider vector unit registers.
Original languageEnglish
Title of host publication14th International Conference on Managed Languages & Runtimes (ManLang)
PublisherAssociation for Computing Machinery
DOIs
Publication statusPublished - 1 Sept 2017

Fingerprint

Dive into the research topics of 'Experiences with Building Domain Specific Compilation Plugins in Graal'. Together they form a unique fingerprint.

Cite this