I currently work at Google New York, on the Cloud Platform. I have also
launched a 20% project called Jsonnet. My work
address is dcunnin@google.com.
I have served on the program committees for ADMS2014 and the external
review committee for PPoPP2015.
Previously I worked for IBM at the TJ Watson research lab, New York. I was
part of the X10 group. I have worked on the
X10 compiler and runtime. For example, code generation for the C++ backend,
aspects of the C++ runtime, including an abstraction layer for
low-level high performance network APIs. I maintained the type system. I lead
the work on the X10 to CUDA compiler, and the runtime extensions to allow the
running of X10 programs on the GPU. I also lead the Resilient X10 project.
I completed my PhD at Imperial
College London under Susan
Eisenbach and Sophia
Drossopoulou, part of the SLURP
group. My work focussed on concurreny primitives for object
oriented languages. Particularly, 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
-
Resilient X10: Efficient failure-aware programming
- David Cunningham, David Grove, Benjamin Herta, Arun Iyengar, Kiyokuni Kawachiya,
Hiroki Murata, Vijay Saraswat, Mikio Takeuchi, Olivier Tardieu
- PPoPP 2014
- Also: Presentation
-
X10 and APGAS at Petascale
-
Olivier Tardieu,
Benjamin Herta,
David Cunningham,
David Grove,
Prabhanjan Kambadur,
Vijay Saraswat,
Avraham Shinnar,
Mikio Takeuchi,
Mandana Vaziri
- PPoPP 2014
-
M3R: Increased Performance For In-Memory Hadoop Jobs
- Avraham Shinnar, David Cunningham, Benjamin Herta, Vijay Saraswat
- VLDB 2012
-
Object Initialization in X10
- Yoav Zibin, David Cunningham, Igor Peshansky, Vijay Saraswat
- ECOOP 2012
- Also: Presentation and pdf version
-
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 (original workshop paper)
- 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. At one point, I single-handedly fixed an air traffic control radar!
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.
-
Image processing and photography: I recently released an image processing tool based on Lua called LuaImg.
-
Anything else that's technical
Misc links