24,121 research outputs found
PyCUDA and PyOpenCL: A Scripting-Based Approach to GPU Run-Time Code Generation
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 support 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.Comment: Submitted to Parallel Computing, Elsevie
Nmag micromagnetic simulation tool - software engineering lessons learned
We review design and development decisions and their impact for the open
source code Nmag from a software engineering in computational science point of
view. We summarise lessons learned and recommendations for future computational
science projects. Key lessons include that encapsulating the simulation
functionality in a library of a general purpose language, here Python, provides
great flexibility in using the software. The choice of Python for the top-level
user interface was very well received by users from the science and engineering
community. The from-source installation in which required external libraries
and dependencies are compiled from a tarball was remarkably robust. In places,
the code is a lot more ambitious than necessary, which introduces unnecessary
complexity and reduces main- tainability. Tests distributed with the package
are useful, although more unit tests and continuous integration would have been
desirable. The detailed documentation, together with a tutorial for the usage
of the system, was perceived as one of its main strengths by the community.Comment: 7 pages, 5 figures, Software Engineering for Science, ICSE201
- …