Ben Lippmeier

While you were reading this Steggles fixed 3 DDC bugs.
About Me
Publications
-
Work Efficient Higher-Order Vectorisation
(tech report),
(dph-reference-array.tgz),
Submitted to ICFP 2012,
with Manuel Chakravarty, Gabriele Keller, Roman Leshchinskiy and Simon Peyton Jones
-
Efficient Parallel Stencil Convolution in Haskell
(slides),
(demo video),
Haskell 2011
with Gabriele Keller
-
Regular, shape-polymorphic, parallel arrays in Haskell
(slides),
ICFP 2010,
with Gabriele Keller, Manuel Chakravarty, Roman Leshchinskiy and Simon Peyton Jones
-
Type Inference and Optimisation for an Impure World
ANU 2010 (PhD thesis)
-
Witnessing Purity, Constancy and Mutability
(slides),
APLAS 2009
-
An AMPLE Implementation,
IFL 2003 (draft proceedings)
with Clem Baker-Finch
Projects
DDC - The Disciplined Disciple Compiler
Disciple is an explicitly lazy dialect of Haskell. DDC uses effect and closure typing to allow destructive update and arbitrary side-effects to play nicely with laziness and compiler optimisations. It also supports real (object.field) type-directed projections and some other useful features. DDC is still a research project, but it'll compile some programs if you're nice to it. Update data without state monads. Write putStr "foo" and mean it. Learn to live again.
GHC - The Glasgow Haskell Compiler
GHC is
the industrial strength Haskell compiler.
As a research associate at UNSW my main job is to help with the
Data Parallel Haskell project.
In Q1 2009 I spent three months working on the
GHC on OpenSPARC project,
where I repaired GHC's support for the SPARC architecture and benchmarked it on the
highly multi-threaded
UltraSPARC T2
(Niagra 2) architecture.
In Q3 2007 I spent three months working at
GHC HQ
where I wrote a new
graph coloring register allocator for the native code generator.
Gloss (formerly ANUPlot)
Gloss hides the pain of drawing simple 2D graphics in Haskell behind a nice data structure and a couple of
display functions. Used in 1st year CompSci at the ANU and UNSW. The library uses the GHC OpenGL binding,
but you won't have to worry about any of that. Get something cool on the screen in under 10 minutes.
Repa
Repa is a Haskell library that provides high performance, regular, multi-dimensional,
shape polymorphic parallel arrays. All numeric data is stored unboxed. Functions written
with the Repa combinators are automatically parallel provided you supply +RTS -Nwhatever
on the command line when running the program. Repa means "turnip" in Russian. If you don't
like turnips then this library probably isn't for you.
Collar Weights
Code and switching hardware for the Collar Weights mixed media installation.
Inside each of the collars are electroluminescent lamps that are programmed
to switch on, illuminating texts that become visible through the fabric.
Phrases from interviews with the owners of the collars are played.
With Alexandra Gillespie and Somaya Langley.
AMPLE - An Abstract Machine for Parallel Lazy Evaluation
An experimental environment that can be used to study the behavior of parallel
functional programs in terms of an abstract machine, without needing to
worry about details specific to a native implementation. Can
execute programs fully speculatively to determine the maximum
embodied parallelism in a piece of code.
full-speculation
with par/seq
Sunshine II RISC CPU Simulator
A simulator for a classic 5 stage pipelined RISC processor. Visualisation of pipeline
stalls, calculation of cpi, single step mode, breakpoints, instruction counts,
memory mapped file and console IO. Pipeline setup is easy to change.
High temperature superconducting microwave filters
Design and implementation of a filter intended to block interference that the
Australia Telescope Compact Array
was suffering from a nearby microwave distribution service (MDS). A summer vacation scholarship
position, supervised by Russell Gough and Graham Gay of the
Receivers Group.
HTS in fridge
Teaching
At UNSW:
At ANU:
Events
- 2012: Haskell (PC)
- 2011: HIW (PC co-chair),
ICALP (reviewer), HOSC (reviewer), JFP (reviewer)
- 2010: HIW (PC),
PLDI (reviewer), APLAS (reviewer)
- 2008: CC (reviewer)