A C++11 implementation of arbitrary-rank tensors for high-performance computing
Abstract
This article discusses an efficient implementation of tensors of arbitrary rank by using some of the idioms introduced by the recently published C++ ISO Standard (C++11). With the aims at providing a basic building block for high-performance computing, a single Array class template is carefully crafted, from which vectors, matrices, and even higher-order tensors can be created. An expression template facility is also built around the array class template to provide convenient mathematical syntax. As a result, by using templates, an extra high-level layer is added to the C++ language when dealing with algebraic objects and their operations, without compromising performance. The implementation is tested running on both CPU and GPU.
- Publication:
-
arXiv e-prints
- Pub Date:
- September 2012
- DOI:
- 10.48550/arXiv.1209.1003
- arXiv:
- arXiv:1209.1003
- Bibcode:
- 2012arXiv1209.1003A
- Keywords:
-
- Computer Science - Mathematical Software;
- 97N80;
- 97N60;
- D.1.5;
- D.2.3;
- D.3.3;
- G.4
- E-Print:
- 21 pages, 6 figures, 1 table