Padding

From Einstein Toolkit Documentation
Jump to: navigation, search

Array padding means that one allocates an array that is slightly larger than necessary. The additional elements remain unused. However, they modify the memory access pattern and can improve performance by (implicitly) changing the way the array elements are assigned to cache elements. One typically observes that arrays sizes that are powers of two lead to performance degradation.

As test application, this program accesses data stored in an array with a 3x3x3 stencil. The particular operation chosen in a Gaussian smoothing, accumulating the result in a scalar that is output to screen. However, this implementation is memory access bound.

Here https://docs.einsteintoolkit.org/et-docs/Image:padding.cc is the source code.