Применение сеточно-операторного подхода для эффективной реализации явных разностных схем

2021 ◽  
Vol 33 (2) ◽  
pp. 20-40
Author(s):  
Михаил Михайлович Краснов ◽  
Mikhail Mikhailoivch Krasnov ◽  
Владислав Александрович Балашов ◽  
Vladislav Aleksandrovich Balashov ◽  
Евгений Борисович Савенков ◽  
...  
Keyword(s):  

Настоящая работа посвящена описанию применения сеточного-операторного подхода к программированию, который позволяет, с одной стороны, кратко записывать математические формулы над сеточными функциями в текстах программ за счeт использования программных сеточных операторов, аналогичных математическим операторам, а с другой стороны, легко, практически простой перекомпиляцией, переносить программы на графические ускорители CUDA. Сеточно-операторный подход к программированию широко использует шаблоны выражений (expression templates), основанные на метапрограммировании шаблонов языка C++, для программной реализации сеточных операторов. Сеточные операторы могут быть применены к сеточным выражениям для создания новых сеточных выражений. Такой подход позволяет рекурсивно строить сеточные выражения любой сложности. Фактически вычисления запускаются только при присваивании сеточного выражения сеточной функции, до этого цепочка вычислений просто запоминается в сеточном выражении. Таким образом, реализуется концепция отложенных вычислений. В данной работе показывается, как данный подход может быть использован для реализации достаточно сложного алгоритма, использующего сеточные функции на разных элементах сетки (ячейках, вершинах, гранях). За счeт использования сеточных операторов программная реализация достаточно сложных формул становится на столько же прозрачной, как соответствующие математические выражения.

2012 ◽  
Vol 10 (4) ◽  
Author(s):  
J Progsch ◽  
Y Ineichen ◽  
A Adelmann

Vector operations play an important role in high performance computing and are typically provided by highly optimized libraries that implement the Basic Linear Algebra Subprograms (BLAS) interface. In C++ templates and operator overloading allow the implementation of these vector operations as expression templates which construct custom loops at compile time and providing a more abstract interface. Unfortunately existing expression template libraries lack the performance of fast BLAS implementations. This paper presents a new approach - Statically Accelerated Loop Templates (SALT) - to close this performance gap by combining expression templates with an aggressive loop unrolling technique. Benchmarks were conducted using the Intel C++ compiler and GNU Compiler Collection to assess the performance of our library relative to Intel's Math Kernel Library as well as the Eigen template library. The results show that the approach is able to provide optimization comparable to the fastest available BLAS implementations, while retaining the convenience and flexibility of a template library.


2012 ◽  
Vol 34 (2) ◽  
pp. C42-C69 ◽  
Author(s):  
Klaus Iglberger ◽  
Georg Hager ◽  
Jan Treibig ◽  
Ulrich Rüde

Sign in / Sign up

Export Citation Format

Share Document