SEJITS: Getting Productivity and Performance With Selective Embedded JIT Specialization

Bryan Catanzaro, Shoaib Ashraf Kamil, Yunsup Lee, Krste Asanović, James Demmel, Kurt Keutzer, John Shalf, Katherine A. Yelick and Armando Fox

EECS Department
University of California, Berkeley
Technical Report No. UCB/EECS-2010-23
March 1, 2010

http://www2.eecs.berkeley.edu/Pubs/TechRpts/2010/EECS-2010-23.pdf

Today’s “high productivity” programming languages such as Python lack the performance of harder-to-program “efficiency” languages (CUDA, Cilk, C with OpenMP) that can exploit extensive programmer knowledge of parallel hardware architectures. We combine efficiency-language performance with productivity-language programmability using selective embedded just-in-time specialization (SEJITS). At runtime, we specialize (generate, compile, and execute efficiency-language source code for) an application-specific and platform-specific subset of a productivity language, largely invisibly to the application programmer. Because the specialization machinery is implemented in the productivity language itself, it is easy for efficiency programmers to incrementally add specializers for new domain abstractions, new hardware, or both. SEJITS has the potential to bridge productivity-layer research and efficiency-layer research, allowing domain experts to exploit different parallel hardware architectures with a fraction of the programmer time and effort usually required.


BibTeX citation:

@techreport{Catanzaro:EECS-2010-23,
    Author = {Catanzaro, Bryan and Kamil, Shoaib Ashraf and Lee, Yunsup and Asanović, Krste and Demmel, James and Keutzer, Kurt and Shalf, John and Yelick, Katherine A. and Fox, Armando},
    Title = {SEJITS: Getting Productivity and Performance With Selective Embedded JIT Specialization},
    Institution = {EECS Department, University of California, Berkeley},
    Year = {2010},
    Month = {Mar},
    URL = {http://www2.eecs.berkeley.edu/Pubs/TechRpts/2010/EECS-2010-23.html},
    Number = {UCB/EECS-2010-23},
    Abstract = {Today’s “high productivity” programming languages such as Python lack the performance of harder-to-program “efficiency” languages (CUDA, Cilk, C with OpenMP) that can exploit extensive programmer knowledge of parallel hardware architectures.	We combine efficiency-language performance with productivity-language programmability using selective embedded just-in-time specialization (SEJITS). At runtime, we specialize (generate, compile, and execute efficiency-language source code for) an application-specific and platform-specific subset of a productivity language, largely invisibly to the application programmer. Because the specialization machinery is implemented in the productivity language itself, it is easy for efficiency programmers to incrementally add specializers for new domain abstractions, new hardware, or both. SEJITS has the potential to bridge productivity-layer research and efficiency-layer research, allowing domain experts to exploit different parallel hardware architectures with a fraction of the programmer time and effort usually required.}
}

EndNote citation:

%0 Report
%A Catanzaro, Bryan
%A Kamil, Shoaib Ashraf
%A Lee, Yunsup
%A Asanović, Krste
%A Demmel, James
%A Keutzer, Kurt
%A Shalf, John
%A Yelick, Katherine A.
%A Fox, Armando
%T SEJITS: Getting Productivity and Performance With Selective Embedded JIT Specialization
%I EECS Department, University of California, Berkeley
%D 2010
%8 March 1
%@ UCB/EECS-2010-23
%U http://www2.eecs.berkeley.edu/Pubs/TechRpts/2010/EECS-2010-23.html
%F Catanzaro:EECS-2010-23