Recommended
PDF
いいかげんな人のためのTransactional Memory Primer
PDF
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PDF
【DL輪読会】A Path Towards Autonomous Machine Intelligence
PPTX
PPTX
Tensor コアを使った PyTorch の高速化
PDF
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
PPTX
[DL輪読会] マルチエージェント強化学習と心の理論
PDF
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PDF
PDF
モデルアーキテクチャ観点からのDeep Neural Network高速化
PPTX
PDF
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
PDF
分散学習のあれこれ~データパラレルからモデルパラレルまで~
PPTX
【DL輪読会】Scaling Laws for Neural Language Models
PDF
PDF
0から理解するニューラルネットアーキテクチャサーチ(NAS)
PDF
PPTX
PDF
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
PDF
Decision Transformer: Reinforcement Learning via Sequence Modeling
PDF
TensorFlow XLAは、 中で何をやっているのか?
PDF
[DL輪読会]マルチエージェント強化学習と⼼の理論 〜Hanabiゲームにおけるベイズ推論を⽤いたマルチエージェント 強化学習⼿法〜
PPT
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
PPTX
BoostAsioで可読性を求めるのは間違っているだろうか
PDF
PDF
Tensorflow Liteの量子化アーキテクチャ
PDF
Spark MLlibではじめるスケーラブルな機械学習
PPT
PDF
Intel TSX HLE を触ってみた x86opti
More Related Content
PDF
いいかげんな人のためのTransactional Memory Primer
PDF
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
PDF
【DL輪読会】A Path Towards Autonomous Machine Intelligence
PPTX
PPTX
Tensor コアを使った PyTorch の高速化
PDF
ゼロから始める深層強化学習(NLP2018講演資料)/ Introduction of Deep Reinforcement Learning
PPTX
[DL輪読会] マルチエージェント強化学習と心の理論
PDF
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
What's hot
PDF
PDF
モデルアーキテクチャ観点からのDeep Neural Network高速化
PPTX
PDF
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
PDF
分散学習のあれこれ~データパラレルからモデルパラレルまで~
PPTX
【DL輪読会】Scaling Laws for Neural Language Models
PDF
PDF
0から理解するニューラルネットアーキテクチャサーチ(NAS)
PDF
PPTX
PDF
PyData.Tokyo Meetup #21 講演資料「Optuna ハイパーパラメータ最適化フレームワーク」太田 健
PDF
Decision Transformer: Reinforcement Learning via Sequence Modeling
PDF
TensorFlow XLAは、 中で何をやっているのか?
PDF
[DL輪読会]マルチエージェント強化学習と⼼の理論 〜Hanabiゲームにおけるベイズ推論を⽤いたマルチエージェント 強化学習⼿法〜
PPT
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
PPTX
BoostAsioで可読性を求めるのは間違っているだろうか
PDF
PDF
Tensorflow Liteの量子化アーキテクチャ
PDF
Spark MLlibではじめるスケーラブルな機械学習
Similar to Intel TSX について x86opti
PPT
PDF
Intel TSX HLE を触ってみた x86opti
PDF
C++ Transactional Memory言語拡張の紹介
PDF
PDF
PDF
PPT
Transactional Information Systems入門
PDF
PDF
PDF
PDF
本当にわかる Spectre と Meltdown
PDF
PDF
Intel TSX 触ってみた 追加実験 (TTAS)
PDF
PPTX
PPTX
Abstracts of FPGA2017 papers (Temporary Version)
PDF
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
PDF
PPTX
Hybrid computing using a neural network with dynamic external memory
PPTX
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
More from Takashi Hoshino
PDF
PDF
PDF
データベースシステムにおける直列化可能性と等価な時刻割り当てルールの提案 rev.3
PDF
PDF
Effective Modern C++ 勉強会#8 Item38
PDF
Effective Modern C++ 勉強会#6 Item25
PDF
Effective Modern C++ 勉強会#1 Item3,4
PDF
PDF
メモリより大きなデータの Sufix Array 構築方法の紹介
PDF
PDF
PDF
PDF
PDF
PDF
An Efficient Backup and Replication of Storage
PPTX
ログ先行書き込みを用いたストレージ差分取得の一手法
PDF
WalB: Block-level WAL. Concept.
PDF
VMware Backup in Cybozu Labs
PDF
Vmbkp: VMware vSphere Incremental Backup Tool
PPT
Intel TSX について x86opti 1. 2. 自己紹介
• 星野 喬(@starpoz)
– サイボウズ・ラボ
• 昔やってた研究
– データベース,ストレージ,分散アルゴリズム
• 今の仕事
– Linux
kernel
の
IO
device
driver
書いてます
• アセンブラ書いたことありません(ぇ
– CPU
の知識は多少ありますが...
2
3. 4. 5. 6. ロックによる並列プログラミングの問題
• Deadlock
• 合成不可能
Thread1:
lock
x
lock
y
write
x
write
y
unlock
y
unlock
x
Thread2:
lock
x
lock
y
read
x
read
y
unlock
y
unlock
x
Thread2’:
lock
y
lock
x
read
x
read
y
unlock
x
unlock
y
Function1:
lock
x
read
x
unlock
x
Function2:
lock
x
write
x
unlock
x
Function3:
lock
x
read
x
write
x
unlock
x
Function3’:
Function1
Function2
6
7. 8. トランザクション
• 分けることのできない一連の情報処理単位
• ACID
特性
– Atomicity:
トランザクションの実行は全か無のみ
– Consistency:
常に一貫性のある状態を保つ
– IsolaQon:
commit
まで変更は他に見えない
– Durability:
commit
時に変更は永続的に記録される
8
9. トランザクショナルメモリの歴史
• 1986
TM
のアイデア論文
• 1993
Hardware
TM
という名前で提案
• 1995
SoTware
TM
の提案
• 2005
Haskell
での
STM
実装
• 2007
Clojure
STM
言語レベルのサポート
• 2010
MS
.NET
で
STM
を使えないと判断
• 2013
Intel
TSX
が Haswell
に搭載予定
Thanks
to
@nishio
9
10. トランザクショナルメモリのインターフェース
• Atomic
ブロック
– トランザクションにしたいコードを囲むだけ
• その他
– abort
命令
– commit
成否を検知する命令
– 明示的に排他対象を指定する方式もある
10
Thread1:
atomic
{
write
x
write
y
}
Thread2:
atomic
{
read
x
read
y
}
11. Lock
に対する
TM
ってどう思えばいいの?
• Malloc/free
ßà
Garbage
CollecQon
– GC
でメモリリークフリーなプログラミングができる
– 性能は向上しているがオーバーヘッドはある
• Lock/unlock
ßà
TransacQonal
Memory
– TM
で
Lock-‐free
な並列プログラミングができる
– STM
はオーバーヘッドが...
– HTM
は使える実装や制約が...
11
12. TM
実現方式の例
12
0
T1
begin
1
T1
write
x
1
2
T1
write
y
1
3
T1
commit
4
T2
begin
5
T2
read
y
6
T2
read
x
7
T2
commit
0
x
0
y
0
0
0
0
1
1
1
1
1
1
1
1
1
1
T1
writes
T2
writes
x:1
x:1,y:1
T1
T1
T2
T1
T2
T2
tag
tag
T1:
write
x
1
write
y
1
T2:
read
y
read
x
Run
Memory
13. TM
実現方式の例
–cont.
13
0
T1
begin
1
T1
write
x
1
2
T2
begin
3
T2
read
y
4
T1
write
y
1
5
T1
abort
6
T2
read
x
7
T2
commit
0
x
0
y
0
0
0
0
0
0
0
0
0
0
0
0
0
0
T1
writes
T2
writes
x:1
x:1
x:1,y:1
T1
T1
T1
T1
T2
T2
T2
T2
T2
tag
tag
T1:
write
x
1
write
y
1
T2:
read
y
read
x
Run
Memory
14. TM
実現方式の例
–cont.
• Read-‐set/write-‐set
– 各 trn
が
read/write
した領域
– 同じ領域に自分以外がアクセスしたら
abort
• Private
writes
– commit
するまで他の trn
に変更を見せない
– abort
時に変更はなかったことにする
14
15. 16. PessimisQc
vs
OpQmisQc
–cont.
• PessimisQc
(悲観的)
– 競合し得る trn
の同時実行を許さない
– 必ず
commit
できる
• OpQmisQc
(楽観的)
– 競合し得る trn
の投機的な同時実行を許す
– 競合で commit
できないことがある
– 状況次第で
pessimisQc
よりスケールする
– 競合しやすい trn
だと資源の無駄
16
17. 18. 19. Intel
TSX
• TransacQonal
SynchronizaQon
eXtension
の略
• 2 つのインターフェースを提供
– HLE:
Lock
prefix
の拡張で細粒度の排他を実現
– RTM:
制約はあるが HTM
そのもの
• OpQmisQc
な振舞
• CPU
キャッシュを使って必要なデータを管理
• キャッシュライン単位での競合検出
19
20. TSX
のための実装
(TM本
5.1
章を元に想像)
• Read-‐set
– キャッシュライン毎の
read
タグ
– read
したアドレスを保持するバッファ
• Write-‐set
– 論理CPU毎の
Write
buffer
を流用
or
L1/L2
d-‐cache
を流用
• 競合検出
– Read-‐set
に含まれるライン
à
write 要求
– Write-‐set
に含まれるライン
à
read/write
要求
20
21. 22. HLE
• Hardware
Lock
Elision
の略
– ロックを無視
• 命令
– XACQUIRE/XRELEASE
– Lock
prefix
にさらに追加する prefix
– トランザクションにしたいコードを
XACQUIRE と
XRELEASE
で囲む
22
23. 24. HLE: 動作概要
–cont.
• 実行時の挙動
– XACQUIRE
から
XRELEASE
までのコードは
投機的に実行
– Write-‐set
の内容は
commit
されるまで
他の論理
CPU
からは見えない
• 競合が検出された場合
– Abort
し XACQUIRE以降のメモリ操作が
なかったことになる
– HLE
なしで再実行:
必ず成功
24
25. HLE:
メリットとデメリット
• メリット
– 実際に競合がなければ並列実行可能
• 細粒度に排他したプログラムに近い性能が期待
– 既存のコードをほとんど修正なしで使える
• 場合によってはリコンパイルのみ
• デメリット
– 競合が頻繁に起きるケースは資源の無駄
• XACQUIRE/XRELEASE
をつけるべきではない
25
26. 27. 28. 29. RTM:
動作概要
–cont.
• 実行時の挙動
– XBEGIN
から
XEND
までを投機的に実行
– Write-‐set
の内容は他CPUから見えない
– XEND
までに競合検出されなければ
commit
• 競合検出時
– Write-‐set
を破棄して Fallback
アドレスにジャンプ
– EAX
に
abort
原因をセット
• XABORT
時
– 8bit
即値を渡せる(EAX
の一部)
29
30. RTM:
メリットとデメリット
• メリット
– HTM
なので高速
– TM
のためのキャッシュ操作に伴う
オーバーヘッドのみ
• デメリット
– OpQmisQc
なので必ず
commit
できる保証なし
– Retry
しても毎回
abort
するかも知れない
– プログラマ/ライブラリ/OS
が面倒見ないといけない
30
31. 32. トランザクション内で使えるインストラクション
• Abort
しないもの
– IP
や一般のレジスタ,ステータスフラグを使う命令
– XMM,
YMM,MXCSR
レジスタを使う命令
• Abort
するかも知れないもの
– CPUID,
PAUSE
(これらは絶対
abort)
– SSE/XMM
と
AVX/YMM
を混ぜて使う
– INT や
SYSENTER
など諸々
• 詳細はマニュアル参照
32
33. NesQng
(入れ子)
• HLE
– MAX_HLE_NEST_COUNT
まで入れ子にできる
– 同じアドレスに対しては再帰的に使えない
• RTM
– MAX_RTM_NEST_COUNT
まで入れ子にできる
– abort
時は最外 trn
の
fallback
アドレスに飛ぶ
• 組み合わせ
– RTM
の中で
HLE
à
無視される
– HLE
の中で
RTM
à
abort
後
HLE
無視して実行
33
34. 35. 36. 37. 言語処理系のサポート
• C++
標準への提案
– by
Intel
の中の人その他
– atomic
block,
cancel,
例外との組み合わせ
– Undo
できる/ない関数のアノテーション/自動判別
• Intel
compiler
は独自命令でサポート
• GCC
は
4.7 から試験的にサポート
– -‐fgnu-‐tm
オプション
37
38. 39. 今後の展望(予測)
• HLE
は早期に実用できると期待
• RTM は...(時間かかりそう)
• 言語処理系への採用が進む
– HLE,
RTM
サポート
– STM
のアクセラレータとして
RTM
を使う
• 将来的には
OS
によるサポートが必要?
– CPUキャッシュ資源を適切に振り分ける
– 競合コントロール
39
40. 41. 42. 参考文献
• Intel
Architecture
InstrucQon
Set
Extensions
Programming
Reference
• TransacQonal
Memory
2nd
EdiQon
• DraT
SpecificaQon
of
TransacQonal
Language
Constructs
for
C++
• ニュース/ブログ記事など
– 主に
@kumagi
さん,Hisa
Ando
さん
42
43.