Download - 並列計算への道 2015年版
並列計算への道 2015 年版The Road of Parallel Computing
シンビー2015/5/1
コンピュータの比較1976 TK-80 2015 iPad
89,500 円コンピュータ博物館および Apple 社 HP より引用
ゲーム機比較1979 TVブロックゲーム 2013 PlayStation 4
<="">
13,500 円akiba.geocities.yahoo.co.jp Playstation.com から引用
初歩のラジオ 1980 8 月号
taiyoyaro.ocnk.net から引用
ラジオだけにアンプ作成の記事とかもある フィードバックがあるのが特徴
noritsugu.at.webry.info から引用
ないものは作る (1980 頃 )
noritsugu.at.webry.info から引用
拡大
★ 競馬ゲーム”ダービー” ★ TV タンク戦争ゲーム
1980 年頃の最新ゲーム機
http://www.areiz6.com から引用
ないから作る
http://www.geocities.jp/shoranosekai/Game-1.html から
中身はこう
C-MOS の IC が 3 個使ってあります (4017B×2 、 4093B×1)
http://www.geocities.jp/shoranosekai/Game-2.html から
4017B
4093B
AND + NOT(NAND) 回路
状態遷移マシン
http://www.geocities.jp/shoranosekai/Game-1.html から状態遷移マシン
入力
出力
CMOS NAND ゲート中身は MOSFETでアナログ
トランジスタと FET
バイポーラ・トランジスタはスイッチや増幅といった働きを入力電流で制御しているのに対して、 MOSFET は入力電圧による電界で制御している。 (Wikipedia から )
トランジスタには増幅作用はない??
ベースに貧弱な電流を入れると、入れた電流に応じて本流の大きな電流を調節できる のがトランジスタです
トランジスタを使った回路
自己バイアスをかけると安定フィードバックをかけると安定
いろいろなゲート
加算回路 ( ハーフアダー )
A B C S0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0
XOR
AND
加算回路 ( フルアダー )
前の位からの繰上
加算回路 ( フルアダー )
前の位からの繰上
複数ビットの加算器
AND/OR 回路の組み合わせで加算器ができる
乗算器
idlef54a.blog.fc2.com から引用
2 の補数• 2 の補数を使うと
– 足し算だけで引き算ができる• 4bit の引き算 : 0100 – 0011 を考える (4-3)• 0100 – 0011 • 0100 + (0011 の 2 の補数 )• 0100 + (1100 + 1)• 0100 + 1101• 0100 + 1101 => 10001 => 0001
除算器
www.geocities.jp/hiroyuki0620785/intercomp/logic/adder/Divider.htm から引用
AND/OR → 加減ジョジョ加減
乗算 除算
1979 の電卓時計機能付手帳電卓
8 桁液晶表示7,900 円
casio.ledudu.com から引用
RS フリップフロップ出力が入力へフィードバック
AND/OR → 加減乗除 + 記憶加減
乗算 除算
FF
Dフリップフロップ
AND/OR → 加減乗除 + 記憶 + クロック加減
乗算 除算
FF
Intel 4004
1971 年発表、 4 ビットマイクロプロセッサである。クロック周波数は、 500kHz から 741kHz
ムーアの法則
集積回路上のトランジスタ数は「 18 か月( =1.5 年)ごとに倍になる」Intel HP から引用 (?)
実際のリコンウエハ
d.hatena.ne.jp/SuperPC_JUNS から引用
コンピュータの比較1976 TK-80• 8bit CPU• 2.4576MHz• ROM:256 B• RAM:128 B
2015 NEC PC• 64bit CPU• 3.6 GHz(4.0GHz)• HDD:1T• RAM:16G
科学技術計算例void matrixmultiply(double a[N][N],double b[N][N],double c[N][N]) { int i,j,k;
for(i=0;i<N;i++) { for(j=0;j<N;j++) {
for(k=0;k<N;k++) { c[i][j]+=a[i][k]*b[k][j];
} }
} }
1976→2010
1976 TK-80• 8bit CPU• 2.4576MHz• ROM:256 B• RAM:128 B
2010 NEC PC• 64bit CPU• 3.6 GHz(4.0GHz)• HDD:1T• RAM:16G
void matrixmultiply(double a[N][N],double b[N][N],double c[N][N]) { int i,j,k;
for(i=0;i<N;i++) { for(j=0;j<N;j++) {
for(k=0;k<N;k++) { c[i][j]+=a[i][k]*b[k][j];
} }
} }
勝手に1000倍以上早くなる
クロック周波数は頭打ち
acm.org から引用
1976→2010→2015
1976
• 2.5MHz
2010
• 3.0MHz
2015
• 4.0MHz
勝手に1000倍以上早くなる 勝手にはそうそう早くならない
2010→2015
2010 Core i7 (Lynnfield)• 3.06GHz• コア数 4(8)
2015 Core i7 Extreme(Haswell)
• 3.0GHz(3.5GHz)• コア数 8(16)
2010 Xeon (Lynnfield)• 3.06GHz• コア数 4(8)
2015 Xeon E5-2699 v3(Haswell)
• 2.3GHz(3.6GHz)• コア数 18(36)
積和演算 ( 行列演算 )
並列計算が可能
こう書いても早くならないvoid matrixmultiply(double a[N][N],double b[N][N],double c[N][N]) { int i,j,k;
for(i=0;i<N;i++) { for(j=0;j<N;j++) {
for(k=0;k<N;k++) { c[i][j]+=a[i][k]*b[k][j];
} }
} }
それぞれを独立して計算すれば早くなる
それぞれを独立して計算すれば早くなる
処理を各コアに割り当てる( スレッド対応 )
並列化の方法• スレッド• OpenMP• MPI• Intel Threading Building Blocks(TBB)• GPGPU
– OpenCL– CUDA
• Parallella (Epiphany)• FPGA で専用ハードを作る
Agenda
• GPGPU– OpenCL– CUDA
• Parallella (Epiphany)• FPGA で専用ハードを作る• 何を計算させるか?
GPGPU を使う方法• GPU = Graphics Processing Unit
16,480 円3D のゲームに強い
msi.com から引用 (?)
GTX 750i
CUDA コア 640
クロック 1.02 GHz(1.085G)
メモリインタフェース
128-bit GDDR5
Processing Power 1306GFlops(Single float)
Wikipedia より
Intel Xeon E5-2699 v3(Haswell)
16 ~ 18 コア569,915 円
VS?? Intel Xeon??
16,480 円
547.2Gflops
16,480 円
GTX 750i vs スパコン ??
CUDA コア 640
クロック 1.02 GHz(1.085G)
メモリインタフェース
128-bit GDDR5
Processing Power 1306GFlops(Single float)
Wikipedia よりPRIMEHPC FX102014 理研が購入
384 ノードx 16 コア =6144
2億円~90.8TFLOPS
69 倍以上の性能差 ?
GTX750i (Maxwell) の本当の姿5 基の Maxwellストリーミング・プロセッサ( SMM )
nvidia.com から引用
SMM の中身
4つのインストラクションバッファ 細かいところは企業秘密らしいインストラクションバッファが4つということは CPU的な CORE が4つ ?メモリサイズは?不明キャッシュサイズも不明
CORE がいっぱいCORE = 演算ユニット
CPU ではない
GTX 750i vs Intel XeonGTX750i Xeon E5-2699
CPU 的コア 20? 36
クロック 1.02 GHz(1.085G)
2.3GHz(3.6GHz)
計算用 Core 640 8?x36=288理論 GFLOPS から逆算
GFLOPS 1306 547.2
569,915 円16,480 円
GPU に特化したプロセッサー OS も載る汎用プロセッサー
CUDA コアが 640 あるがそれを効率的に生かせるかどうかは対象となるアプリしだいスパコンの FLOPS と比べるのはおそらくナンセンスでしょう
GPU が強みを発揮する分野
一つ一つの処理の関連性が薄いポリゴンの計算=Graphic Processing
GPGPU
科学技術計算とかにつかえるのでは?2001プログラマブル GPU 「 GeForce3 」General-purpose computing on graphics processing units
2001業界初のプログラマブルGPU「GeForce3」を発表DirectX 8対応、Vertexシェーダ/Pixelシェーダ搭載
This example performs an NBody simulation which calculates a gravity field and corresponding velocity and acceleration contributions accumulated by each body in the system from every other body. This example also shows how to mitigate computation between all available devices including CPU and GPU devices, as well as a hybrid combination of both, using separate threads for each simulator
CUDA開発環境 1/2
NVIDIA が提供する GPU向けの C言語の統合開発環境であり、コンパイラ (nvcc) やライブラリなどから構成されている。
CUDA開発環境 2/2
OpenCL
khronosu.org から引用
OpenCL vs CUDA
CUDA• nVIDIA という企業の技術• C/C++ を使う
OpenCL• KHRONOS という団体が推奨している一般技術• C ライクな言語を使う
Intel や AMD の製品では CUDA は使えない
amd.com から引用
まとめ :CPU vs GPU
CPU• 2.0 ~ 4.0 GHz• 4 ~ 36 コア• 汎用的なコア• ~ 288 の演算器
GPU(GTX750i)• 1GHz 程度• 20(程度 ) の CPU的コア• GPU に特化したコア• 640 の CUDA コア
あくまで CPU を補助する特定分野に強い計算機CPU と GPU を比べるのはおそらくナンセンスでしょう
参考 :Tesla K80nVIDIA 社のサーバ用
GPGPU
グラフィックスプロセッサ NVIDIA® GK210 × 2
CUDA コアプロセッサ 4992 コア (1GPU あたり 2496 コア )
倍精度浮動小数点性能 2.91 TFlops (GPU Boost Clocks)1.87 Tflops (Base Clocks)
単精度浮動小数点性能 8.74 Tflops (GPU Boost Clocks)5.6 Tflops (Base Clocks)
グラフィックカードではないので表示をする機能がない
参考 :TSUBAME (つばめ)東京工業大学に設置された大規模クラスター型スーパーコンピュータの名称。Linpackベンチマークで 38.18TFLOPS を達成し、 2006 年 6 月の世界のスーパーコンピュータ性能ランキング TOP500 において、7 位にランクインした
TSUBAME 2.5"THIN" ノード (1408 ノード ) -- HP SL390s G7, Xeon X5670 2つ , NVIDIA Tesla K20X 3つ , メモリ 54GiB or 96GiB"Medium" ノード (24 ノード ) -- HP DL580 G7, Xeon 7550 4つ , NVIDIA Tesla S1070 or S2070, メモリ 128GiB"Fat" ノード (10 ノード ) -- HP DL580 G7, Xeon 7550 4つ , NVIDIA Tesla S1070, メモリ 256GiB or 512GiB
Amazon で\78,800
Amazon で¥ 492,156
参考 : スパコン TOP500(2014 Nov.)
既製品をつかっていて、意外とすごみがない価格 com で \345,275780 億円 !!
\83,807 * 35040 = 28 億円 !!
ベンチマーク早くても意味なし• どんな計算をさせるかの方が重要 !!
早稲田大学のスパコン事情2011 年 3 月 3日早稲田大学の「グリーン・コンピューティング・システム研究開発センター」に先行納入8 コア POWER7® プロセッサーを用いた世界最大級の空冷 128 コアSMP(Symmetric Multi-Processor) システム1 ノードあたり約 8.2TFLOPS の理論ピーク性能
2007 年 12 月 25日日本 SGI が 早稲田大学・笠原研究室にミッドレンジサーバ「 Altix 450 」を納入「デュアルコア Itanium 2 」を、 1 システム当たり 16 コアを搭載SGI Altix 450 1Node 0.24TFLOPS = 13GFLOPS×18CPUs(36cores)CPU : Intel Itanium 9140M 1.66GHz dual-coreMemory : 512GB/nodes
Agenda
• GPGPU– OpenCL– CUDA
• Parallella (Epiphany)• FPGA で専用ハードを作る• 何を計算させるか?
Parallella について• Parallella は Adapteva 社が販売をしている
– Epiphany というマルチコアチップ– 並列コンピューティングをターゲット–名刺サイズのコンピュータ
\17,318 ~ \34,493
Parallella の中身
マルチコア(Epiphany)
コアが高速ネットワーク ( メッシュ ) でつながれているネットワークでつながれている
コアの中身メモリ
演算器が2つ
GPU vs Parallella
GPU(GTX750i)• 1.02GHz• 20(程度 ) の CPU的コア• GPU に特化したコア• 640 の CUDA コア• 詳細スペック未公開
– PTX コードと呼ばれる仮想的なコードだけ公開• 1306 GFLOPS(Peak Performance)
– 640 * 2 * 1.02GHz
Parallella(Epiphany)• 1GHz• 16 個の Epiphany( 拡張可能 )
• 汎用 CPU• 演算器 2つ• 32K バイトのローカルメモリ• DMA エンジン• 32 GFLOPS (Peak Performance)
– 16 x 2 x 1 GHz
GPU と Parallella を比べるのはおそらくナンセンスでしょう
Parallella タワー128 GFLOPS!!
おまけ :8192 GFLOPS!!
Parallella について、詳しくは
細かい話は記事を読んでください。
Parallella まとめ• Parallella をつかうと“なにか”できそう。
– C/C++ でプログラミングができる
Agenda
• GPGPU– OpenCL– CUDA
• Parallella (Epiphany)• FPGA で専用ハードを作る• 何を計算させるか?
FPGA とはなにか?• Field Programmable Gate Array の略
自分の好きな回路を書ける
xilinx.com から引用 (?)
L チカ (LED チカチカ )
SW
クロックに同期した処理が得意
FPGA で画像処理の例
1920×1080@60P なら150MHz のスピードの入力
メモリにためることなくリアルタイムで出力
FPGA の特徴• 自分で回路を組むことができる
– 並列処理で特殊処理を組むことが可能• ソフトウェアでは達成できないタイミングの処理、とりわけクロックに同期する処理を可能とする
– 処理時間が一定しない処理は苦手• 動作スピードは 100MHz ~ 200MHz
– 中には特殊な機能を積んであるチップで 1G Hz を超える入出力も可能なものもある。その場合でも、内部は 100MHz ~ 200MHz
Agenda
• GPGPU– OpenCL– CUDA
• Parallella (Epiphany)• FPGA で専用ハードを作る• 何を計算させるか?
比較動作クロック
クロックに同期した処理
並列処理
整数演算
(浮動 )小数点演算
階層のある処理
柔軟性
PC(intel) 3G~ × ▽ ○ ○ ◎ ◎GPGPU 1 ~ 2G × ◎ ○ ◎ ▽ ○
FPGA 100M ~200M
◎ ◎ ○ ▽ ▽ ▽
動作クロックを考えると PCが圧倒的に早いクロック同期をするような処理は FPGA が断然得意
並列処理は GPGPU も FPGAも得ルートの計算や割り算は PC が
GPGPU が得意。積和演算ならFPGA も得意
階層のある (再帰処理のある ) 処理は PC が得意
何を計算させるか?• マンデンブロ集合?
– 並列処理のデモとして格好の対象• それぞれの計算が独立• 分割が用意
– 入力がない• 入力データがなく、結果は出力だけ
並列計算の流れ処理
分割 割り振り
結果を集約
おさらい
CUDA での処理 Parallella の内部構造
ネットワークを通してデータのやり取りネットワークで繋がれている
並列処理のコスト• 計算のコスト• ネットワークのコスト
– 処理を割り振るときにネットワークを使用する– 処理結果を得るときにネットワークを使用する
並列計算 ( 例 1)
60
10
10
10
10
10
10
5
入力のコスト 出力のコスト
5
トータルの時間 =5 + 10 + 5
並列計算 ( 例 2)
60
1010
10
10
1010
5
入力のコスト 出力のコスト
5
トータルの時間 =5 + 10 + 10 + 5
計算に順序性がある
並列計算 ( 例 3)
60
5
5
入力のコスト 出力のコスト
5
トータルの時間 =5 + 5 + 5 + 5 + 5 + 5 + 5 + 5
パイプライン化粒度が細かければ効果的
5 55 5 5
5
5 5 5 55
最適な手段はケースバイケース• 4GHz CPU で単純に計算した方が早い• 1GHz の GPGPU で並列計算した方が早い• 100MHz の FPGA で並列計算した方が早い
• 関連する項目– 並列の粒度– 順序性– ネットワークのスピード– ノード計算能力
力尽きたのでこの辺で終わり