12-05, 17:00–17:30 (UTC), Data/ Data Science Track
The nvmath-python is a new way of delivering NVIDIA accelerated Math Libraries to Python users: researchers-practitioners, library and framework developers, and optimized GPU kernel developers. In this talk we will provide an introduction to the library design goals, its architecture, overview of the key features along with its usage examples.
Target audience:
* Researchers-practitioners using Python for scientific computing.
* Python library and framework developers seeking to reduce maintenance costs of underlying CUDA-enabled implementations.
* GPU kernels writers who want to write highly-optimized GPU kernels by staying with pythonic toolchain.
Prior experience:
Attendees should be familiar with Python and NumPy. No prior GPU programming experience is required.
Details:
The nvmath-python is a natural evolution of NVIDIA CUDA math libraries to Python. With Python researchers-practitioners and library and framework developers in mind, who care about productivity and performance, and want to stay with pythonic toolchain whenever possible, the nvmath-python is bringing a convenient abstraction of the complex native CUDA toolchain, when scaling an application from CPU to GPU, from single GPU to multiple GPUs, from a single node to many nodes. All with close-to-native performance.
The library interoperates with existing Python CPU and GPU libraries and frameworks, which allows its natural integration into existing workflows with small code changes to get even better performance.
Not being tied to NumPy APIs, the nvmath-python provides more efficient implementations of core math operations accelerated by respective native CUDA math libraries.
In addition to traditional pre-compiled CUDA math libraries, the nvmath-python also leverages the power of NVIDIA's C++ header-only libraries. By providing integration with popular JIT compilers (such as Numba) the nvmath-python enables device kernel writers to just-in-time-compile custom kernels based on the nvmath-python core operations.
The nvmath-python provides a choice of APIs that suit different needs of Python users: (a) low-level bindings for the most versatile and "close-to-metal" pythonic access to the respective native CUDA libraries, (b) stateless APIs for the most simplistic high-level pythonic abstractions, and (c) stateful APIs for high-level workflows that require controlling the operation planning, autotuning, and execution.
The last but not least, the nvmath-python supports both CPU and GPU execution spaces. It is designed to scale from a CPU-only interactive environment to GPUs from minimum code changes. It also supports an intuitive model of scaling the application from a single CPU-GPU to multiple CPUs-GPUs.
Each of the above concepts will be illustrated by examples with performance charts.
Previous knowledge expected
Sergey Maydanov is a Senior Software Engineering Manager at NVIDIA leading the nvmath-python product engineering. Throughout his career, Sergey led math library projects targeting CPU and GPU accelerated transcendental and special functions, statistical and machine learning algorithms, and random number generators.