R2P/IST 技術講演会 アクセラレータ の 将来 東京大学 五島 正裕 2011/09/07 R2P/IST 技術講演会 はじめに (1/2) 予言: 「アクセラレータ は先細り」 「ディジタル LSI は,メモリと,ARM マルチコア と FPGA だけになる」 危機感: もし予言が成就したら,日本の LSI ベンダはどうなるのか? LSI ベンダのない工業国はアリなのか? 自分はともかく,ウチの卒業生はどうなるのか? 2 R2P/IST 技術講演会 はじめに (2/2) 今日の内容: 危機感の共有 予言の証明 しかし,明らかに説得力がない 自分を含め,そう思っている人には かなり自明 感覚の問題で,説明できない 自分の仕事は予言の成就 アクセラレータがどうなろうが,研究的にはどうでもよい 3 R2P/IST 技術講演会 発表の内容 1. 背景 2. アクセラレータ と プログラマビリティ 3. 汎用マルチコアの高効率化 4 R2P/IST 技術講演会 アクセラレータ 2011/09/07 R2P/IST 技術講演会 データ並列性の高い処理 データ並列性の高い処理 データ処理量が多い 汎用プロセッサで対処しにくい(?) 比較的単純な処理の繰り返し(?) 汎用プロセッサほどの複雑な機構は不要(?) ⇒ 汎用プロセッサ + アクセラレータ 6 R2P/IST 技術講演会 Divergence 専用ハードウェア アクセラレータ SIMD プロセッサ 組み込み用ベクトル・プロセッサ 演算器アレイ型プロセッサ (GP) GPU PLAYSTATION 3 Cell BE 汎用マルチコア(小型コア) タイル・プロセッサ Larrabee Xbox 360 PX 汎用マルチコア(大型コア) x86 MC (Intel Core, AMD Opteron) SPARC64,POWER (ウルトラワイド・スーパスカラ・プロセッサ) 7 R2P/IST 技術講演会 アクセラレータの特徴 アクセラレータの特徴(⇔ 汎用マルチコアと比較): SIMD(⇔ MIMD) ローカル・メモリ(⇔ コヒーレント・キャッシュ) 9 R2P/IST 技術講演会 SIMD 1. SIMD:Single Instruction stream / Multiple Data stream SIMD プロセッサ SIMD 命令セット 2. 利点:ピーク性能 3. 問題点:プログラマビリティ 10 R2P/IST 技術講演会 SIMD プロセッサ 単一の制御部からの指令により,複数の演算器が同時に同じ処理を行う Control Unit Instruction Broadcast PE – 0 PE – 1 PE – 2 PE– n-1 Memory 11 R2P/IST 技術講演会 SIMD 命令セット (スーパ)スカラ・プロセッサの拡張命令セット VIS (Visual Instruction Set) MMX/SSE/3DNow!,AltiVec,etc. 元々は,64b の演算器を,16b x 4 として使う手法 (VIS,MMX) 1つのレジスタ内に,2~8個程度のデータをパック し, 1命令で,同種の演算を2~8個程度同時に行う 12 R2P/IST 技術講演会 SIMD の利点と問題点 利点: 性能‐面積効率,最大性能 演算器間で制御部を共有可能 「1命令で n 個の処理」 演算器により多くの面積を割り当てることが可能 問題点: プログラマビリティ 13 R2P/IST 技術講演会 背景:製品開発 14 R2P/IST 技術講演会 背景 0 : 製品開発 現在の情報機器 1. 要求される処理の高度化 / 複雑化 2. 過当競争による 開発期間の短縮 3. 速度は,1st. Priority ではなくなりつつある 16 R2P/IST 技術講演会 背景 1 : ハードウェア (LSI) 開発 1. 要求される処理の高度化 / 複雑化 「設計できない」 2. 開発期間の短縮 「発売に間に合わない」 3. ソフトウェアでも開発は難しくなりつつある 製品の開発を始めてから LSI の開発を始めるのではダメ LSI 製造コストの高騰 「開発費を回収できない」 個別用途向けに開発したのではダメ 個別用途向け,多品種 少量 の LSI 開発は困難 17 R2P/IST 技術講演会 背景 2: ソフトウェア開発 開発効率,メンテナンス効率 1. 要求される処理の高度化 / 複雑化 2. 開発期間の長期化 → 開発コストの高騰 3. HW の速度向上により,速度に対する要求は飽和しつつある? (少なくとも,ユーザは必要性を実感していない) Java,Ruby などの利用 速度はともかく,開発効率が高い 18 R2P/IST 技術講演会 要求される処理の高度化 / 複雑化 例えば MPEG MPEG-2 (1995年) HW 化をかなり考慮して策定 MPEG-4 AVC (H.264) (2003年) HW 化は(MPEG-2 ほどには)考慮されていない – SW でも,正しく書くのは難しい 19 R2P/IST 技術講演会 HW/SW インタフェース 垂直統合: 性能のために HW/SW インタフェースが決まってしまう その結果,プログラマが泣く 水平分業: プログラマビリティを第一に HW/SW インタフェースを決める マイクロアーキテクト / プログラマは,個別に努力する 昔からこうだが,今後はもっとこう 20 R2P/IST 技術講演会 SIMD と プログラマビリティ 2011/09/07 R2P/IST 技術講演会 AoS / SoA AoS / SoA AoS (Array-of-Struct) : struct AoS { float r, g, b, a }[N]; SoA (Struct-of-Array) : struct SoA { float r[N], g[N], b[N], a[N] }; 歴史的には,AoS から SoA へ AoS ex) VIS,MMX – 64b の演算器を 16b x 4 として使う – {r, g, b, a}, {x, y, z, w} の 4つ組 SoA ex) SSE – 汎用ベクトル処理 22 R2P/IST 技術講演会 問題は SoA プログラマビリティに与える制約 AoS : 単に,64b (,128b,…) の演算だと思えばよい SoA : 4個(,8個,…)まとめて演算しなければならない AoS/SoA は,使い方の問題ではあるが,アーキテクチャに影響を与える AoS を指向するなら,4つ組で十分 SoA によって最大性能の向上を図るなら,64bx8 なども考えられる 大規模な SIMD プロセッサは SoA(もしくは,AoS の SoA) ベクトル・プロセッサは? 23 R2P/IST 技術講演会 SoA のプログラマビリティに対する制約 規則的 (regular) なループ: SIMD 化可能 配列の連続要素に対し,同一の処理を行う場合など 積和演算 行列積 不規則 (irregular) なループ: SIMD 化困難 SIMD 化すると,性能向上が見られない,性能が低下する 24 R2P/IST 技術講演会 不規則なループ 1. if-then-else 構造を持つもの 実行フラグなどにより対処は可能だが,性能は悪化 2. 不規則なメモリアクセスを含むもの 要素毎にポインタを含むものなど 3. then パート と else パートを逐次実行 リスト・ベクトル機能 – SIMD 命令セットの範疇では,サポートできない ループからの脱出 コンパイラ (inc. Intel コンパイラ)は SIMD 化しない(最近は?) 25 R2P/IST 技術講演会 不規則なループの具体例 (1/2) サーチ: 次にたどるべきノードが動的に決まる ソート: ストアの先が,比較結果によって,要素ごとに異なる 26 R2P/IST 技術講演会 不規則なループの具体例 (2/2) MPEG-4 AVC (H.264): 動き検出 (motion detection) 多重ループからの脱出 適応的な探索 算術符号の符号化,復号化 多数の分岐 適応的なモード切替 デブロッキング・フィルタ 適応的なアルゴリズム 27 R2P/IST 技術講演会 プログラマビリティの低さを証明するもの 「アクセラレータでやってみました」系の論文 最近は通らなくなってきた プログラミング・コンテストの存在 Cell Challenge,GPU Challenge(2010 まで) Xbox 360 に対する PLAYSTATION 3 の出だしのつまづき(推測) ウチの研究室の学生が,某有名エンコーダの SSE/GPGPU 化を担当 「GPGPU で,CPU w/ SSE に勝つのは困難」 Top 500 (次のスライド) 28 R2P/IST 技術講演会 Top 500 (June 2011) Computer Processor Year Vendor 1 RIKEN Japan K computer, SPARC64 VIIIfx 2011 Fujitsu 2 NSC in Tianjin China 3 Rank Site Cores Rmax / Rpeak Rmax Rpeak 548352 8162.00 8773.63 93.0% Tianhe-1A , Intel Xeon, NVIDIA GPU 2010 NUDT 186368 2566.00 4701.00 54.6% DOE/SC/Oak Ridge NL United States Jaguar, AMD Opteron 6 2009 Cray Inc. 224162 1759.00 2331.00 75.5% 4 NSC in Shenzhen China Nebulae, Intel Xeon, NVIDIA Tesla GPU 2010 Dawning 120640 1271.00 2984.30 42.6% 5 Tokyo Institute of Technology Japan TSUBAME 2.0, Intel Xeon, NVIDIA GPU 2010 NEC/HP 73278 1192.00 2287.63 52.1% … … … … … … … 10 DOE/NNSA/LANL United States Roadrunner, IBM Cell / AMD Opteron 2009 IBM 122400 1042.00 1375.78 75.7% … … … … … … … NCSA, UIUC United States Blue Waters, IBM POWER7 20XX IBM 200000 15000.00 29 R2P/IST 技術講演会 Top 500 から言えること (1/2) 京は Rmax / Rpeak が高い(93.0%) コア数が多く,通信オーバヘッド上は不利.だから, コアの効率が 100% 近くないと達成できない SIMD は 2-way GPU スパコンは,Rmax / Rpeak が低い(50% 程度) コア数が少なく,通信オーバヘッド上は有利.だから, コアの効率自体,50% を切っているであろう SIMD は 32-way (?) 30 R2P/IST 技術講演会 Top 500 から言えること (2/2) GPU スパコンは,Rmax / Rpeak が低い(50% 程度) LINPACK: 比較的 regular なプログラムで, CS のプロによってカリカリにチューンされているのに,こう 実際: 実用的なプログラムを, CS が専門でないプログラマが書くと? GPU スパコンはもう来ないだろう それでも GPU WS は残るのか? おまけ: スパコンのベンチマークに LINPACK を選んだのは見識だった? 31 R2P/IST 技術講演会 低いプログラマビリティの罪 プログラミング自体が難しい しかも,本質的でない困難が多い プログラミングの流れ: 汎用プロセッサでのプログラミング 最適なアルゴリズムの選択 → プログラミング → 最適化 アクセラレータでのプログラミング 効率よく実行可能なアルゴリズムの選択 → プログラミング → 書けない,動かない,思い通りの性能が出ない → 最初からやり直し 「GPU 鬱」は実在する 32 R2P/IST 技術講演会 汎用マルチコアの面積効率 2011/09/07 R2P/IST 技術講演会 コアの規模と数 チップ面積一定として,どちらが有利か? 小型のコア × 多数 大型のコア × 少数 基準: 1. マルチコアこそ,面積効率が重要 2. 面積効率が同程度なら,コアは少ないほうがよい 38 R2P/IST 技術講演会 1. マルチコアこそ,面積効率が重要 「マルチコアでは,チップ面積が余っているから,無駄に使ってよい」 ⇒ ウソ 面積と性能の関係: シングル・コアの時代: チップ面積の増加 ⇒ チップ・コストの増加 マルチコアの時代: チップ面積の増加 ⇒ コア数の減少 ⇒ 性能低下 39 R2P/IST 技術講演会 2. 面積効率が同程度なら,コアは少ないほうがよい Amdahl の法則 (?) n コアで n 倍スピードアップは無理 マルチプロセッサの経験から 「コアの性能が低いと,コア数を増やして勝つのは難しい」 40 R2P/IST 技術講演会 スーパスカラ・プロセッサの回路面積 w:幅 フェッチ幅 発行幅 キャッシュ,I/O: O(1) ? 演算器: O(w) 制御部: O(w3) 各種テーブルを構成する RAM: ポート数: O(w) エントリ数: O(w) 面積 ∝ (ポート数)2 × (エントリ数) 41 R2P/IST 技術講演会 スーパスカラ・プロセッサの回路面積 回路面積 制御 演算器 キャッシュ,I/O w 1 2 4 8 42 R2P/IST 技術講演会 O(w3) から 実質 O(w) にするアーキテクチャ技術 ステージ ユニット 提案技術 命令フェッチ 命令キャッシュ リネーミング RMT ディスパッチ・イメージ・キャッシュ 命令ウィンドウ マトリクス・スケジューラ ディスパッチ スケジューリング 発行 レジスタ読み出し クラスタ化 演算器 レジスタ・ファイル バイパス 非レイテンシ指向 レジスタ・キャッシュ・システム メモリ依存解析 依存解析器 NOSQ 演算器の追加 演算器 ツインテール・アーキテクチャ 実行 レジスタ書き戻し 43 R2P/IST 技術講演会 スーパスカラ・プロセッサの回路面積 回路面積 制御 演算器 キャッシュ,I/O w 1 2 4 8 44 R2P/IST 技術講演会 評価 Alpha 21464 のフロアプラン R. Preston, et al.: Design of an 8-wide superscalar RISC microprocessor with simultaneous multithreading, ISSCC, pp. 334―472 (2002). SPEC CPU 2006 の平均 IPC 45 R2P/IST 技術講演会 Instruction Reg Window File FP FU (x4) INT FU (x8) 20mm RMT Insn Buf L1 I$ Insn Unit L2 Cache Tag Array LSQ L1 D$ L2 Cache Control : Cache : Functional Unit L2 Cache Data Array (3MB) : OoO Control : Instruction Fetch Unit : Inter Processor Router, Memory Controller, IO … 20mm 2011/09/07 46 R2P/IST 技術講演会 0% 20% Cache 2011/09/07 40% Functional Unit 60% OoO Control 80% Fetch Unit 100% IO Other 47 R2P/IST 技術講演会 2 1.8 1.6 OoO-Prop-8w 1.4 OoO-Prop-4w OoO-Prop-2w 1.2 IPC OoO-Prop-1w OoO-Base-8w 1 OoO-Base-4w OoO-Base-2w 0.8 OoO-Base-1w Inorder-8w 0.6 Inorder-4w Inorder-2w 0.4 Inorder-1w 0.2 0 0 50 100 150 Area 2011/09/07 48 R2P/IST 技術講演会 7 6 OoO-Prop-8w OoO-Prop-4w OoO-Prop-2w OoO-Prop-1w OoO-Base-8w OoO-Base-4w OoO-Base-2w OoO-Base-1w Inorder-8w Inorder-4w Inorder-2w Inorder-1w IPC per Area 5 4 3 2 1 0 No L2 64KB 128KB 256KB 512KB 1MB 2MB L2 Cache Capacity 2011/09/07 49 R2P/IST 技術講演会 結果から言えること 面積効率に最も影響を与えるのは,キャッシュの容量 x86 的 汎用マルチコアのキャッシュは,面積効率的には多すぎる 128K~256K では,OoO 2~4way がよい 0K~64K では,スカラ,1~2way がよい 「固定費」であるキャッシュ,I/O の割合が多い → way 数を増やして,演算器を増やした方がよい 総合的には 同じ性能ならコア数が少ない方がよいことを考え合わせると, 「x86 的 汎用マルチコア,キャッシュ少なめ」がよい 50 R2P/IST 技術講演会 評価は適正か? 評価の問題 面積の精度は高くない SPEC しかない IPC の平均しかない 並列化されてない SPEC CPU 2006 最適化の程度は,CS のプロから見ると,高くない CS が専門ではない,その分野のエース級プログラマが書いた? 実際あり得る最適化の程度をかなりうまく反映している? 51 R2P/IST 技術講演会 SPEC CPU 2006 INT Name Description Lang Name Lang Description 400.perlbench C PERL Programming Language 458.sjeng C Artificial Intelligence: chess 401.bzip2 C Compression 462.libquantum C Physics: Quantum Computing 403.gcc C C Compiler 464.h264ref C Video Compression 429.mcf C Combinatorial Optimization 471.omnetpp C++ Discrete Event Simulation 445.gobmk C Artificial Intelligence: go 473.astar C++ Path-finding Algorithms 456.hmmer C Search Gene Sequence 483.xalancbmk C++ XML Processing 52 R2P/IST 技術講演会 SPEC CPU 2006 FP Name Lang Description Name Lang Description 410.bwaves Fortran Fluid Dynamics 450.soplex C++ Simplex Linear Programming Solver 416.gamess Fortran Quantum Chemistry 453.povray C++ Image Ray-tracing Quantum Chromo-dynamics 454.calculix C/ Fortran Structural Mechanics 433.milc C 434.zeusmp Fortran Physics / CFD 459.GemsFDTD Fortran Computational Electromagnetics 435.gromacs C/ Fortran Biochemistry/Molecular Dynamics 465.tonto Fortran Quantum Chemistry 436.cactusADM C/ Fortran Physics / General Relativity 470.lbm C 437.leslie3d Fortran Fluid Dynamics 481.wrf C/ Fortran Weather Prediction 482.sphinx3 C Speech recognition 444.namd C++ Biology / Molecular Dynamics 447.dealII C++ Finite Element Analysis Fluid Dynamics 53 R2P/IST 技術講演会 おわりに 2011/09/07 R2P/IST 技術講演会 Divergence と Convergence Divergence へ向かわせる圧力 演算能力の不足 消費電力の過剰 Convergence へ向かわせる圧力 製造コストの上昇 機能の高度化・複雑化 → SW 開発コストの上昇 ⇓ 少品種大量生産 プログラマビリティ 55 R2P/IST 技術講演会 Convergent Evolution Convergent Evolution(収斂進化) 1. 汎用マルチコアの面積効率を高める 2. アクセラレータのプログラマビリティを高める 同じようなところに至る 棲み分けはできるか? → おそらく,No その時,どちらが「強い」か 1. 前者の方が,道が真っ直ぐで,HW/SW の技術的蓄積が多い 2. 後者は,改良を重ねるたびに,ちょっとずつ違うものになってしまう 例えば,GPU にキャッシュを追加するとか 56 R2P/IST 技術講演会 Convergent Evolution 「x86 的 汎用マルチコア,キャッシュ少な目」が有望 x86 vs. ARM なら,ARM が有利 命令セット 下から攻めたほうが勢いがある x86 に比べれば,ARM の方がだいぶマシ 歴史は繰り返す(?) 実際,Atom は負けつつある 57 R2P/IST 技術講演会 予言 予言: 「アクセラレータ は先細り」 「ディジタル LSI は,メモリと,ARM マルチコア と FPGA だけになる」 データに基づかない: 汎用マルチコア と アクセラレータ は,比較困難 現状では,製造プロセス,動作周波数などが違いすぎる データに基づく予測: 汎用マルチコアは,大型コア×少数 が 小型コア×多数 よりよい この結果を,汎用マルチコア vs. アクセラレータ に外挿すれば… 58 R2P/IST 技術講演会 やっておくべきこと 「来年,アクセラレータがなくなる」という話ではない 逆に,「ゆでガエル」にならないか心配 汎用マルチコアの研究 コアの面積効率の向上 キャッシュの利用効率の向上 アクセラレータの研究 当面は,プログラマビリティの向上 「いつか止める心づもり」 59
© Copyright 2024 ExpyDoc