Elsevier Science Home
Computer Physics Communications Program Library
Full text online from Science Direct
Programs in Physics & Physical Chemistry
CPC Home

[Licence| Download | New Version Template] aesa_v1_0.tar.gz(92 Kbytes)
Manuscript Title: A C++11 implementation of arbitrary-rank tensors for high-performance computing
Authors: Alejandro M. Aragón
Program title: cpp-array
Catalogue identifier: AESA_v1_0
Distribution format: tar.gz
Journal reference: Comput. Phys. Commun. 185(2014)1681
Programming language: C++.
Computer: All modern architectures.
Operating system: Linux/Unix/Mac OS.
RAM: Problem dependent
Keywords: C++, C++11, arbitrary-rank tensors, template metaprogramming, generic programming, expression templates, BLAS.
PACS: 02.10.Ud, 02.10.Yn.
Classification: 5.

External routines: GNU CMake build system and BLAS implementation. NVIDIA CUBLAS for GPU computing.

Nature of problem:
Tensors are a basic building block for any program in scientific computing. Yet, tensors are a built-in component of the C++ programming language.

Solution method:
An arbitrary-rank tensor class template is crafted by using the new features introduced by the C++11 set of requirements. In addition, an entire expression template facility is built on top, to provide mathematical straightforward notation without damaging performance.

Running time:
Problem dependent. The tests provided take only seconds. The examples take approximately 15 minutes.