Publications and Software

This page contains a selection of my research papers, other publications, and some software. Both an abstract as well as an electronic version can be found on a separate page, when possible.

The copyright for the papers and other materials is held by the authors or by the publisher. The papers are provided for personal use only; other use requires the explicit permission of the copyright holder.

For connivence the following quick links are provided:

Books

OpenCL Programming Guide. Aaftab Munshi, Benedict R Gaster, Timothy G. Mattson, James Fung, Dan Ginsburg. Addison-Wesley Professional 2012.

Heterogeneous Computing with OpenCL. 1st Edition. Benedict R. Gaster, Lee Howes, David R. Kaeli, Perhaad Mistry & Dana Schaa. Morgan Kaufmann, 2011.

Heterogeneous Computing with OpenCL. 2nd Edition. Benedict R. Gaster, Lee Howes, David R. Kaeli, Perhaad Mistry & Dana Schaa. Morgan Kaufmann, November 2012.

Using Heterogeneous Parallel Architectures with OpenCL. Benedict R. Gaster, Udeepta Bordoloi, and Marc Romankewicz. Book chapter, Games Programming Gems 8. 2010.

Specifications

The OpenCL C++ Wrapper API, Version 1.1. Benedict R. Gaster. Khronos OpenCL Working Group, 2012.

Journals and Magazines

HRF-Relaxed: Adapting HRF to the complexities of industrial heterogeneous memory models. Benedict R. Gaster, Derek Hower, Lee Howes. To appear in the ACM Transactions on Architecture and Code Optimization, 2015.

Can GPGPU Programming Be Liberated from the Data-Parallel Bottleneck? Benedict R. Gaster and Lee Howes. IEEE Computer, pages 42-52, August 2012.

Compilation Techniques for High Level Parallel Code. Benedict R. Gaster, Tim Bainbridge, David Lacey, David Gardner. International Journal of Parallel Programming 38(1): 4-18 (2010).

Conferences

Heterogeneous-Race-Free Memory Models. Derek R. Hower, Bradford M. Beckmann, Benedict R. Gaster, Blake A. Hechtman, Mark D. Hill, Steven K. Reinhardt, and David A. Wood. ASPLOS’14 . To appear in The International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS). March 2014.

Twin peaks: a software platform for heterogeneous computing on general-purpose and graphics processors.Jayanth Gummaraju, Laurent Morichetti, Michael Houston, Ben Sander, Benedict R. Gaster, Bixia Zheng:  PACT 2010.

Efficient implementation of GPGPU synchronization primitives on CPUs. Jayanth Gummaraju, Ben Sander, Laurent Morichetti, Benedict R. Gaster, Lee W. Howes:  ACM Conference Computing Frontiers 2010.

Workshops

A Look at the OpenCL 2.0 Execution Model. Benedict R. Gaster. International Workshop on OpenCL (IWOCL’15). May 2015.

KMA: A Dynamic Memory Manager for OpenCL. Roy Spliet, Lee Howes, Benedict R. Gaster, and Ana Lucia Varbanescu. To appear in the Proceedings of the 7th Annual Workshop on General Purpose Processing with Graphics Processing Units (GPGPU 7). March 2014.

Sequential Consistency for Heterogeneous-Race-Free: Programmer-centric Memory Models for Heterogeneous Platforms. Derek R. Hower, Bradford M. Beckmann, Benedict R. Gaster, Blake A. Hechtman, Mark D. Hill, Steven K. Reinhardt, and David A. Wood. Workshop on Memory Systems Performance and Correctness (MSPC) June 2013.

Embedding OpenCL in GHC Haskell. Benedict R. Gaster and J. Garrett Morris. 1st International Workshop on OpenCL (IWOCL’13). May 2013.

The Programming Experience in a World of Energy Efficient Heterogeneous Computing. Benedict R. Gaster. Keynote 1st International Workshop on OpenCL (IWOCL) May 2013.

Formalizing Address Spaces with application to Cuda, OpenCL, and beyond. Benedict R. Gaster. Proceedings of the 6th Annual Workshop on General Purpose Processing with Graphics Processing Units (GPGPU 6). March 2013.

OpenCL C++. Benedict R. Gaster and Lee Howes. To appear in Proceedings of the 6th Annual Workshop on General Purpose Processing with Graphics Processing Units (GPGPU 6). March 2013.

Embedding OpenCL in GHC Haskell. Benedict R. Gaster and J. Garrett Morris. MULTIPROG’13. January 2013.

Can GPGPU Programming Be Liberated from the Data-Parallel Bottleneck? Benedict R. Gaster. Keynote at PLACES 2012.

