Online / 5 & 6 February 2022


HPC from Python to Nim

A preliminary introduction to performance optimization

Please note: the purpose of this talk isn't to be an exploration of some new state-of-the-art way of doing performance optimization or some relatively unknown optimization techniques. This is a general introduction for people hopeing to use Nim for HPC that are coming from Python. Lots of emphasis will be put comparing the two languages.

Part 1 (2 min) - Introduction to myself. Describing a computationally expensive problem that I have experienced when working with Python. - My background is in data science and biology - Biologists tend to work with large datasets - One common problem we face is preprocessing of large amounts of data. A common technique used here using distance calculations - Why I decided to learn a different language Part 2 (1 min) - High level introduction to Nim - Nim is a statically compiled programming language - Etc... Part 3 (10 min) - Going through step-by-step on how to write performance optimal code with Nim. Describing common performance pitfalls that Python users may not be aware of. - Integer Types - Inlining Code - OpenArrays - Multi-threading (openmp) - Bounds checking - Compiler flags - Mathematical and algorithemic optimizations - Copy vs References Part 4 (3 min) - Benchmarks and closing statement - Show benchmark comparing the naive python numpy implementation with the highly optimized Nim one - Promote Nim :)


Ayman Al Baz