
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.