The meeting place for professional Haskell programmers

Intel: Spring Internship to develop Haskell eDSL for vector computation

Posted by Ryan Newton
Posted at November 15, 2010 05:25:17 PM
Filling by November 30, 2010
Job type Full time
Location Boston area
We're looking for outstanding candidates for an internship in Spring 2011. The internship will be in a suburb of Boston (Hudson, MA). Graduate students and exceptional undergraduates are welcome to apply, but time is a bit short.

We are a small research group run directly by the CTO of Intel's Developer Products Division (http://www.intel.com/pressroom/kits/bios/plowney.htm). Our group works on high-level parallel programming tools (including for Haskell, e.g. Haskell CnC) and applies binary translation to various problems (http://www.pintool.org/); also we collaborate closely with Intel's various developer tools teams (Cilk, TBB, etc).

We are looking for someone to work on a new, self-contained Haskell project to create an embedded DSL 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 embedded DSL and metaprogramming tricks the user writes a portable program in a host language that streams ASTs to the VM at runtime. These vector programs include the usual aggregate array operations and high level transformations (map, fold, etc), and the VM can perform fusion/deforestation optimizations while JITting vector codes.

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.

The job requisition number is 584943. You can submit your full application here:


Please include a cover-letter explaining why you are great for this job. Also send an email to including your cover-letter and CV to [email protected] . Thank you.

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.)

Login with