Maximizing Cache Memory Usage for Multigrid Algorithms - Douglas, Craig C.; Hu, Jonathan; Iskandarani, Mohamed; Kowarschik, Markus; Rüde, Ulrich; Weiß, Christian (Numerical Treatment of Multiphase Flows in Porous Media. Proc. of the Int. Workshop held at Beijing, China, August 2–6, 1999, 2000)
<p class="Para" style="border: 0px; font-stretch: inherit; font-size: 13px; line-height: 1.6; font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; margin: 0px; padding: 0px; vertical-align: baseline; outline: 0px; width: 580px; color: rgb(51, 51, 51);"> Computers today rely heavily on good utilization of their cache memory subsystems. Compilers are optimized for business applications, not scientific computing ones, however. Automatic tiling of complex numerical algorithms for solving partial differential equations is simply not provided by compilers. Thus, absolutely terrible cache performance is a common result. <p class="Para" style="border: 0px; font-stretch: inherit; font-size: 13px; line-height: 1.6; font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; margin: 0.5em 0px 0px; padding: 0px; vertical-align: baseline; outline: 0px; width: 580px; color: rgb(51, 51, 51);"> Multigrid algorithms combine several numerical algorithms into a more complicated algorithm. In this paper, an algorithm is derived that allows for data to pass through cache exactly once per multigrid level during a V cycle before the level changes. This is optimal cache usage for large problems that do not fit entirely in cache. The numerical techniques and algorithms discussed in this paper can be easily applied to numerical simulation of fluid flows in porous media.
UnivIS-Import:2015-04-16:Pub.2000.tech.IMMD.lsinfs.maximi
Keywords: multigrid; cache; threads; sparse matrix; iterative methods; domain decomposition; compiler optimization