Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
2014/01/11 @ DSIRNLP 5

Cache-Oblivious
データ構造入門
秋葉 拓哉 (@iwiwi)
アウトライン
1. B-Tree が何故使われるのか? (復習)

2. Cache-Oblivious の考え方と意義
3. Cache-Oblivious 探索木 (vEB Layout)
4. 世の中の Cache-Oblivious 事...
MySQL の索引のデータ構造は?
http://dev.mysql.com/doc/refman/5.1/ja/mysql-indexes.html

Cache-Oblivious データ構造入門 (@iwiwi)

!!!
4
MySQL の索引のデータ構造は?

B-Tree!
MySQL に限らず多くのデータベースシステムは
B-Tree を使います

Cache-Oblivious データ構造入門 (@iwiwi)

5
MySQL の索引のデータ構造は?

なんで B-Tree?
普通の二分探索木じゃだめ?

Cache-Oblivious データ構造入門 (@iwiwi)

6
なぜ B-Tree?

と
http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Memory_module_DDRAM_20-03-2006.jpg

http:/...
なぜ B-Tree
メモリは高速
でも小さい
ディスクは遅い
でも大きい
大規模なデータベースは
ディスクに保存されていて
メモリに読み込みながら処理をする.
Cache-Oblivious データ構造入門 (@iwiwi)

8
B-Tree のデータ構造
普通の二分探索木

B-Tree

多分木になってる
(最大の分岐数 m)

Cache-Oblivious データ構造入門 (@iwiwi)

9
なぜ B-Tree の方が良いか?
大事な前提(若干雑)
1. ディスクの読み込み時間 >> 計算時間
2. ディスクである箇所を読み込むと周辺も含
めてそこそこ大きく読まれる

前提より
• ディスクを読み込む回数だけを考える
– 普段の議論...
データの探索にかかる I/O 回数
二分探索木
• 𝑂 log 𝑛 回
一回の I/O で 2 分岐

B-Tree
• 𝑂 log 𝐵 𝑛 回

一回の I/O で Θ(𝐵) 分岐!

↑ノードのサイズをブロックサイズ 𝐵に合わせる

B-T...
このように

ディスクとメモリを使うなら
そのことを意識したデータ構造を
使う必要がある!

Cache-Oblivious データ構造入門 (@iwiwi)

12
ちなみに
メモリとキャッシュメモリ間でも
似たようなことを考えないといけない
より一般に,「メモリ階層」を意識しないといけない
(↓こういうやつ)
レジスタ
L1
L2
L3
メモリ
ディスク
テープ?

Cache-Oblivious データ...
Cache-Oblivious とは

Cache-Oblivious データ構造入門 (@iwiwi)

14
Cache-Oblivious

Cache-oblivious = キャッシュを忘れて
Cache-Oblivious データ構造入門 (@iwiwi)

15
Cache-Oblivious

えっ!?

忘れてしまうの?
Cache-Oblivious データ構造入門 (@iwiwi)

16
Cache-Oblivious

えっ!?

忘れてしまうの?
Cache-Oblivious データ構造入門 (@iwiwi)

17
Cache-Aware vs. Cache-Oblivious
Cache-Aware = 普通
ブロックのサイズ 𝐵 を事前に
知っていて,それを使ってデータ構造を設計する
(例:B-Tree)

Cache-Oblivious = 縛りプレ...
Cache-Aware vs. Cache-Oblivious
計算機の動きの前提は同じ
• 読み込みの回数を計算量とする
• 一回に 𝐵 バイト読み込まれる

やりたいことも同じ (例:探索木)
ただし,Cache-Oblivious データ...
Cache-Oblivious でない例
B-Tree は Cache-Oblivious ではない

↑ノードのサイズをブロックに合わせる

ブロックサイズ 𝐵 を知らないと
何分木にしていいかわからない!
ブロックサイズ 𝐵 を使ってデータ...
なんでそんなことをするのか?
Cache-Oblivious データ構造の利点

1つめ:
ブロックサイズに合わせたパラメータ調整を環境
ごとに行う必要がない!
ポータブル,手軽に使える

