HPC application development: Python
If you want to develop HPC applications using Python, you can consider following the
following training sessions.
graph TD
Python_for_beginners[Python for beginners] --> Python_for_programmers[Python for programmers]
Linux_intro[Linux introduction] --> HPC_intro[HPC introduction]
Python_for_programmers --> Scientific_Python[Scientific Python]
HPC_intro --> Python_for_HPC[Python for HPC]
Python_for_programmers --> Python_software_engineering[Python software engineering]
Version_control_with_git[Version control with Git] --> Python_software_engineering
Python_software_engineering --> Python_for_HPC
Scientific_Python --> Python_for_HPC[Python for HPC]
Python_for_HPC -. optional .-> Scientific_Cpp[Scientific C++]
Python_for_HPC -. optional .-> Python_on_GPUs[Python on GPUs]
Python_for_HPC -. optional .-> Parallel_programming_with_MPI[Parallel programming with MPI]
classDef optional fill:#f7f7f7,stroke:#777,stroke-dasharray: 4 4,color:#333
class Scientific_Cpp,Python_on_GPUs,Parallel_programming_with_MPI optional
click Version_control_with_git "https://gjbex.github.io/Version-control-with-git" "Version control with Git"
click Linux_intro "https://gjbex.github.io/Training-sessions/linux_intro" "Linux introduction"
click HPC_intro "https://gjbex.github.io/Training-sessions/hpc_intro" "HPC introduction"
click Python_for_beginners "https://gjbex.github.io/Python-for-beginners/" "Python for beginners"
click Python_for_programmers "https://gjbex.github.io/Python-for-programmers/" "Python for programmers"
click Python_software_engineering "https://gjbex.github.io/Python-software-engineering/" "Python software engineering"
click Scientific_Python "https://gjbex.github.io/Scientific-Python/" "Scientific Python"
click Python_for_HPC "https://gjbex.github.io/Python-for-HPC/" "Python for HPC"
click Scientific_Cpp "https://gjbex.github.io/Scientific-C-plus-plus/" "Scientific C++"
click Python_on_GPUs "https://gjbex.github.io/Python-on-GPUs/" "Python on GPUs"
click Parallel_programming_with_MPI "https://gjbex.github.io/Training-sessions/parallel_programming_with_mpi" "Parallel programming with MPI"
Dashed arrows indicate optional branches.
If you are new to programming, start with "Python for
beginners" to learn the basics.
This is a preparatory training session. To reach the level needed for the rest
of this path, continue with "Python for
programmers", which goes into
more detail and is the real starting point for HPC Python development. If you
already have programming experience in another language, you can start directly
with "Python for programmers".
Since you will be working on HPC systems, you should be familiar with the
"Linux introduction"
and "HPC introduction"
training sessions.
For scientific applications, continue with "Scientific
Python" to learn the core Python
libraries used for numerical and scientific computing.
For maintainable HPC Python applications, follow "Version control with
git" and "Python software
engineering". These
topics become important once your code needs to be shared, installed, tested,
documented, or reused.
"Python for HPC" is the central
training in this path. It focuses on writing efficient Python code for HPC
systems and on understanding when Python code should use optimized libraries,
parallel execution, or compiled extensions.
If you intend to interface Python with C++ code, you may want to follow
"Scientific C++" as an
optional branch.
If you want to use accelerators from Python, follow "Python on
GPUs". If your Python application
uses distributed-memory parallelism, follow "Parallel programming with
MPI".