We are looking for someone to work on a new, self-contained
Haskell project to create an embedded domain-specific language (EDSL) that targets the ArBB virtual machine for vectorization. One possible solution is to adapt existing
projects that target CUDA (e.g.
accelerate and
Nikola).
Array Building Blocks (ArBB)
is an interesting and ambitious project that attempts to bring
metaprogramming and EDSLs to the masses. It's based on research by
Michael Mccool at Waterloo that he used to found a company,
RapidMind, which was later bought by Intel.
The basic idea is that the VM abstracts over the thread and vectorization capabilities of CPUs, GPUs, and other
manycore chips.
The VM defines a restricted compute language and provides a managed
(yes, garbage collected) environment. Using the normal EDSL and
metaprogramming tricks the user writes a portable program in a host
language that streams ASTs to the VM at runtime. The vector programs supported by the VM
include the usual aggregate array operations and high level
transformations (map, fold, etc), and the VM can perform
fusion/deforestation optimizations while JITting.
The VM API for generating programs is a
simple C API
that can be called from anywhere. The ArBB team is anxious to
demonstrate language frontends for other languages, and Haskell is a
good candidate.
Cheers,
-Ryan
LOCATION: Hudson, MA
DURATION: 3-6 Months, flexible
START: Some flexibility, ~January, 2011
EXPERIENCE: Expert Haskell/GHC programmer. Interest in research a plus.
LOCATION
NOTE: With a car it is possible to live in Cambridge or Boston and
reverse-commute to our location. (Working offsite two days a week is
possible.)