Chapter 5. High-performance Computing
In this chapter, we will cover the following topics:
- Accelerating pure Python code with Numba and Just-In-Time compilation
- Accelerating array computations with Numexpr
- Wrapping a C library in Python with ctypes
- Accelerating Python code with Cython
- Optimizing Cython code by writing less Python and more C
- Releasing the GIL to take advantage of multi-core processors with Cython and OpenMP
- Writing massively parallel code for NVIDIA graphics cards (GPUs) with CUDA
- Writing massively parallel code for heterogeneous platforms with OpenCL
- Distributing Python code across multiple cores with IPython
- Interacting with asynchronous parallel tasks in IPython
- Parallelizing code with MPI in IPython
- Trying the Julia language in the notebook