Cache-Oblivious データ構造入門 (@i...
なんでそんなことをするのか?
Cache-Oblivious データ構造の利点

2つめ:
全てのメモリ階層ギャップに最適化される
• ディスク ⇔ メモリ・・・ 𝐵Mem
• メモリ ⇔ キャッシュ・・・𝐵Cache
どんな 𝐵 の値でも性能...
なんでそんなことをするのか?
Cache-Oblivious データ構造の利点

2つめ:
全てのメモリ階層ギャップに最適化される
データの大きさによってボトルネックは変わる
• メモリに収まる? → 𝐵Cache
• 収まらない? → 𝐵Me...
そんな都合の良いものが作れるの?
作れるんです!

Cache-Oblivious データ構造入門 (@iwiwi)

24
Cache-Oblivious 探索木
(vEB Layout)
Cache-Oblivious データ構造入門 (@iwiwi)

25
二分探索木があります

Cache-Oblivious データ構造入門 (@iwiwi)

26
以降,三角形を二分探索木と思って下さい

Cache-Oblivious データ構造入門 (@iwiwi)

27
でかい二分探索木をイメージして下さい

𝑛 ノード

Cache-Oblivious データ構造入門 (@iwiwi)

28
このツリーをディスクによさげに保存する

𝑛 ノード

高さ
ℎ = log 2 𝑛

ディスク
Cache-Oblivious データ構造入門 (@iwiwi)

29
高さがだいたい半分のところで切る

高さ ℎ/2

Cache-Oblivious データ構造入門 (@iwiwi)

30
上半分は約

𝒏 ノードの木になる

約 𝒏
ノード

Cache-Oblivious データ構造入門 (@iwiwi)

高さ ℎ/2

31
切れ目(=上半分の木の葉)には約

𝒏 ノード

約 𝑛
ノード

約

𝒏

Cache-Oblivious データ構造入門 (@iwiwi)

32
下半分にぶら下がってる木も約

𝒏 ノード

約 𝑛
ノード

高さ ℎ/2

約 𝑛
ノード

Cache-Oblivious データ構造入門 (@iwiwi)

33
それが約

𝒏 個ある

約 𝑛
ノード

…… 約

𝑛
ノード

……
約

𝒏個

Cache-Oblivious データ構造入門 (@iwiwi)

34
約 𝒏 ノード × 約 𝒏 個

𝑇0
……

𝑇1 𝑇2

𝑇

Cache-Oblivious データ構造入門 (@iwiwi)

𝑛

35
それぞれの木を連続部分に保存!

𝑇0
……

𝑇1 𝑇2

ディスク

𝑇0

𝑇

𝑇1
Cache-Oblivious データ構造入門 (@iwiwi)

𝑛

𝑇2

…

𝑇

𝑛

36
それぞれの木はどうやって保存?

約 𝒏
ノード

ディスク
Cache-Oblivious データ構造入門 (@iwiwi)

37
それぞれの木はどうやって保存?

約 𝒏
ノード

再帰的に同じことをする!
またこのツリーを上下に分割

ディスク
Cache-Oblivious データ構造入門 (@iwiwi)

38
こうやってツリーを保存することを

vEB Layout

𝑇0

(vEB = Van Emde Boas)
と呼びます

……

𝑇1 𝑇2

ディスク

𝑇0

𝑇

𝑇1
Cache-Oblivious データ構造入門 (@iwiwi)...
vEB Layout の性質
Cache-Oblivious である!
再帰してるだけ.ブロックサイズ 𝐵 は出てこなかった.
𝐵 を全く知らずに構築したのに……なんと

要素の探索が I/O 𝑂 log 𝐵 𝑛 回でできる!
↑
𝑩 を知って...
vEB Layout の性質
Cache-Oblivious である!
再帰してるだけ.ブロックサイズ 𝐵 は出てこなかった.
𝐵 を全く知らずに構築したのに……なんと

要素の探索が I/O 𝑂 log 𝐵 𝑛 回でできる!
↑
𝑩 を知って...
計算量
𝑶 𝐥𝐨𝐠

𝑩

𝒏 回の読み込みでできる理由

ツリーのサイズ:𝑛,

𝑛, 4 𝑛, 8 𝑛, 16 𝑛, … …

いつかサイズは 𝐵 以下になる
そしてその時,少なくとも

𝐵

サイズが 𝐵 以下になったら一気に読み込まれる...
ちなみに:Cache-Oblivious 関係ない話
木でこういう分割をするのは,
vEB Tree というデータ構造でも使う
vEB Tree はキーの値の範囲の条件下で
• 検索が 𝑶 𝐥𝐨𝐠 𝐥𝐨𝐠 𝒏 時間
でできるおもしろデータ構造で...
世の中の Cache-Oblivious 事例

Cache-Oblivious データ構造入門 (@iwiwi)

44
他の Cache-Oblivious データ構造・アルゴリズム

データ構造
• 動的な探索木 (CO B-Tree)

– さっきのは静的な木だったので実際に動的にしようと思うと
もっと複雑なものが必要

• 順位キュー
• リスト
• ……...
Cache-Oblivious は本当に実用的か?
利点もあるけど,浸透しにくい
問題点1:
複雑すぎる物が多い
理論屋さんがオーダー記法での計算量だけを考えて作っている実装し
たくないものが多い

問題点2:
Cache-Aware に中々勝...
事例

TokuDB
MySQL, MariaDB 用ストレージエンジン

Fractal Tree™ Index なるものを使うらしい

Cache-Oblivious データ構造入門 (@iwiwi)

47
Fractal Tree™ Index
Wikipedia

公式

Cache-Oblivious データ構造入門 (@iwiwi)

48
事例

𝑇0
……

𝑇1 𝑇2

𝑇

𝑛

確かにフラクタルっぽい(?)
(※実際には Fractal Tree Index は vEB Layout より複雑なことをしています)

Cache-Oblivious データ構造入門 (@iw...
論文 (MIT CSAIL)
Cache-Oblivious Streaming B-trees
Michael A. Bender, Martin Farach-Colton, Jeremy T. Fineman, Yonatan
Fogel...
論文 (MIT CSAIL)
Cache-Oblivious Streaming B-trees
Michael A. Bender, Martin Farach-Colton, Jeremy T. Fineman, Yonatan
Fogel...
使っているっぽい雰囲気?
TokuDB の公式サイトにあるスライド

http://www.tokutek.com/wp-content/uploads/2011/11/how-fractal-trees-work.pdf

Cache-Obl...
まとめ
• メモリ階層を意識したデータ構造

• Cache-Oblivious の考え方
• 基礎的テク:ツリーの vEB Layout
• 世の中の事例と課題
ありがとうございましたm(__)m
Cache-Oblivious データ構造入...
おまけ:van Emde Boas の発音

https://www.youtube.com/watch?v=AjFtTQevtq0#t=14m15

Peter van Emde Boas と友人である Erik D. Demaine (MI...
謝辞
@kumagi さんのご意見をもとに発表時からスライド
を改訂しています,ありがとうございます.
@tmaehara さんに “van Emde Boas” さんの発音情報
を教えてもらいました,ありがとうございます.

Cache-Ob...
Upcoming SlideShare
Loading in …5
×

Cache-Oblivious データ構造入門 @DSIRNLP#5

15,384 views

Published on

Published in: Technology
  • Hi there! I just wanted to share a list of sites that helped me a lot during my studies: .................................................................................................................................... www.EssayWrite.best - Write an essay .................................................................................................................................... www.LitReview.xyz - Summary of books .................................................................................................................................... www.Coursework.best - Online coursework .................................................................................................................................... www.Dissertations.me - proquest dissertations .................................................................................................................................... www.ReMovie.club - Movies reviews .................................................................................................................................... www.WebSlides.vip - Best powerpoint presentations .................................................................................................................................... www.WritePaper.info - Write a research paper .................................................................................................................................... www.EddyHelp.com - Homework help online .................................................................................................................................... www.MyResumeHelp.net - Professional resume writing service .................................................................................................................................. www.HelpWriting.net - Help with writing any papers ......................................................................................................................................... Save so as not to lose
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating for everyone is here: ♥♥♥ http://bit.ly/2u6xbL5 ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating direct: ❶❶❶ http://bit.ly/2u6xbL5 ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • If you want to download or read this book, Copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full EPUB Ebook here { https://urlzs.com/UABbn } ......................................................................................................................... ...................................ALL FOR EBOOKS................................................. Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Cache-Oblivious データ構造入門 @DSIRNLP#5

  1. 1. 2014/01/11 @ DSIRNLP 5 Cache-Oblivious データ構造入門 秋葉 拓哉 (@iwiwi)
  2. 2. アウトライン 1. B-Tree が何故使われるのか? (復習) 2. Cache-Oblivious の考え方と意義 3. Cache-Oblivious 探索木 (vEB Layout) 4. 世の中の Cache-Oblivious 事例 Cache-Oblivious データ構造入門 (@iwiwi) 3
  3. 3. MySQL の索引のデータ構造は? http://dev.mysql.com/doc/refman/5.1/ja/mysql-indexes.html Cache-Oblivious データ構造入門 (@iwiwi) !!! 4
  4. 4. MySQL の索引のデータ構造は? B-Tree! MySQL に限らず多くのデータベースシステムは B-Tree を使います Cache-Oblivious データ構造入門 (@iwiwi) 5
  5. 5. MySQL の索引のデータ構造は? なんで B-Tree? 普通の二分探索木じゃだめ? Cache-Oblivious データ構造入門 (@iwiwi) 6
  6. 6. なぜ B-Tree? と http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Memory_module_DDRAM_20-03-2006.jpg http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Hdd_medalist.jpg があるから Cache-Oblivious データ構造入門 (@iwiwi) 7
  7. 7. なぜ B-Tree メモリは高速 でも小さい ディスクは遅い でも大きい 大規模なデータベースは ディスクに保存されていて メモリに読み込みながら処理をする. Cache-Oblivious データ構造入門 (@iwiwi) 8
  8. 8. B-Tree のデータ構造 普通の二分探索木 B-Tree 多分木になってる (最大の分岐数 m) Cache-Oblivious データ構造入門 (@iwiwi) 9
  9. 9. なぜ B-Tree の方が良いか? 大事な前提(若干雑) 1. ディスクの読み込み時間 >> 計算時間 2. ディスクである箇所を読み込むと周辺も含 めてそこそこ大きく読まれる 前提より • ディスクを読み込む回数だけを考える – 普段の議論:「O(ほげ) 時間」 – 今回の議論:「ディスクI/O 𝑂(ほげ) 回」 • 一度に読み込まれるサイズを 𝐵 とおく Cache-Oblivious データ構造入門 (@iwiwi) 10
  10. 10. データの探索にかかる I/O 回数 二分探索木 • 𝑂 log 𝑛 回 一回の I/O で 2 分岐 B-Tree • 𝑂 log 𝐵 𝑛 回 一回の I/O で Θ(𝐵) 分岐! ↑ノードのサイズをブロックサイズ 𝐵に合わせる B-Tree のほうが log 𝐵 倍ぐらい早い これは平気で 10 倍とかになるので大違い! Cache-Oblivious データ構造入門 (@iwiwi) 11
  11. 11. このように ディスクとメモリを使うなら そのことを意識したデータ構造を 使う必要がある! Cache-Oblivious データ構造入門 (@iwiwi) 12
  12. 12. ちなみに メモリとキャッシュメモリ間でも 似たようなことを考えないといけない より一般に,「メモリ階層」を意識しないといけない (↓こういうやつ) レジスタ L1 L2 L3 メモリ ディスク テープ? Cache-Oblivious データ構造入門 (@iwiwi) 13
  13. 13. Cache-Oblivious とは Cache-Oblivious データ構造入門 (@iwiwi) 14
  14. 14. Cache-Oblivious Cache-oblivious = キャッシュを忘れて Cache-Oblivious データ構造入門 (@iwiwi) 15
  15. 15. Cache-Oblivious えっ!? 忘れてしまうの? Cache-Oblivious データ構造入門 (@iwiwi) 16
  16. 16. Cache-Oblivious えっ!? 忘れてしまうの? Cache-Oblivious データ構造入門 (@iwiwi) 17
  17. 17. Cache-Aware vs. Cache-Oblivious Cache-Aware = 普通 ブロックのサイズ 𝐵 を事前に 知っていて,それを使ってデータ構造を設計する (例:B-Tree) Cache-Oblivious = 縛りプレイ ブロックのサイズ 𝐵 を知らないことにする! 知らないなりに頑張る 𝐵 がどんな値であったとしてもいい感じになるよう頑 張る ※本当はメモリサイズ 𝑀 というパラメータもあって,同様にそれも知らない ことにする.今回は出てこないので省略 Cache-Oblivious データ構造入門 (@iwiwi) 18
  18. 18. Cache-Aware vs. Cache-Oblivious 計算機の動きの前提は同じ • 読み込みの回数を計算量とする • 一回に 𝐵 バイト読み込まれる やりたいことも同じ (例:探索木) ただし,Cache-Oblivious データ構造は 𝑩 の値を使ってはいけない (つまり𝐵の値を事前に知らない) Cache-Oblivious データ構造入門 (@iwiwi) 19
  19. 19. Cache-Oblivious でない例 B-Tree は Cache-Oblivious ではない ↑ノードのサイズをブロックに合わせる ブロックサイズ 𝐵 を知らないと 何分木にしていいかわからない! ブロックサイズ 𝐵 を使ってデータ構造を設計している Cache-Oblivious データ構造入門 (@iwiwi) 20
  20. 20. なんでそんなことをするのか? Cache-Oblivious データ構造の利点 1つめ: ブロックサイズに合わせたパラメータ調整を環境 ごとに行う必要がない! ポータブル,手軽に使える Cache-Oblivious データ構造入門 (@iwiwi) 21
  21. 21. なんでそんなことをするのか? Cache-Oblivious データ構造の利点 2つめ: 全てのメモリ階層ギャップに最適化される • ディスク ⇔ メモリ・・・ 𝐵Mem • メモリ ⇔ キャッシュ・・・𝐵Cache どんな 𝐵 の値でも性能が出る → どこのギャップに関しても良い性能! Cache-Oblivious データ構造入門 (@iwiwi) 22
  22. 22. なんでそんなことをするのか? Cache-Oblivious データ構造の利点 2つめ: 全てのメモリ階層ギャップに最適化される データの大きさによってボトルネックは変わる • メモリに収まる? → 𝐵Cache • 収まらない? → 𝐵Mem 扱うデータのサイズによらず高性能なプログラム にできる Cache-Oblivious データ構造入門 (@iwiwi) 23
  23. 23. そんな都合の良いものが作れるの? 作れるんです! Cache-Oblivious データ構造入門 (@iwiwi) 24
  24. 24. Cache-Oblivious 探索木 (vEB Layout) Cache-Oblivious データ構造入門 (@iwiwi) 25
  25. 25. 二分探索木があります Cache-Oblivious データ構造入門 (@iwiwi) 26
  26. 26. 以降,三角形を二分探索木と思って下さい Cache-Oblivious データ構造入門 (@iwiwi) 27
  27. 27. でかい二分探索木をイメージして下さい 𝑛 ノード Cache-Oblivious データ構造入門 (@iwiwi) 28
  28. 28. このツリーをディスクによさげに保存する 𝑛 ノード 高さ ℎ = log 2 𝑛 ディスク Cache-Oblivious データ構造入門 (@iwiwi) 29
  29. 29. 高さがだいたい半分のところで切る 高さ ℎ/2 Cache-Oblivious データ構造入門 (@iwiwi) 30
  30. 30. 上半分は約 𝒏 ノードの木になる 約 𝒏 ノード Cache-Oblivious データ構造入門 (@iwiwi) 高さ ℎ/2 31
  31. 31. 切れ目(=上半分の木の葉)には約 𝒏 ノード 約 𝑛 ノード 約 𝒏 Cache-Oblivious データ構造入門 (@iwiwi) 32
  32. 32. 下半分にぶら下がってる木も約 𝒏 ノード 約 𝑛 ノード 高さ ℎ/2 約 𝑛 ノード Cache-Oblivious データ構造入門 (@iwiwi) 33
  33. 33. それが約 𝒏 個ある 約 𝑛 ノード …… 約 𝑛 ノード …… 約 𝒏個 Cache-Oblivious データ構造入門 (@iwiwi) 34
  34. 34. 約 𝒏 ノード × 約 𝒏 個 𝑇0 …… 𝑇1 𝑇2 𝑇 Cache-Oblivious データ構造入門 (@iwiwi) 𝑛 35
  35. 35. それぞれの木を連続部分に保存! 𝑇0 …… 𝑇1 𝑇2 ディスク 𝑇0 𝑇 𝑇1 Cache-Oblivious データ構造入門 (@iwiwi) 𝑛 𝑇2 … 𝑇 𝑛 36
  36. 36. それぞれの木はどうやって保存? 約 𝒏 ノード ディスク Cache-Oblivious データ構造入門 (@iwiwi) 37
  37. 37. それぞれの木はどうやって保存? 約 𝒏 ノード 再帰的に同じことをする! またこのツリーを上下に分割 ディスク Cache-Oblivious データ構造入門 (@iwiwi) 38
  38. 38. こうやってツリーを保存することを vEB Layout 𝑇0 (vEB = Van Emde Boas) と呼びます …… 𝑇1 𝑇2 ディスク 𝑇0 𝑇 𝑇1 Cache-Oblivious データ構造入門 (@iwiwi) 𝑛 𝑇2 … 𝑇 𝑛 39
  39. 39. vEB Layout の性質 Cache-Oblivious である! 再帰してるだけ.ブロックサイズ 𝐵 は出てこなかった. 𝐵 を全く知らずに構築したのに……なんと 要素の探索が I/O 𝑂 log 𝐵 𝑛 回でできる! ↑ 𝑩 を知ってて作った B-Tree と性能が一致! (オーダー記号に隠れた定数倍を除いて) (𝐵 : ブロックのサイズです ← 忘れた人むけ) Cache-Oblivious データ構造入門 (@iwiwi) 40
  40. 40. vEB Layout の性質 Cache-Oblivious である! 再帰してるだけ.ブロックサイズ 𝐵 は出てこなかった. 𝐵 を全く知らずに構築したのに……なんと 要素の探索が I/O 𝑂 log 𝐵 𝑛 回でできる! ↑ 𝑩 を知ってて作った B-Tree と性能が一致! (オーダー記号に隠れた定数倍を除いて) 最悪の場合でも I/O 回数は (𝐵 : ブロックのサイズですlog 𝐵 𝑛 回 2 + 4 ← 忘れた人むけ) Cache-Oblivious データ構造入門 (@iwiwi) 41
  41. 41. 計算量 𝑶 𝐥𝐨𝐠 𝑩 𝒏 回の読み込みでできる理由 ツリーのサイズ:𝑛, 𝑛, 4 𝑛, 8 𝑛, 16 𝑛, … … いつかサイズは 𝐵 以下になる そしてその時,少なくとも 𝐵 サイズが 𝐵 以下になったら一気に読み込まれる → 結局多分木みたいに動作する( Ω 𝐵 分木) Cache-Oblivious データ構造入門 (@iwiwi) 42
  42. 42. ちなみに:Cache-Oblivious 関係ない話 木でこういう分割をするのは, vEB Tree というデータ構造でも使う vEB Tree はキーの値の範囲の条件下で • 検索が 𝑶 𝐥𝐨𝐠 𝐥𝐨𝐠 𝒏 時間 でできるおもしろデータ構造です http://en.wikipedia.org/wiki/Van_Emde_Boas_tree Cache-Oblivious データ構造入門 (@iwiwi) 43
  43. 43. 世の中の Cache-Oblivious 事例 Cache-Oblivious データ構造入門 (@iwiwi) 44
  44. 44. 他の Cache-Oblivious データ構造・アルゴリズム データ構造 • 動的な探索木 (CO B-Tree) – さっきのは静的な木だったので実際に動的にしようと思うと もっと複雑なものが必要 • 順位キュー • リスト • …… アルゴリズム • • • • ソート (Funnel Sort) FFT,行列乗算 グラフ探索 …… いっぱい あります! Cache-Oblivious データ構造入門 (@iwiwi) 45
  45. 45. Cache-Oblivious は本当に実用的か? 利点もあるけど,浸透しにくい 問題点1: 複雑すぎる物が多い 理論屋さんがオーダー記法での計算量だけを考えて作っている実装し たくないものが多い 問題点2: Cache-Aware に中々勝てない 定数倍の差はあり実測では速度で負けてしまう Cache-Oblivious データ構造入門 (@iwiwi) 46
  46. 46. 事例 TokuDB MySQL, MariaDB 用ストレージエンジン Fractal Tree™ Index なるものを使うらしい Cache-Oblivious データ構造入門 (@iwiwi) 47
  47. 47. Fractal Tree™ Index Wikipedia 公式 Cache-Oblivious データ構造入門 (@iwiwi) 48
  48. 48. 事例 𝑇0 …… 𝑇1 𝑇2 𝑇 𝑛 確かにフラクタルっぽい(?) (※実際には Fractal Tree Index は vEB Layout より複雑なことをしています) Cache-Oblivious データ構造入門 (@iwiwi) 49
  49. 49. 論文 (MIT CSAIL) Cache-Oblivious Streaming B-trees Michael A. Bender, Martin Farach-Colton, Jeremy T. Fineman, Yonatan Fogel, Bradley Kuszmaul, and Jelani Nelson SPAA’07 Cache-Oblivious String B-Trees Michael A. Bender, Martin Farach-Colton, and Bradley C. Kuszmaul PODS’06 Concurrent Cache-Oblivious B-Trees Michael A. Bender, Jeremy T. Fineman, Seth Gilbert, and Bradley C. Kuszmaul SPAA’05 Cache-Oblivious データ構造入門 (@iwiwi) 50
  50. 50. 論文 (MIT CSAIL) Cache-Oblivious Streaming B-trees Michael A. Bender, Martin Farach-Colton, Jeremy T. Fineman, Yonatan Fogel, Bradley Kuszmaul, and Jelani Nelson SPAA’07 Chief Scientist CTO Chief Architect Cache-Oblivious String B-Trees Michael A. Bender, Martin Farach-Colton, and Bradley C. Kuszmaul PODS’06 Concurrent Cache-Oblivious B-Trees Michael A. Bender, Jeremy T. Fineman, Seth Gilbert, and Bradley C. Kuszmaul SPAA’05 MIT の Cache-Oblivious 研究ガチ勢の起業! Cache-Oblivious データ構造入門 (@iwiwi) 51
  51. 51. 使っているっぽい雰囲気? TokuDB の公式サイトにあるスライド http://www.tokutek.com/wp-content/uploads/2011/11/how-fractal-trees-work.pdf Cache-Oblivious データ構造入門 (@iwiwi) 52
  52. 52. まとめ • メモリ階層を意識したデータ構造 • Cache-Oblivious の考え方 • 基礎的テク:ツリーの vEB Layout • 世の中の事例と課題 ありがとうございましたm(__)m Cache-Oblivious データ構造入門 (@iwiwi) 53
  53. 53. おまけ:van Emde Boas の発音 https://www.youtube.com/watch?v=AjFtTQevtq0#t=14m15 Peter van Emde Boas と友人である Erik D. Demaine (MIT) による発音が YouTube で聞けます Cache-Oblivious データ構造入門 (@iwiwi) 54
  54. 54. 謝辞 @kumagi さんのご意見をもとに発表時からスライド を改訂しています,ありがとうございます. @tmaehara さんに “van Emde Boas” さんの発音情報 を教えてもらいました,ありがとうございます. Cache-Oblivious データ構造入門 (@iwiwi) 55

×