headshot

Nathan Chong

I am a research associate at UCL. My research interests are parallel programming, computer architecture and formal reasoning. Specifications and problems at the hardware/software boundary get me excited. My previous work in this area include proofs of correctness for cache-coherence protocols, memory models and formalising architectural specifications. My PhD focused on scalable verification techniques for data-parallel programs.

I have a background in industry as a research engineer at ARM where I worked on hardware and software at many levels of the system stack.

Thesis

ICT Pioneers, June 2014

I was very fortunate to take part in the EPSRC ICT Pioneers 2014 competition. The core message of my talk was about the need and opportunity for static verification to provide powerful tools to help programmers write better programs. For more information about GPUVerify check out our main webpage and these introductory tutorials and videos.

Tools

I am a key contributor to GPUVerify, a verification technique and tool for the automatic analysis of GPU kernels written in OpenCL and CUDA. At ARM I developed prototypes and tools for CPU virtualisation (now found in the ARMv7 architecture), cache coherence verification (now in AMBA4 ACE) and instruction set simulators (the Cortex-M1 simulator shipped in RVDS).

I am an advocate of repeatable and reproducible research that enables other researchers to build upon my work. The accompanying artifact to my OOPSLA'13 paper was approved by the OOPSLA evaluation committee and allows others to use GPUVerify and repeat the experimental evaluation given in my paper. I recently served on the PLDI 2014 artifact evaluation committee and POPL 2015 artifact evaluation committee.

Papers