Talks

GPU metaprogramming using PyCUDA: methods and applications

Andreas Klöckner

PhD candidate, Division of Applied Mathematics, Brown University



Abstract

  1. Writing reliable GPU codes that achieve peak performance in the face of changing requirements and hardware platforms can be a challenging task.  

  2. In this talk, I will introduce the open-source PyCUDA toolkit, which, aside from being a Python language binding for CUDA, enables easy run-time code  generation and empirical optimization as a solution to these concerns. PyCUDA covers "small-scale" and "large-scale" uses alike: It allows quick prototyping and experimentation, but it also integrates easily into large-scale computational software. Further, PyCUDA can generate code for many common operations, saving debugging and coding time.

  3. Having introduced the toolkit, I will show how a high-order discontinuous Galerkin finite element solver uses GPU metaprogramming to provide high performance across dimensions, equation types, and discretizations.  I will also discuss a recent effort seeking to automate the writing of high-performance GPU code for a large class of computational kernels.


About the speaker

  1. Andreas Klöckner obtained his Diplom Degree from the University of Karlsruhe, Germany.  He now works under Professor Jan Hesthaven at Brown University on the simulation of plasma physics.

  2. He has also been a prolific developer of scientific software, most notably of PyCUDA, which makes the Nvidia CUDA compute abstractions accessible from Python.  It also contains a GPU-based array package and building blocks for common vectorial and reductive operations.  PyCUDA is available under the MIT license.