Multicore CPUs and accelerators such as general purpose GPUs (GPGPUs) have become
mainstream. At the same time, programmers want to use high-level array-based
languages such as MATLAB and Python/NumPy. Various language extensions have been
proposed for these languages to allow programmers to tap into the power of hybrid
CPU/GPU systems. However, language extensions for parallel and hybrid computing
require building new compilers or substantially extending existing compilers, and
this is a non-trivial task.
My toolkit, Velociraptor, is a reusable and portable toolkit that makes it easy to
build compilers targeting CPU+GPU systems. I describe the working of my toolkit and
will describe how I used it to in two compilers to target multicore CPUs and GPUs.
If time permits, I will also show a demo of the compiler generating code for GPUs
from Python and/or McVM which is a virtual machine for the MATLAB language developed
by other students in my lab.