English

Automatic generation of CUDA code performing tensor manipulations using C++ expression templates

Mathematical Software 2018-04-27 v1 General Relativity and Quantum Cosmology

Abstract

We present a C++ library, TLoops, which uses a hierarchy of expression templates to represent operations upon tensorial quantities in single lines of C++ code that resemble analytic equations. These expressions may be run as-is, but may also be used to emit equivalent low-level C or CUDA code, which either performs the operations more quickly on the CPU, or allows them to be rapidly ported to run on NVIDIA GPUs. We detail the expression template and C++-class hierarchy that represents the expressions and which makes automatic code-generation possible. We then present benchmarks of the expression-template code, the automatically generated C code, and the automatically generated CUDA code running on several generations of NVIDIA GPU.

Cite

@article{arxiv.1804.10120,
  title  = {Automatic generation of CUDA code performing tensor manipulations using C++ expression templates},
  author = {Adam G. M. Lewis and Harald P. Pfeiffer},
  journal= {arXiv preprint arXiv:1804.10120},
  year   = {2018}
}

Comments

46 pages, 5 figures

R2 v1 2026-06-23T01:37:06.102Z