GPU development with Python 101

Writing GPU code in Python is easier today than ever!

Jacob Tomlinson

Beginners GPU Learning Open-Source Software Design

I joined NVIDIA in 2019 and I was brand new to GPU development. In that time, I’ve gotten to grips with the fundamentals of writing accelerated code in Python. I was amazed to discover that I didn’t need to learn C++ and I didn’t need new development tools. Writing GPU code in Python is easier today than ever, and in this tutorial, I will share what I’ve learned and how you can get started with accelerating your code.

The first half of this training will take the form of a traditional tutorial. We will work through various materials and examples to get you started with GPU development in Python using open source libraries.

This material will cover:
- What is a GPU and why is it different to a CPU?
- An overview of the CUDA development model.
- Numba: A high performance compiler for Python.
- Writing your first GPU code in Python.
- Managing memory.
- Understanding what your GPU is doing with pyNVML (memory usage, utilization, etc).
- RAPIDS: A suite of GPU accelerated data science libraries.
- Working with Numpy style arrays on the GPU.
- Working with Pandas style dataframes on the GPU.
- Performing some scikit-learn style machine learning on the GPU.

In the second half, I will be joined by a colleague Graham Markall who is experienced in Python GPU development and we will work through a variety of programming challenges together to demonstrate how to think about developing for a GPU when tackling your day-to-day problems.

Tentative schedule:
- Intro to GPUs (20 mins)
- Writing low level GPU code in Python with Numba (30 mins)
- Inspecting your GPU usage with pyNVML (10 mins)
- Writing high level GPU code in Python with RAPIDS (30 mins)
- Collaborative solving of programming challenges on the GPU in Python (90 mins)

Attendees will be expected to have a general knowledge of Python and programming concepts, but no GPU experience will be necessary. Our key takeaway for attendees will be the knowledge that they don’t have to do much differently to get their code running on a GPU.

Type: Training (180 mins); Python level: Beginner; Domain level: Beginner


Jacob Tomlinson

NVIDIA

Jacob Tomlinson is a senior Python software engineer at NVIDIA with a focus on deployment tooling for distributed systems. His work involves maintaining open source projects including RAPIDS and Dask.

RAPIDS is a suite of GPU accelerated open-source Python tools that mimic APIs from the PyData stack including those of Numpy, Pandas and SciKit-Learn.

Dask provides advanced parallelism for analytics with out-of-core computation, lazy evaluation and distributed execution of the PyData stack.

He also tinkers with the open-source chatbot automation framework Opsdroid in his spare time. Jacob volunteers with the local tech community group Tech Exeter and lives in Exeter, UK.