Recommended
PDF
PPTX
PPTX
PDF
ARM CPUにおけるSIMDを用いた高速計算入門
PDF
20180109 titech lecture_ishizaki_public
PDF
PDF
PDF
PDF
いまさら聞けないarmを使ったNEONの基礎と活用事例
PDF
PDF
PDF
OSC 2012 Hokkaido でのプレゼン資料
PDF
PDF
PDF
PDF
PDF
PDF
PPTX
PDF
第11回 配信講義 計算科学技術特論B(2022)
PDF
PDF
20230105_TITECH_lecture_ishizaki_public.pdf
PDF
PPTX
PDF
PPT
PDF
PDF
エバンジェリストが語るパワーシステム特論 ~ 第3回:IBMオフコンはいかにして生き残れたのか?~第二章~
More Related Content
PDF
PPTX
PPTX
PDF
ARM CPUにおけるSIMDを用いた高速計算入門
PDF
20180109 titech lecture_ishizaki_public
PDF
PDF
PDF
Similar to The simd
PDF
いまさら聞けないarmを使ったNEONの基礎と活用事例
PDF
PDF
PDF
OSC 2012 Hokkaido でのプレゼン資料
PDF
PDF
PDF
PDF
PDF
PDF
PPTX
PDF
第11回 配信講義 計算科学技術特論B(2022)
PDF
PDF
20230105_TITECH_lecture_ishizaki_public.pdf
PDF
PPTX
PDF
PPT
PDF
PDF
エバンジェリストが語るパワーシステム特論 ~ 第3回:IBMオフコンはいかにして生き残れたのか?~第二章~
The simd 1. 2. The SIMD Series
• #1 Get the SIMD! ― SIMDを手に入れろ!
• #2 The Ancient System ― 古きモノ
• #3 The Power ― その力
• #4 Control the SIMD ― SIMDの制御
• #5 The Parallel and the Concurrency ― 並列と並行
• #6 The Two Laws or Curses ― 2つの法則、あるいは呪い
• # … The New … to the Present … ― … 新たな … 現代へ …
数回に分け
マス・w・
3. … by Usagi Ito
• Current Working
• Software Architect / System Engineer of a Geological Software Maker
• Old Working
• Instructor of the Computer Engineering
• An Engineer of the Game Server, the Web System and Linux Infrastructure
• The Works and the Supports
• One of the Organizer of the “After-5 of an Adult Conversation Series”
• One of the Organizer of the “Sapporo C++ Study Group”
• One of the Authors of the Emscripten
• One of the Translator of a several OSS products
• One of the Overseeing members of “PROGRAMMING: Principles and Practice Using C++” Japanese
Edition
• Contacts
• Facebook: usagi.wrp
• GitHub: usagi
こまけぇ(ry
4. 5. 6. 7. CPUに搭載されたSIMD命令の役割とは?
I1 • z[0]=x[0]+y[0]
I2 • z[1]=x[1]+y[1]
I3 • z[2]=x[2]+y[2]
I4 • z[3]=x[3]+y[3]
I1 z[0]=x[0]+y[0]
I1 z[1]=x[1]+y[1]
I1 z[2]=x[2]+y[2]
I1 z[3]=x[3]+y[3]
通常の命令による逐次処理 SIMD命令による並列処理
処理時間: 命令4回分 処理時間: 命令1回分
あくまでも
イメージ デス
8. 9. 10. 11. SIMD: Single Instruction Multiple Data
• 「Single Instruction: 単一の命令で」
• 「Multiple Data: 複数のデータ」
• ひとよんでSIMD(しむど)と申す( ・`ω・´)
少しまじめに
解説しはじめる・w・
12. Flynn’s taxonomy: フリンの分類
SIMD
MIMDMISD
SISD
• 「命令」vs.「データ」
• 「単一」vs.「複数」
• Michael J. Flynnが1966年に提唱
した計算機の命令とデータの4
つの単一・複合のアーキテク
チャーパターン
• SIMDはそのうちの1つ
ややマジメな
解説・w・
http://arith.stanford.edu/~flynn/
Michael J. Flynn (1934~; Age 81)
13. 最近の”演算装置”をフリンの分類に当てはめると?
SISD
• PCのCPUの一般的な命令
• x86, x87
• ARMv6
SIMD
• PCのCPUの特別なSIMD命令
• MMX, 3DNow!
• SSEx
• Smart DeviceのCPUの特別な
SIMD命令
• Neon
• PPCのベクター演算ユニット
• Altivec
MISD
• ドーナツ屋
• (演算装置での実用的な実
装製品は無いらしい)
MIMD
• Super-computerのシステム
全体を見ればMIMDっぽい
• Grid-computingのシステム
もMIMDとも言えなくもな
い
Big-dataの
Map&Reduceや
関数型言語って
これっぽいよね・w・
GPUもSIMD
だよ・w・
14. 15. Get the SIMD
• 1993年
• i486の後継世代のCPUとして当時のPCのCPU戦国時代にintelが投入したCPU
• その名を"Pentium"(ペンティアム)
• 1996年
• Pentiumアーキテクチャーの第3世代バージョン"P55C"が実売開始される
• MMX命令(PC向けCPUでは初となるSIMD命令)が搭載される
「アメリカからの独自
ルートで仕入れた」
AMD
VIA
1996年12月当時のPC Watchの記事を
いまでも読むことができる
Cyrix
http://pc.watch.impress.co.jp/docs/article/961220/mmx.htm
16. 1996年末、こうしてPCのCPUは
SIMDを手に入れたのでした
• 実際に一般市民が購入できた"パソコン"としては、
• NEC PC9821V200 が主(当時はパソコンショップ≈NECのPC98ショップ)
• 実際にはPentium ProやMMX Pentium 233MHzの製品が市場に流通してからも
長いことPC9821V13が売れ続け、PCが10万円ちょっとで買える時代となった
• 当時のMMX Pentium 200MHz搭載機はまだ20万円より高値、一部の今で言うマ
ルチメディア系のクリエイターやゲーマーなどマニアックなユーザーにしか
MMX命令搭載のCPUはまだ普及しなかった
• そもそもMMX命令対応のソフトウェアなんて無いに等しかった
• 少なくともCにインラインアセンブラー等で部分的であれMMX命令を直接機械語で
コーディングできるプログラマーにしか実装できなかった(当時)
17. 18. 19. ちなみに…
本当にSIMDが一般的にPCで使えるようになったのは?
• Pentium II ・・・ ではなくて、現実には Pentium III くらいの時代か
な?
• Pentium IIIでMMX命令の弱点を克服しつつ、とってもパワーアップしたSSE命
令が追加されてからソフトウェアでの実用も増えました
• intelの驚異的なライバルに成長していたAMDのCPUはPentium IIIのSSE命令よ
りも先に似たような3DNow!命令を追加していたのだけど普及に失敗・・・
• 実はPentium4より後、PC向けのCPUが64-bitになってから?
• AMDのAMD64命令セットにintelもItaniumを諦めてEM64Tと称し対応し、
x86_64という互換レベルのCPUを作り続けるようになってから
• x86_64にはSSE, SSE2までが拡張ではなく基本命令セットとして取り込まれたた
めにCPUに応じてサポートを気にする必要があまりなくなってから一般に普及
• 現在はSSE4, AVX, SSE5などの最新の拡張レベルでは相変わらず戦争中・・・
• でも、コンパイラーが賢く進化してくれているし、JITのSIMD対応まで始まっ
ている時代だからね・w・
20. ともあれこうしてPCのCPUは・・・
• 1996年、MMX Pentium (P55C) で初のSIMD命令MMX
• Pentium II にも MMX は継承
• Pentium III で MMX の弱点を克服しつつ強化された SSE が登場
• AMDも3DNow!を搭載してCPUのSIMD対応を牽引
• Pentium 4 で SSE を強化する SSE2 が登場
• Pentium 4 後期型からSIMD処理をさらに強化するSSE3が登場
• Core で SSE4.1 SSE4.2 AVX AVX2と現在に至るまでSIMD命令は強化され続ける
• AMDもSSE5とか一応頑張ってマス・w・
SIMDを手に入れたのでした・w・
21. 22. 23. PC向けCPUよりも
古い時代のSIMDの歴史
• 1975
• ILLIAC IV
• イリノイ大学アーバナシャンペー
ン校が最後に完成させた計算機
• 開発期間: 10年
• 計画性能: 1 [GFLOPS]
• 13 [MHz] × 256 [#] 並列
• 実現性能: 100~150 [MFLOPS]
• 世界初のSIMD型計算ハードウェア
• 週40時間の保守が必要
• 1976年に登場したスーパースカラー
型のCray-1に追いやられる
スーパースカラー?
呼んだ?
http://ja.wikipedia.org/wiki/ILLIAC_IV
CPU いっぱい
シングルタスクの
Super-computer
みたいな・w・
24. ~198xまでのSuper-computerたち
• SIMD vs. Super-scalar
• ILLIAC IV (SIMD)亡き後はCray-1に
代表されるSuper-scalar型の設計の
計算機の時代が198xまで続く
• 用語としての"ベクター演算"は
SIMD型もSuper-scalar型も含むが、
事実上は長い間Super-scalar型の計
算機がベクター演算型の計算機と
して人類に開発・実用された
Super-scalar
そろそろ
しゃべっていい?
http://ja.wikipedia.org/wiki/Cray-1
25. 26. 27. PPCアーキテクチャーのSIMD命令
• PPC: Power PC
• IBM製のCPU(AIM連合による; AIM: Apple-IBM-Motrola)
• RISC: Reduced Instruction Set Computer 型CPU
• 古の Apple Macintosh に一時期採用(1994~2006)
• 任天堂 Game Cube に採用(PPC Gecko; 2001)
• 任天堂 Wii に採用(PPC BroadWay; 2006)
• Microsoft XBOX360に採用(PX)
Power Mac G5
SIMD命令
"Altivec/VMX"搭載
28. 29. Cell Broadband Engine
• Cell Broadband Engine; 通称Cell(セル)
• SONY/IBM/東芝 製
• Playstation 3
• 説明略
• Roadrunner
• U.S.A. エネルギー省のSuper-computer(2008~2013)
• 一時 TOP500 で1位を維持
Roadrunner
http://ja.wikipedia.org/wiki/Roadrunner
"SPE: Synergistic Processor Element"
搭載
30. 31. GPU
• GPU: Graphics Processing Unit
• NVIDIA GeForce
• ATI Radeon
• GPUは何をしているの?
• たくさんの頂点データ({x0,y0,z0}, {x1,y1,z1},…): Multiple Data を
• 単一の射影変換処理(ある視点で見た座標→別の視点で見た座標): Single Instruction で
• 変換処理して色を塗って絵として表示してくれるハードウェア
自分中心の座標 地球上の座標 地球上のとある場所のカメラから見た座標
GPUのお話は
またあとでじっくり
しましょう・w・
32. 33. 34. 35. 36. 37. 38. 39. SIMDの使い方の基礎(SSE編)
• intrinsicsという仕組みを使うよ
• MMX <mmintrin.h>
• SSE <xmmintrin.h>
• SSE2 <emmintrin.h>
• SSE3 <pmmintrin.h>
• SSSE3 <tmmintrin.h>
• SSE4.1 <smmintrin.h>
• SSE4.2 <nmmintrin.h>
• AVX/AVX2/FMA <immintrin.h>
• AVX-512 <zmmintrin.h>
• SSEに代表されるIntel系のSIMD
命令は・・・
• intrinsicsでSIMDレジスターを変数
型として使える
• XMM float×4 __mm128
• intrinsicsでおよそSIMDの機械語に
対応するCスタイルの関数として使
える
• z = x + y z = _mm_add_ps( x, y )
アセンブらなくても
使える時代・w・
40. ところで、
XMMレジスターとは?(1/2)
レジスター
≈
CPUの中の計算用の記憶域
EAX EBX ECX EDX …
• 前提知識
• CPUは主記憶で計算処理してナイ
• load: COPY{ 主記憶 レジスター }
• store: COPY{レジスター 主記憶 }
• CPUが加算などの計算をする時の
オペランドは基本的には「CPUレ
ジスター」と呼ばれるCPU内部の
記憶域
• 汎用的に使えるレジスターは…
• EAX, EBX … など名前の付いた32bitの
記憶域など
ちなみに16bit枠はEAXのAX分
x86の進化の歴史が詰まってる
・w・
41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 計算機の進化と
並列化・並行化の法則
• ムーアの法則
• 𝑝 = 2 𝑛/1.5
• p: 集積回路上のトランジスター数の
倍率[-]
• n: 現時点からの経過年数[years]
• 『1年半でトランジスターの集積度
は2倍になる』
ムーアの法則(カーツワイルの収穫加速の法則)
面で実装されるデバイスの
集積度のはなし・w・
65. 計算機の進化と
並列化・並行化の法則
• アムダールの法則
• システム全体を並列化できるわけ
ではない
• システム全体の並列化による高速
化の限界は並列化できない処理に
依存する
• ポラックの法則
• intelの経験則
• 『CPUの性能向上は、ダイサイズ
の増加の平方根分にしかならい』
• ムーアの法則の1年半後の集積度は2
倍になるが、実効性能は 𝟐倍にし
かならない
ならばマルチコアだ!
参考: PC WATCH 後藤弘茂のWeekly海外ニュース 2004年11月
ポラックの法則を破るためのマルチコア
SIMDの高度化も並行処理
志向の進化の一旦
66. 67. 68. 69. 70. 次回 PART II 予告編
• 具体的なSIMD命令セットごとの特徴と扱い方の紹介
• x86_64: MMX/SSE/SSE2/SSE3/SSSE3/SSE4.1/SSE4.2/AVX/FMA
• ARMv7: Neon
• SIMD最適化と現実の構造体
• 色: RGB … 3要素
• 3D座標: XYZ … 3要素
• "Array of Structure"と"Structures of Array"
• より手軽でクロスプラットフォームなSIMD最適化
• Intel SPMD Program Compiler
• おまけネタ
• simd.js
• ES7とSIMD
ここまでできたら今度こそ
SIMDマスター?
・w・
71. 72. 73.