Seminar

Tuesday, January 27, 2026 10:30 am - 12:00 pm EST (GMT -05:00)

Bandicoot: Efficient GPU linear algebra via C++ template metaprogramming

Math Faculty Computing Facility

Presents:

Dr. Ryan Curtin

Tuesday, January 27, 2026

10:30am - 12:00pm DC 1302

R.S.V.P to mfcfhelp@uwaterloo.ca

"Bandicoot: Efficient GPU linear algebra via C++ template metaprogramming"

 

Abstract:

 

It's not too much of a stretch to say that linear algebra is the backbone of modern computational science; by that token, efficiency is of paramount importance.  For over 15 years, the Armadillo C++ linear algebra library has provided efficient linear algebra implementations via template metaprogramming, using expression templates and delayed evaluation techniques (which were originally developed at Waterloo in the late 90s!).  Recently, the Bandicoot project introduced the same techniques for GPU linear algebra using an Armadillo-compatible API for easy drop-in usage.  Bandicoot is not specific to particular hardware; it can be used with any CUDA or OpenCL device, and additional backends (HIP/ROCm, Metal, Vulkan) are actively being developed.  Bandicoot is able to both optimize linear algebra expressions at compile-time in the same way Armadillo can, and also generate efficient GPU kernel code with fused optimizations.  I will discuss each of these optimizations, how they all fit together into Bandicoot, and show how existing Armadillo applications can be easily adapted to the GPU with Bandicoot.

 

Bio:

 

Dr. Ryan Curtin is an independent researcher and open-source software developer, leading the development and maintenance of several packages in the C++ scientific software ecosystem.  During his Ph.D. at Georgia Tech he focused on the formalization of dual-tree algorithms, a class of geometric branch-and-bound algorithms that can be used to solve subproblems relevant to machine learning techniques.  These algorithms underlie the efficient mlpack C++ machine learning library, which he has led since 2010.  In his free time, he races go-karts, so he never escapes from trying to go fast in one way or another.