SlideShare une entreprise Scribd logo
1  sur  54
Télécharger pour lire hors ligne
2014/01/11 @ DSIRNLP 5

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

2. Cache-Oblivious の考え方と意義
3. Cache-Oblivious 探索木 (vEB Layout)
4. 世の中の Cache-Oblivious 事例

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

3
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://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Hdd_medalist.jpg

があるから
Cache-Oblivious データ構造入門 (@iwiwi)

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

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

B-Tree

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

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

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

前提より
• ディスクを読み込む回数だけを考える
– 普段の議論:「O(ほげ) 時間」
– 今回の議論:「ディスクI/O 𝑂(ほげ) 回」

• 一度に読み込まれるサイズを 𝐵 とおく
Cache-Oblivious データ構造入門 (@iwiwi)

10
データの探索にかかる I/O 回数
二分探索木
• 𝑂 log 𝑛 回
一回の I/O で 2 分岐

B-Tree
• 𝑂 log 𝐵 𝑛 回

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

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

B-Tree のほうが log 𝐵 倍ぐらい早い
これは平気で 10 倍とかになるので大違い!
Cache-Oblivious データ構造入門 (@iwiwi)

11
このように

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

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

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

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

13
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-Oblivious データ構造入門 (@iwiwi)

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

やりたいことも同じ (例:探索木)
ただし,Cache-Oblivious データ構造は
𝑩 の値を使ってはいけない
(つまり𝐵の値を事前に知らない)
Cache-Oblivious データ構造入門 (@iwiwi)

19
Cache-Oblivious でない例
B-Tree は Cache-Oblivious ではない

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

ブロックサイズ 𝐵 を知らないと
何分木にしていいかわからない!
ブロックサイズ 𝐵 を使ってデータ構造を設計している

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

20
なんでそんなことをするのか?
Cache-Oblivious データ構造の利点

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

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

21
なんでそんなことをするのか?
Cache-Oblivious データ構造の利点

2つめ:
全てのメモリ階層ギャップに最適化される
• ディスク ⇔ メモリ・・・ 𝐵Mem
• メモリ ⇔ キャッシュ・・・𝐵Cache
どんな 𝐵 の値でも性能が出る
→ どこのギャップに関しても良い性能!
Cache-Oblivious データ構造入門 (@iwiwi)

22
なんでそんなことをするのか?
Cache-Oblivious データ構造の利点

2つめ:
全てのメモリ階層ギャップに最適化される
データの大きさによってボトルネックは変わる
• メモリに収まる? → 𝐵Cache
• 収まらない? → 𝐵Mem
扱うデータのサイズによらず高性能なプログラム
にできる
Cache-Oblivious データ構造入門 (@iwiwi)

23
そんな都合の良いものが作れるの?
作れるんです!

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)

𝑛

𝑇2

…

𝑇

𝑛

39
vEB Layout の性質
Cache-Oblivious である!
再帰してるだけ.ブロックサイズ 𝐵 は出てこなかった.
𝐵 を全く知らずに構築したのに……なんと

要素の探索が I/O 𝑂 log 𝐵 𝑛 回でできる!
↑
𝑩 を知ってて作った B-Tree と性能が一致!
(オーダー記号に隠れた定数倍を除いて)

(𝐵 : ブロックのサイズです ← 忘れた人むけ)
Cache-Oblivious データ構造入門 (@iwiwi)

40
vEB Layout の性質
Cache-Oblivious である!
再帰してるだけ.ブロックサイズ 𝐵 は出てこなかった.
𝐵 を全く知らずに構築したのに……なんと

要素の探索が I/O 𝑂 log 𝐵 𝑛 回でできる!
↑
𝑩 を知ってて作った B-Tree と性能が一致!
(オーダー記号に隠れた定数倍を除いて)

最悪の場合でも I/O 回数は
(𝐵 : ブロックのサイズですlog 𝐵 𝑛 回
2 + 4 ← 忘れた人むけ)
Cache-Oblivious データ構造入門 (@iwiwi)

41
計算量
𝑶 𝐥𝐨𝐠

𝑩

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

ツリーのサイズ:𝑛,

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

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

𝐵

サイズが 𝐵 以下になったら一気に読み込まれる
→ 結局多分木みたいに動作する( Ω 𝐵 分木)
Cache-Oblivious データ構造入門 (@iwiwi)

42
ちなみに:Cache-Oblivious 関係ない話
木でこういう分割をするのは,
vEB Tree というデータ構造でも使う
vEB Tree はキーの値の範囲の条件下で
• 検索が 𝑶 𝐥𝐨𝐠 𝐥𝐨𝐠 𝒏 時間
でできるおもしろデータ構造です
http://en.wikipedia.org/wiki/Van_Emde_Boas_tree

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

43
世の中の Cache-Oblivious 事例

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

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

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

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

• 順位キュー
• リスト
• ……

