کد مقاله کد نشریه سال انتشار مقاله انگلیسی نسخه تمام متن
501997 863675 2014 16 صفحه PDF دانلود رایگان
عنوان انگلیسی مقاله ISI
A C++11 implementation of arbitrary-rank tensors for high-performance computing
موضوعات مرتبط
مهندسی و علوم پایه شیمی شیمی تئوریک و عملی
پیش نمایش صفحه اول مقاله
A C++11 implementation of arbitrary-rank tensors for high-performance computing
چکیده انگلیسی

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.Program summaryProgram title: cpp-arrayCatalogue identifier: AESA_v1_0Program summary URL:http://cpc.cs.qub.ac.uk/summaries/AESA_v1_0.htmlProgram obtainable from: CPC Program Library, Queen’s University, Belfast, N. IrelandLicensing provisions: GNU General Public LicenseNo. of lines in distributed program, including test data, etc.: 11 698No. of bytes in distributed program, including test data, etc.: 94 363Distribution format: tar.gzProgramming language: C++.Computer: All modern architectures.Operating system: Tested on Linux and Mac OS.RAM: Problem dependentClassification: 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 not 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 min.

ناشر
Database: Elsevier - ScienceDirect (ساینس دایرکت)
Journal: Computer Physics Communications - Volume 185, Issue 6, June 2014, Pages 1681–1696
نویسندگان
,