The SKIR project is investigating the extension of virtual machine representations with parallel programming primitives (instructions) to support the efficient creation, representation and optimization of programs targeting parallel and heterogeneous hardware. Specifically, we are extending the LLVM language and compiler with stream processing operations and developing a runtime software layer to manage the execution of the resulting programs.
The Stream and Kernel Intermediate Representation (SKIR) is a small set of LLVM intrinsics for expressing parallel computation as a graph of sequential processes (kernels) communicating over abstract data channels (streams). At runtime, programs use the SKIR intrinsics to identify functions to use as kernels, to connect kernels together using streams, and to execute resulting program graphs. Formally, the stream parallelism expressed by SKIR programs can be viewed as a generalization of Kahn process networks. More practically, we can use SKIR as a compilation target for high level languages and frameworks containing this style of program decomposition and communication.
Project web site: http://systems.cs.colorado.edu/wiki/SKIR
Category: Computer Science