Skip to main content

Python is making inroads into the HPC landscape. However, writing Python code for efficient scientific computing is not entirely trivial. In this course a  variety of techniques and libraries will be discussed that are useful in this context. Subjects covered include profiling of code to discover opportunities  for optimization, using Cython, a Python extension that translate critical code sections into efficient C, wrapping C/C++/Fortran libraries in Python,  multithreaded/multiprocess Python, distributed programming use mpi4py, and pySpark for data science. 

Learning Objectives

  • have an understanding of the architecture and features of GPGPUs,
  • be able to transfer data between the host and the GPGPU device,
  • be able to do linear algebra computations on GPGPUs using scikit-cuda,
  • be able to generate random numbers on a GPGPU using curand,
  • be able to define your own kernels to run on GPGPUs,
  • use numba to generate kernels to run on GPGPUs,
  • run machine learning algorithms on GPGPUs,
  • speed up data science tasks using Rapids.