2018 Volume 2018 Pages 20180012
In this paper, High Performance Design Pattern is introduced. It is a design pattern dedicated for HPC environment, to implement an abstract data type of relatively small-size as a library using C, C++ and Fortran. Each data entity of the abstract type is actually represented as a set of scalar variables, and each associated procedure is implemented as a pre-processor macro, rather than an ordinary function or a subroutine. As an example, a vector, tensor and small-sized matrix library, AutoMT, is re-implemented based on this design pattern, and the performance benchmark using this highly tuned version is demonstrated.