Comparison of Python GPU implementations of eigensolvers

Abstract

Python implementations of GPU-based eigensolvers were tested and evaluated. The performance of PyCUDA and scikit-cuda library functions for Python were used and compared to the corresponding ones from the NumPy library. Despite GPU-based cuBLAS routines being faster than their usual NumPy equivalents on the consumer-level hardware used, cuSOLVER function implementations have longer execution times than the NumPy functions. Two Python variants of the tridiagonalization step of the Lanczos algorithm were tested with cuBLAS functions and we showed that a hybrid CPU-GPU approach resulted in an algorithm that was both fast and stable. However, the presented algorithms are still slower than the highly optimized NumPy eigensolver and further optimizations are needed to obtain GPU acceleration in our Python-based eigensolver.