TY - CHAP
T1 - GPU Scripting and Code Generation with PyCUDA
AU - Klöckner, Andreas
AU - Pinto, Nicolas
AU - Catanzaro, Bryan
AU - Lee, Yunsup
AU - Ivanov, Paul
AU - Fasih, Ahmed
N1 - Funding Information:
AK's research was partially funded by AFOSR under contract number FA9550-07-1-0422, through the R/NSSEFF Program Award FA9550-10-1-0180 and also under contract DEFG0288ER25053 by the Department of Energy. NP's research was partially funded by the Rowland Institute of Harvard, the NVIDIA Graduate Fellowship, and the National Science Foundation (IIS 0963668). The opinions expressed are the views of the authors. They do not necessarily reflect the official position of the funding agencies.
PY - 2012
Y1 - 2012
N2 - A common lament in the field of scientific computing concerns the ever-widening gap between hypothetical machine capabilities and the effort an individual programmer is able to spend to move a computational application towards exploiting a machine to the full extent of its capability. More sophisticated tools, compilers, and libraries are generally hoped to level this field, enabling users to achieve good results even with modest investment. PyCUDA is a contribution to the tools for graphics processing unit (GPU) computing. PyCUDA has a two-fold aim. First, it aims to simplify the usage of existing basic concepts of CUDA C. Importantly, it does not attempt to change or reinvent the basic notions of GPU programming, but instead, as a foundation for further tools, just exposes them as is through a carefully engineered interface. Key features of this interface include generous use of sensible defaults, automatic error checking, and automatic resource management. Second, and strictly on top of the first, basic layer, PyCUDA provides abstractions that support a number of very common usage patterns involving a GPU equivalent of NumPy arrays. Although PyCUDA gives the user access to a compiled language (CUDA C), it attempts to avoid the development iteration penalty commonly associated with compiled languages, instead retaining the satisfaction and immediacy of scripting. PyCUDA and PyOpenCL, as open-source projects, thrive on user feedback, particularly feedback regarding limitations, bugs, or missing features that users encounter.
AB - A common lament in the field of scientific computing concerns the ever-widening gap between hypothetical machine capabilities and the effort an individual programmer is able to spend to move a computational application towards exploiting a machine to the full extent of its capability. More sophisticated tools, compilers, and libraries are generally hoped to level this field, enabling users to achieve good results even with modest investment. PyCUDA is a contribution to the tools for graphics processing unit (GPU) computing. PyCUDA has a two-fold aim. First, it aims to simplify the usage of existing basic concepts of CUDA C. Importantly, it does not attempt to change or reinvent the basic notions of GPU programming, but instead, as a foundation for further tools, just exposes them as is through a carefully engineered interface. Key features of this interface include generous use of sensible defaults, automatic error checking, and automatic resource management. Second, and strictly on top of the first, basic layer, PyCUDA provides abstractions that support a number of very common usage patterns involving a GPU equivalent of NumPy arrays. Although PyCUDA gives the user access to a compiled language (CUDA C), it attempts to avoid the development iteration penalty commonly associated with compiled languages, instead retaining the satisfaction and immediacy of scripting. PyCUDA and PyOpenCL, as open-source projects, thrive on user feedback, particularly feedback regarding limitations, bugs, or missing features that users encounter.
UR - http://www.scopus.com/inward/record.url?scp=84882519979&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84882519979&partnerID=8YFLogxK
U2 - 10.1016/B978-0-12-385963-1.00027-7
DO - 10.1016/B978-0-12-385963-1.00027-7
M3 - Chapter
AN - SCOPUS:84882519979
SN - 9780123859631
SP - 373
EP - 385
BT - GPU Computing Gems Jade Edition
PB - Elsevier Inc.
ER -