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_1.tar.gz(79 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_1
Distribution format: tar.gz
Journal reference: Comput. Phys. Commun. 185(2014)3065
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.

Does the new version supersede the previous version?: Yes

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.

Reasons for new version:
The reason for this version is to make the library more portable.

Summary of revisions:
The first version of the library relied on the presence of a C interface to the BLAS library (CBLAS). This new version gives priority to a Fortran BLAS implementation when a Fortran compiler is provided during the configuration process. Some minor changes have also been made, including an improved Doxygen documentation, fixed installation when using CUDA, and fixed other minor bugs.

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