22. 22 KYOTO UNIVERSITY
行列積の例
例:9x9 行列積(B = 3, M = 27)
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT
MISS
HIT
右側の行列がめちゃくちゃ MISS する
解決策:
1. ループの順序交換(今回は省略)
2. 行列のブロック化
43. 43 KYOTO UNIVERSITY
CO はキャッシュの構造を知らなくてもキャッシュ活用する
Cache-Conscious: キャッシュの存在を意識して設計する
Cache-Aware(普通)
キャッシュの構造を知った上で設計する
先程のブロックサイズ R を M に合わせる例
↕
Cache-Oblivious(縛りプレイ)
キャッシュの構造を知らずに設計する
知らないなりに頑張る
B, M がどのような値でもいい感じになるように頑張る
Cache-Oblivious アルゴリズムができたら、そもそも B, M を使って
いないので、どんなコンピュータでも、どのキャッシュ階層でも早くなる
このページは https://www.slideshare.net/iwiwi/cacheoblivious-dsirnlp5 の表現をお借りしました。
One Fits All
69. 69 KYOTO UNIVERSITY
van Emde Boas 配置
どこかの再帰のタイミングで全部分木がキャッシュブロックに収まる
どこで収まったかはプログラム自身は気づいていないが、とにかく収まる
...
サイズ √n
サイズ √n
...
ディスク
...
...
1 ブロック (B) が
このくらいなら
このノードにアクセスした瞬間▲が
1 miss で全て読み込まれる
70. 70 KYOTO UNIVERSITY
van Emde Boas 配置
どこかの再帰のタイミングで全部分木がキャッシュブロックに収まる
どこで収まったかはプログラム自身は気づいていないが、とにかく収まる
...
サイズ √n
サイズ √n
...
ディスク
...
...
1 ブロック (B) が
このくらいなら
このノードにアクセスした瞬間▲が
1 miss で全て読み込まれる
71. 71 KYOTO UNIVERSITY
van Emde Boas 配置
どこかの再帰のタイミングで全部分木がキャッシュブロックに収まる
どこで収まったかはプログラム自身は気づいていないが、とにかく収まる
...
サイズ √n
サイズ √n
...
ディスク
...
...
1 ブロック (B) が
このくらいなら
▲のサイズは
√B 以上 B 以下
高さは Θ(log B)
このノードにアクセスした瞬間▲が
1 miss で全て読み込まれる
72. 72 KYOTO UNIVERSITY
van Emde Boas 配置は最適
●にアクセスするとき、訪れる▲の個数は log n / log B 個
→ キャッシュミスは O(log n / log B) 回 → 最適!
...
ディスク
1 ブロック (B) が
このくらいなら
▲のサイズは
√B 以上 B 以下
高さは Θ(log B)
log
n
log
B
73. 73 KYOTO UNIVERSITY
van Emde Boas はディスクを平方分割して解決
(復習)この問題の難しさ:
分割統治の分岐を B を用いて決定したいが、
Cache-Oblivious 設定では B が利用できない
van Emde Boas 配置では論理的なデータ構造は分岐数 2 を用いる
(これで時間計算量は従来のデータ構造と同じになる)
一方、ディスクの配置の上では √n 分岐を行う
これにより Cache-Oblivious 最適性を達成
なぜ? → log√B n = O(logB n) だから
大胆にサイズ減らすので問題サイズが √B まで小さくなりうるが
log の底にかかる限り問題ない
cf. 行列積のときは半々にしてたので問題サイズは最適の半分以上
74. 74 KYOTO UNIVERSITY
Cache-Oblivious Algorithms. FOCS 1999 (Trans. Alg. 2012).
元論文。行列積・FFT・ソートなどこの時点で既に充実している。
Cache-Oblivious Algorithms. Master Thesis 1999.
考案者の一人 Harald Prokop の修士論文。
より豊富な問題と解説が載っている。
Cache-Oblivious Algorithms and Data Structures. BRICS 2002.
Erik Demaine による Cache-Oblivious の解説。
6.851: Advanced Data Structures
Erik Demaine の大学講義。L07-L09 が Cache-Oblivious について。
http://courses.csail.mit.edu/6.851/spring21/lectures/
アルゴリズムの解析ではマスター定理を多用するので、
馴染みのない人は先に勉強しておくことをおすすめします。
https://en.wikipedia.org/wiki/Master_theorem_(analysis_of_algorithms)
さらに詳しく知りたい人へ