アルゴリズム
•
•
•
•

ソート (Funnel Sort)
FFT,行列乗算
グラフ探索
……

いっぱい
あります!

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

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

問題点2:
Cache-Aware に中々勝てない
定数倍の差はあり実測では速度で負けてしまう

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

46
事例

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 データ構造入門 (@iwiwi)

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
論文 (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
使っているっぽい雰囲気?
TokuDB の公式サイトにあるスライド

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

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

52
まとめ
• メモリ階層を意識したデータ構造

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

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
謝辞
@kumagi さんのご意見をもとに発表時からスライド
を改訂しています,ありがとうございます.
@tmaehara さんに “van Emde Boas” さんの発音情報
を教えてもらいました,ありがとうございます.

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

55

Contenu connexe

Tendances

プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Takuya Akiba
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
Takuya Akiba
 

Tendances (20)

プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
 
双対性
双対性双対性
双対性
 
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
 
Binary indexed tree
Binary indexed treeBinary indexed tree
Binary indexed tree
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化
 
指数時間アルゴリズム入門
指数時間アルゴリズム入門指数時間アルゴリズム入門
指数時間アルゴリズム入門
 
Union find(素集合データ構造)
Union find(素集合データ構造)Union find(素集合データ構造)
Union find(素集合データ構造)
 
様々な全域木問題
様々な全域木問題様々な全域木問題
様々な全域木問題
 
動的計画法を極める!
動的計画法を極める!動的計画法を極める!
動的計画法を極める!
 
直交領域探索
直交領域探索直交領域探索
直交領域探索
 
Convex Hull Trick
Convex Hull TrickConvex Hull Trick
Convex Hull Trick
 
ダブリング
ダブリングダブリング
ダブリング
 
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
 
明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
 
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
 
AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説
 
直前合宿 講義スライド
直前合宿 講義スライド直前合宿 講義スライド
直前合宿 講義スライド
 
最大流 (max flow)
最大流 (max flow)最大流 (max flow)
最大流 (max flow)
 
2SAT(充足可能性問題)の解き方
2SAT(充足可能性問題)の解き方2SAT(充足可能性問題)の解き方
2SAT(充足可能性問題)の解き方
 

Plus de Takuya Akiba

ACM-ICPC 世界大会 2015 問題 K "Tours" 解説
ACM-ICPC 世界大会 2015 問題 K "Tours" 解説ACM-ICPC 世界大会 2015 問題 K "Tours" 解説
ACM-ICPC 世界大会 2015 問題 K "Tours" 解説
Takuya Akiba
 
大規模グラフ解析のための乱択スケッチ技法
大規模グラフ解析のための乱択スケッチ技法大規模グラフ解析のための乱択スケッチ技法
大規模グラフ解析のための乱択スケッチ技法
Takuya Akiba
 
大規模ネットワークの性質と先端グラフアルゴリズム
大規模ネットワークの性質と先端グラフアルゴリズム大規模ネットワークの性質と先端グラフアルゴリズム
大規模ネットワークの性質と先端グラフアルゴリズム
Takuya Akiba
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
Takuya Akiba
 
大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端
Takuya Akiba
 

Plus de Takuya Akiba (10)

分散深層学習 @ NIPS'17
分散深層学習 @ NIPS'17分散深層学習 @ NIPS'17
分散深層学習 @ NIPS'17
 
Learning Convolutional Neural Networks for Graphs
Learning Convolutional Neural Networks for GraphsLearning Convolutional Neural Networks for Graphs
Learning Convolutional Neural Networks for Graphs
 
TCO15 Algorithm Round 2C 解説
TCO15 Algorithm Round 2C 解説TCO15 Algorithm Round 2C 解説
TCO15 Algorithm Round 2C 解説
 
ACM-ICPC 世界大会 2015 問題 K "Tours" 解説
ACM-ICPC 世界大会 2015 問題 K "Tours" 解説ACM-ICPC 世界大会 2015 問題 K "Tours" 解説
ACM-ICPC 世界大会 2015 問題 K "Tours" 解説
 
大規模グラフ解析のための乱択スケッチ技法
大規模グラフ解析のための乱択スケッチ技法大規模グラフ解析のための乱択スケッチ技法
大規模グラフ解析のための乱択スケッチ技法
 
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-
 
平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム
 
大規模ネットワークの性質と先端グラフアルゴリズム
大規模ネットワークの性質と先端グラフアルゴリズム大規模ネットワークの性質と先端グラフアルゴリズム
大規模ネットワークの性質と先端グラフアルゴリズム
 
勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは勉強か?趣味か?人生か?―プログラミングコンテストとは
勉強か?趣味か?人生か?―プログラミングコンテストとは
 
大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端大規模グラフアルゴリズムの最先端
大規模グラフアルゴリズムの最先端
 

Dernier

Dernier (12)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

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