I am Ben van Werkhoven, a computer scientist and research software engineer. My main research interest is in optimization, performance modeling, and using Graphics Processing Units (GPUs) for scientific computing. I use GPUs to accelerate computations in many different research projects that span a wide range of scientific disciplines.
One of the things I enjoy the most in my work is building tools that solve problems I have experienced firsthand, and use those tools to become more effective in my daily work.
You can find my publication list here.
GPU Computing is the practice of using Graphics Processing Units for computations other than graphics.
However, developing GPU applications requires computations to be parallelized using specialized programming languages, and achieving high performance requires that you understand the underlying hardware.
As such, I’ve been researching how we can make it easier for other people to use GPUs for their computations. Other research topics that interest me are auto-tuning, performance modeling, and source-to-source translation.
My PhD thesis (finished in October 2014) is titled “Scientific Supercomputing with Graphics Processing Units”.
More recently, in 2020, I’ve published a paper on the lessons learned in a decade of research software engineering GPU applications.
I’ve created Kernel Tuner to make it as simple as possible to auto-tune and test CUDA and OpenCL kernels using simple Python scripts.
While Kernel Tuner is designed to be easy to use, I want it to be a comprehensive auto-tuning toolbox. To this end, Kernel Tuner supports many advanced use cases, such as tuning parameters in both host and device code, a large selection of optimization algorithms, and using code generators.
Kernel Tuner is open source and welcomes contributions, check it out on GitHub!
Analytical performance models aim to capture the performance of a system in a set of simple rules or formulas. These models are typically easy to use and can provide a lot of insight into the performance of applications.
I’ve created an analytical performance model that allows developers to estimate CPU-GPU data transfer times and predict the best performing method for overlapping those transfers with GPU Computations.
You can read more about it here.
I am one of the founding members of the Netherlands Research Software Engineer community (NL-RSE). Since April 2017, the community has grown rapidly to 200+ members from 35+ institutes within the Netherlands.
I’m also an active member of the international RSE movement by participating
in steering or program committees of various conferences and events. In 2020, I’m involved in the organization of:
• the fifth conference on Research Software Engineering RSECon2020 (cancelled),
• RSE-HPC-2020 Supercomputing workshop,
• International Series of Online Research Software Events (SORSE),
• and the 2nd Intl. RSE Leaders Workshop.
Some of my blog posts related to the RSE movement are available on nl-rse.org.