It is a comprehensive guide for learning High-Performance Computing (HPC) using Python. It covers essential concepts and practical techniques to leverage Python for HPC tasks, including optimization, parallel programming, distributed computing, and GPU acceleration.
Key Topics Include:- Parallel Programming: Learn multiprocessing, mpi4py, and concurrent programming techniques.
- Distributed Computing: Explore distributed systems using Dask and related Python tools.
- GPU Acceleration: Utilize CUDA with Python for GPU computing, focusing on libraries like Numba for just-in-time (JIT) compilation.
- Low-Level Performance: Learn to optimize Python code using Numba and Cython for performance boosts by compiling Python code to machine code.
- Profiling and Optimization: Techniques to profile, analyze, and optimize your code for better performance on HPC systems.
- Real-World Examples: Practical examples to reinforce your understanding of HPC concepts.
- Bottlenecks
- Intro to IPython and Jupyter Notebooks
- Numy Intro
- Think Vector
- Profiling
- Debugging in Python
- Speeding up your code with Cython
- Numba, GPUs and CUDA
- Interactive Parallel Computing with IPython Parallel
- Numba Vectorize
- Introduction to Dask
- Introduction to MPI