Making GPGPU easier with OpenCL C++ and a flexible architecture. Benedict R. Gaster and Lee Howes. OpenGPU Workshop 2012, in conjunction with HIPEAC’12.

Streams: Emerging from a Shared Memory Model. Benedict R. Gaster.  IWOMP 2008.

Exploiting Loop-Level Parallelism for SIMD Arrays Using OpenMP. Con Bradley and Benedict R. Gaster. IWOMP 2007.

Revisiting SIMD Programming. Anton Lokhmotov, Benedict R. Gaster, Alan Mycroft, Neil Hickey, and David Stuttard. International Workshop on Languages and Compilers for Parallel Computing 2007.

Polymorphic Extensible Records for Haskell. Benedict R. Gaster. Haskell Workshop 1997.

Tutorials

OpenCL: An Introduction to Heterogeneous Programming for HPC. Benedict R. Gaster and Tim Mattson. SC’10.

Advanced Topics in Heterogeneous Programming with OpenCL. Benedict R. Gaster, Tim Mattson, Ian Buck, Peng Wang, Mike Houston. SC’10.

Topics in Heterogeneous Programming with OpenCL. Benedict R. Gaster, Lee Howes, Tim Mattson, Anton Lokhmotov. HIPEAC’11.

OpenCL an Introduction. Benedict R. Gaster, Tim Mattson, and Simon McIntosh-Smith. SC’11.

Heterogeneous Programming – A Tutorial. Benedict R. Gaster, Lee Howes, and Simon McIntosh-Simth. HIPEAC’12.

Heterogeneous System Architecture. Benedict R. Gaster and Lee Howes. To appear in HIPEAC’13.

Other publications

Building the Next Generation of Graphics and Compute Languages. Benedict R. Gaster. Talk at Euro LLVM Khronos track, April 2015.

An Execution Model for OpenCL 2.0. Benedict R. Gaster. Computer Sciences Technical Report 2014-02. 2014.

HRF-Relaxed: Adapting HRF to the complexities of industrial heterogeneous memory models. Benedict R. Gaster, Derek Hower, Lee Howes. Computer Sciences Technical Report 2014-01. 2014.

Liberating GPGPU Programming. Benedict R. Gaster. A lecture I gave for a graduate course  at CMU. October 2012.

An Overview of HSAIL. Norm Rubin and Benedict R. Gaster. AMD Fusion Developers Submit 2012.

OpenCL C++. Benedict R. Gaster and Mike Chu. AMD Fusion Developers Submit 2012.

The Fusion APU Architecture – A Programmers Perspective. Benedict R. Gaster and Lee Howes. AMD Fusion Developers Submit 2011.

Making OpenCL Simple with Haskell. Benedict R. Gaster. AMD Fusion Developers Submit 2011.

Interview at C++ and Beyond 2011 on C++11, C++ AMP, C++ Renaissance. Channel 9. 2011.

Kite: Braided Parallelism for Heterogeneous Systems. J. Garrett Morris, Benedict R. Gaster, and Lee Howes. Unpublished. 2010.

Rendering the breeze. Benedict R. Gaster and Yaki Tebeka. OpenCL BOF at SIGGRAPH 2010. A popular talk where I cover some of the games physics work I and others had done at AMD. (Much of this work in one way or another is now part of Bullet Physics.)

Records, variants, and qualified types. Benedict R. Gaster. PhD Thesis. 1998.

A Polymorphic Type System for Extensible Records and Variants. Benedict R. Gaster and Mark P. Jones. Nottingham University Technical report NOTTCS-TR-96-3. 1996.

Software

I have worked on many software projects, most of which are not open source and I cannot make publicly accessible. However, a couple of recent projects are included below and I hope more will appear in the future.

cl.hpp: Implementation of the OpenCL C++ Wrapper API with some additional features that make OpenCL programming simpler for the C++ programmer. Orignally developed by  myself but more recent versions have important contributions from Lee Howes (also at AMD). An informal introduction to the wrapper API is given in the book OpenCL Programming Guide (chapter 12).

Ocean: Implementation of an ocean simulation in OpenCL co-developed with Brian Sumner and Justin Hensley. This demonstration provides a nice example of the C++ Wrapper API and the implementation is described in the book OpenCL Programming Guide (chapter 18).

HLinda: Haskell implementation of the coordination language Linda. It is based on ideas from John Reppy’s book Concurrent Programming in ML and I used it as a way to introduce myself to Haskell’s STM implementation.

HOpenCL: a library to enable Haskell programmers to access the OpenCL APIs in an idiomatic fashion, eliminating much of the complexity of interacting with the OpenCL platform and providing stronger static guarantees than are possible in existing APIs. Developed by Garrett Morris and myself. There is also a paper on the implementation here.