PyCUDA and PyOpenCL: A scripting-based approach to GPU run-time code generation
By Andreas Klöckner, Nicolas Pinto, Yunsup Lee, Bryan Catanzaro, Paul Ivanov, Ahmed Fasih. Parallel Computing, 2009
581 citations recorded by the source corpus.
High-performance computing has recently seen a surge of interest in heterogeneous systems, with an emphasis on modern Graphics Processing Units (GPUs). These devices offer tremendous potential for performance and efficiency in important large-scale applications of computational science. However, exploiting this potential can be challenging, as one must adapt to the specialized and rapidly evolving computing environment currently exhibited by GPUs. One way of addressing this challenge is to embrace better techniques and develop tools tailored to their needs. This article presents one simple technique, GPU run-time code generation (RTCG), along with PyCUDA and PyOpenCL, two open-source toolkits that supports this technique. In introducing PyCUDA and PyOpenCL, this article proposes the combination of a dynamic, high-level scripting language with the massive performance of a GPU as a compelling two-tiered computing platform, potentially offering significant performance and productivity advantages over conventional single-tier, static systems. The concept of RTCG is simple and easily implemented using existing, robust infrastructure. Nonetheless it is powerful enough to support (and encourage) the creation of custom application-specific tools by its users. The premise of the paper is illustrated by a wide range of examples where the technique has been applied with considerable success.
Subfields: Computer Networks and Communications, Hardware and Architecture
View Paper: https://www.semanticscholar.org/paper/d57b42821ec782b33dd49ee0c37976bbd62d24a4
How researchers see this paper
The researchers whose trusted networks rank it highest, strongest advocate first. Every researcher gets a different order.
In Computer Networks and Communications
In Hardware and Architecture
Citations in the corpus
- PyFR: An open source framework for solving advection-diffusion type problems on streaming architectures using the flux reconstruction approach (2013, methodology): “Currently the templating engine can generate C / OpenMP to target CPUs, and CUDA (via the PyCUDA wrapper [18]) to target Nvidia GPUs.”
- The fast azimuthal integration Python library: pyFAI (2015, methodology): “PyOpenCL remains an optional dependency; therefore all OpenCL code features a Python or Cython implementation as well.”
- Study of the B0 → ρ(770)°K*(892)0 decay with an amplitude analysis of B0 → (π+π−)(K+π−) decays (2018, methodology): “The Ipanema framework is implemented using pyCUDA [43] and serves as interface to minimisation algorithms other than Minuit.”
- MEG and EEG data analysis with MNE-Python (2013, methodology): “The FFTs used to implement FIR filters can also be efficiently computed on the graphical processing unit (GPU) via CUDA and PyCUDA (Klöckner et al., 2012), further reducing the execution time.”
- Nengo: a Python tool for building large-scale functional brain models (2014, methodology): “To show that model creation and simulation are fully decoupled, we have also implemented an OpenCL simulator that uses PyOpenCL to parallelize computations on GPUs and multicore CPUs.”