Easily Accelerate your code through LLVM and Python.
Submitted by Sourav Singh (@thelucifer) on Thursday, 31 August 2017
Technical level: Intermediate
Numba is an Anaconda sponsored project which aims to speed up Python code through JIT compilation to an optimized machine code using LLVM, avoiding the GIL altogether and without switching languages or interpreters. Numba also supports the compilation and running of code on a GPU using CUDA and allows for accelrating the code by just adding a few modifications to the existing Python code, namely by adding
from numba import jit and adding an
@jit decorator to the function which needs to be optimized.
The talk will discuss about various approaches to use for speeding up the run-time of a Python function or class(JIT, CUDA, Vectorization), comparisons between Numba and existing Python compilers like Cython and Caveats and Gotchas in numba, which can create problems for the programmer while writing code using Numba.
By the end of the talk, the audience will get an understanding of how to speed up your Python applications without switching Interpreters or making major modifications to the code as well as writing code so that the application can make use of GPU memory for faster computations.
Recent Blog posts on Numba- https://devblogs.nvidia.com/parallelforall/seven-things-numba/
The talk will discuss the following-
1)The architecture of the Numba.
2)The process of compilation of Python code into LLVM machine code.
3)The various approaches for optimizing your code for speed(JIT, GPU, Vectorization).
4)Caveats and Gotchas for Numba.
The talk will also focus on differences between Numba and the various Python compilers like Cython, PyPy, f2py and compare the performance of code with the various Python compilers/interpreters.
The slides are currently WIP and are undergoing improvements.
A small understanding of compiler infrastructure is needed to understand the architecture of the Numba and understanding of generators would be required to understand the Numba code.
1) I am currently involved with Lernr Project and have been working with Python for 3+ years, certified as a
Software Carpentry Instructor and one of the organizers of Django Girls Bangalore.
2) I have contributed to Biopython, Galaxy Project, bioconda and conda-forge communities.
3) My interests are in the field of Bioinformatics, High-Performance Computing and Game Theory.