[目次] [1ページ目] [前ページ] [次ページ] [質疑応答]
(12/27)

キャッシュデータの再利用度を高める例である。
修正前のコードはベクトル計算機向けのコードでよく見られるように、作業配列に全ての次元分の計算結果を格納したのち、これを全次元分回転する別のループで参照するものである。作業配列が大きくループの回転範囲が大きいとき、キャッシュからデータがあふれ、作業配列を参照するループではキャッシュ上からデータを再利用することができない、あるいは再利用できる可能性が低い。
計算内容はIとJ各次元について独立であり、次元Jの特定値について定義し、その結果を参照したのち、次のJについて繰り返す手順が可能である。そこで、作業配列定義部と参照部分のJループを融合し、I次元だけのサブセットを単位に処理を行うことによって、キャッシュからのデータあふれを回避し、再利用を促進させることができる。このとき、作業配列は二次元である必要はなく、また二次元のままでは、J次元の推移によってキャッシュ上を全てスウィープし、キャッシュミスヒットを引き起こすため、次元縮小によってこれを回避することができる。


[目次] [1ページ目] [前ページ] [次ページ] [質疑応答]