Note: This version of the seminar is specifically tailored to the Vanderbilt Scientific Computing 3260 course and some slides/materials may pertain specifically to this course or the ACCRE facility.
This repository contains materials for a two-part seminar on introducing python and its use in HPC. They are intended to be delivered in a seminar, and so not all materials may be coherently readable on their own.
These are materials for a two-part seminar introducing python to an audience generally familiar with high-performance computing and parallel programming, but with potentially little to no experience in python.
The first part introduces some features of the python language and multiprocessing tools available in the standard library of the reference implementation. Issues of general performance and unsuitability for scientific computing are discussed.
The second part introduces some commonly used scientific libraries starting with numpy, and explores how these extensions provide a framework for parallel, high-performance computation. Some examples of machine learning libraries are also presented. The seminar concludes with an introduction to Jupyter notebooks and some plotting libraries.
Outline:
- Benefits of python / why use python?
- General features of the python language
- Inner workings and performance
- Multithreading and multiprocessing examples
- A few words on concurrency
Resource Links:
- Official Python Tutorial
- Python Standard Library Reference keep this under your pillow
- Dive into Python
- Automate the Boring Stuff with Python
- Python Essential Reference (book, not free)
- Fluent Python (book, not free, advanced)
- PyNash Python User Group
- PyTN Conference
- PyOhio Conference
- Django Girls Tutorial (en)
Outline:
- Packaging and distributing libraries, pip, PyPI, Anaconda
- Introduction to numpy
- Revisiting part one multiprocessing examples with numpy
- A quick tour of some scientific libraries
- Jupyter notebooks and literate programming
- Making pretty and interactive plots
Resource Links:
- Python on ACCRE
- PyPI / Warehouse (the cheese shop)
- Downloading conda
- SciPy.org (numpy, scipy, pandas, matplotlib, ...)
- Numpy Tutorial
- Auto-Scaling Scikit-learn (capstone idea)
- Tensorflow Playground