I currently work for IBM at the TJ Watson research lab, New York. I am part of
the X10 group. I have worked on the X10
compiler and runtime. In particular I have worked on various aspects of code
generation for the C++ backend. I have worked on native C++ code for the
runtime, including an abstraction
layer for low-level high performance network APIs. I have also worked
on the X10 to CUDA compiler, and the runtime extensions to allow the running of
X10 programs on the GPU.
I recently completed my PhD (thesis here) at
Imperial College London under Susan
Eisenbach and Sophia
Drossopoulou, part of the SLURP
group. My work has focussed on concurrent language primitives for object
oriented languages. Particularly I have been working on implementing atomic
sections with lock inference. I have been fortunate to work with Khilan Gudka on this subject.
I have also looked at ownership types and their application to static detection
of race conditions / atomicity violations. In my MSc thesis, I tried to
formally compare the expressiveness of languages using locks/monitors and
message passing for synchronisation.
Research Interests
-
Programming Language Design: Interesting new features, adding power,
keeping simplicity, things that make programming easier, and things that get in the
way.
-
Programming Language Implementation: All the dirty stuff - compilers,
linking, garbage collection, useful analyses, optimisations.
-
Static analysis / Static Type Systems: I like the term "semantic
modelling" for this kind of topic, which can be used to solve so many problems.
There is a fascinating trade-off between precision and termination, that goes
right to the heart of what it means to compute. Abstract interpretation is my
favourite theory in computer science.
-
Lock-free programming & Memory Models: I see this as a hard way of
writing really optimised concurrent code for a very particular purpose.
-
Logic: I've done proofs when it was valuable to do so. I'm interested
in theorem provers and ways of doing proofs more easily. I've used
Isabelle/HOL and proofgeneral.
Publications
-
A Performance Model for X10 Applications
- David Grove, Olivier Tardieu, David Cunningham, Ben Herta, Igor Peshansky, Vijay Saraswat
- X10 2011
- Also: Presentation
-
Object Initialization in X10
- Yoav Zibin, David Cunningham, Igor Peshansky, Vijay Saraswat
- X10 2011
- Also: Presentation
-
GPU Programming in a High Level Language: Compiling X10 to CUDA
- David Cunningham, Rajesh Bordawekar, Vijay Saraswat
- X10 2011
- Also: Presentation
-
The asynchronous partitioned global address space model
- Vijay Saraswat, George Almasi, Ganesh Bikshandi, Calin Cascaval, David Cunningham, David Grove, Sreedhar Kodali, Igor Peshansky, Olivier Tardieu
- AMP 2010
-
Lock Inference Proven Correct
- David Cunningham, Sophia Drossopoulou, Susan Eisenbach
- FTfJP 2008
- Also: Presentation
- Also: Proof
-
Keep Off The Grass: Locking the Right Path for Atomicity
- David Cunningham, Khilan Gudka, Susan Eisenbach
- Compiler Construction 2008
- Lecture Notes in Computer Science
- Also: Presentation
-
Universe Types for Race Safety
- David Cunningham, Sophia Drossopoulou, Susan Eisenbach
- VAMP 07
- pp.20–51
- September, 2007
- Also: Presentation
- Also: Proof
-
Universe Types for Topology and Encapsulation
- David Cunningham, Werner Dietl, Sophia Drossopoulou, Adrian Francalanza,
Peter Müller, Alexander Summers
- Formal Methods for Components (LNCS Journal Special Issue Article)
- 2008
Unpublications and Miscellaneous Talks
Teaching
I have supported tutorials for the courses "Advanced Issues in Object Oriented
Programming", "Program Analysis", and "Models of Concurrent Computation". I
have tutored discrete maths to a small group of 1st year undergraduates under
the responsibility of Sophia Drossopoulou.
Background
I have programmed for as long as I can remember.
When I grew up on the Isle of Wight, I played with BBC Basic, then Visual
Basic. I had little reference material, no Internet connection, and knew no
other programmers. When I finally got connected in my mid-teens, I discovered
Java and didn't miss Basic much. Straight after school I went to Warwick University where I learnt SML,
Prolog, C, and almost certainly some other things that I will not detail here.
I lived in Coventry and didn't miss the Isle of Wight much, but I still wasn't
getting enough car crime and concrete so upon completion I moved to London
where I did the Advanced MSc at Imperial, and finally started a PhD. While
doing my BSc at Warwick, I was sponsored by (and worked during summer holidays
at) AMS
which was a joint venture between BAE Systems and Finmeccanica (it no longer
exists). I did various things including Ada programming and digital hardware
work.
General Technical Interests
These are things that have mainly come up out of work or hobbies, i.e. not
related to my research:
-
Professional audio and real-time concurrent programming: For a while I
was interested in the Jack project and
Linux pro audio (which is probably more capable than you think).
-
High performance 3D graphics: For several years I have been writing a
computer game engine, which has its own website (and community). The game
engine is called the Grit Game Engine.
-
Most other things
Misc links