100
並並並並並並並 2015 並並 The Road of Parallel Computing 並並並並 2015/5/1

並列計算への道 2015年版

  • Upload
    ryos36

  • View
    422

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 並列計算への道 2015年版

並列計算への道 2015 年版The Road of Parallel Computing

シンビー2015/5/1

Page 2: 並列計算への道 2015年版

コンピュータの比較1976 TK-80 2015 iPad

89,500 円コンピュータ博物館および Apple 社 HP より引用

Page 3: 並列計算への道 2015年版

ゲーム機比較1979 TVブロックゲーム 2013 PlayStation 4

<="">

13,500 円akiba.geocities.yahoo.co.jp Playstation.com から引用

Page 4: 並列計算への道 2015年版

初歩のラジオ 1980 8 月号

taiyoyaro.ocnk.net から引用

Page 5: 並列計算への道 2015年版

ラジオだけにアンプ作成の記事とかもある フィードバックがあるのが特徴

noritsugu.at.webry.info から引用

Page 7: 並列計算への道 2015年版

拡大

★ 競馬ゲーム”ダービー” ★ TV タンク戦争ゲーム

Page 8: 並列計算への道 2015年版

1980 年頃の最新ゲーム機

http://www.areiz6.com から引用

Page 9: 並列計算への道 2015年版

ないから作る

http://www.geocities.jp/shoranosekai/Game-1.html から

Page 10: 並列計算への道 2015年版

中身はこう

C-MOS の IC が 3 個使ってあります (4017B×2 、 4093B×1)

http://www.geocities.jp/shoranosekai/Game-2.html から

Page 11: 並列計算への道 2015年版

4017B

Page 12: 並列計算への道 2015年版

4093B

Page 13: 並列計算への道 2015年版

AND + NOT(NAND) 回路

Page 14: 並列計算への道 2015年版

状態遷移マシン

http://www.geocities.jp/shoranosekai/Game-1.html から状態遷移マシン

入力

出力

Page 15: 並列計算への道 2015年版

CMOS NAND ゲート中身は MOSFETでアナログ

Page 16: 並列計算への道 2015年版

n 型 MOS FET

Wikipedia より引用

Page 17: 並列計算への道 2015年版

トランジスタと FET

バイポーラ・トランジスタはスイッチや増幅といった働きを入力電流で制御しているのに対して、 MOSFET は入力電圧による電界で制御している。 (Wikipedia から )

Page 18: 並列計算への道 2015年版

トランジスタには増幅作用はない??

ベースに貧弱な電流を入れると、入れた電流に応じて本流の大きな電流を調節できる のがトランジスタです

Page 19: 並列計算への道 2015年版

トランジスタを使った回路

Page 20: 並列計算への道 2015年版

自己バイアスをかけると安定フィードバックをかけると安定

Page 21: 並列計算への道 2015年版

アナログ → デジタル

Page 22: 並列計算への道 2015年版

いろいろなゲート

Page 23: 並列計算への道 2015年版

加算回路 ( ハーフアダー )

A B C S0 0 0 0

0 1 0 1

1 0 0 1

1 1 1 0

XOR

AND

Page 24: 並列計算への道 2015年版

加算回路 ( フルアダー )

前の位からの繰上

Page 25: 並列計算への道 2015年版

加算回路 ( フルアダー )

前の位からの繰上

Page 26: 並列計算への道 2015年版

複数ビットの加算器

AND/OR 回路の組み合わせで加算器ができる

Page 27: 並列計算への道 2015年版

乗算器

idlef54a.blog.fc2.com から引用

Page 28: 並列計算への道 2015年版

2 の補数• 2 の補数を使うと

– 足し算だけで引き算ができる• 4bit の引き算 : 0100 – 0011 を考える (4-3)• 0100 – 0011 • 0100 + (0011 の 2 の補数 )• 0100 + (1100 + 1)• 0100 + 1101• 0100 + 1101 => 10001 => 0001

Page 29: 並列計算への道 2015年版

除算器

www.geocities.jp/hiroyuki0620785/intercomp/logic/adder/Divider.htm から引用

Page 31: 並列計算への道 2015年版

1979 の電卓時計機能付手帳電卓

8 桁液晶表示7,900 円

casio.ledudu.com から引用

Page 32: 並列計算への道 2015年版

RS フリップフロップ出力が入力へフィードバック

Page 34: 並列計算への道 2015年版

Dフリップフロップ

Page 36: 並列計算への道 2015年版

Intel 4004

1971 年発表、 4 ビットマイクロプロセッサである。クロック周波数は、 500kHz から 741kHz

Page 37: 並列計算への道 2015年版

ムーアの法則

集積回路上のトランジスタ数は「 18 か月( =1.5 年)ごとに倍になる」Intel HP から引用 (?)

Page 38: 並列計算への道 2015年版

アナログ → デジタル

Page 39: 並列計算への道 2015年版

実際のリコンウエハ

d.hatena.ne.jp/SuperPC_JUNS から引用

Page 40: 並列計算への道 2015年版

コンピュータの比較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

Page 41: 並列計算への道 2015年版

科学技術計算例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];

} }

} }

Page 42: 並列計算への道 2015年版

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倍以上早くなる

Page 43: 並列計算への道 2015年版

クロック周波数は頭打ち

acm.org から引用

Page 44: 並列計算への道 2015年版

1976→2010→2015

1976

• 2.5MHz

2010

• 3.0MHz

2015

• 4.0MHz

勝手に1000倍以上早くなる 勝手にはそうそう早くならない

Page 45: 並列計算への道 2015年版

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)

Page 48: 並列計算への道 2015年版

こう書いても早くならない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];

} }

} }

Page 49: 並列計算への道 2015年版

それぞれを独立して計算すれば早くなる

Page 50: 並列計算への道 2015年版

それぞれを独立して計算すれば早くなる

Page 52: 並列計算への道 2015年版

並列化の方法• スレッド• OpenMP• MPI• Intel Threading Building Blocks(TBB)• GPGPU

– OpenCL– CUDA

• Parallella (Epiphany)• FPGA で専用ハードを作る

Page 53: 並列計算への道 2015年版

Agenda

• GPGPU– OpenCL– CUDA

• Parallella (Epiphany)• FPGA で専用ハードを作る• 何を計算させるか?

Page 54: 並列計算への道 2015年版

GPGPU を使う方法• GPU = Graphics Processing Unit

16,480 円3D のゲームに強い

msi.com から引用 (?)

Page 55: 並列計算への道 2015年版

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

Page 56: 並列計算への道 2015年版

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 倍以上の性能差 ?

Page 57: 並列計算への道 2015年版

GTX750i (Maxwell) の本当の姿5 基の Maxwellストリーミング・プロセッサ( SMM )

nvidia.com から引用

Page 58: 並列計算への道 2015年版

SMM の中身

4つのインストラクションバッファ 細かいところは企業秘密らしいインストラクションバッファが4つということは CPU的な CORE が4つ ?メモリサイズは?不明キャッシュサイズも不明

CORE がいっぱいCORE = 演算ユニット

CPU ではない

Page 59: 並列計算への道 2015年版

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 と比べるのはおそらくナンセンスでしょう

Page 60: 並列計算への道 2015年版

GPU が強みを発揮する分野

一つ一つの処理の関連性が薄いポリゴンの計算=Graphic Processing

Page 61: 並列計算への道 2015年版

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

Page 62: 並列計算への道 2015年版

CUDA開発環境 1/2

NVIDIA が提供する GPU向けの C言語の統合開発環境であり、コンパイラ (nvcc) やライブラリなどから構成されている。

Page 63: 並列計算への道 2015年版

CUDA開発環境 2/2

Page 65: 並列計算への道 2015年版

OpenCL

khronosu.org から引用

Page 66: 並列計算への道 2015年版

OpenCL vs CUDA

CUDA• nVIDIA という企業の技術• C/C++ を使う

OpenCL• KHRONOS という団体が推奨している一般技術• C ライクな言語を使う

Intel や AMD の製品では CUDA は使えない

amd.com から引用

Page 67: 並列計算への道 2015年版

まとめ :CPU vs GPU

CPU• 2.0 ~ 4.0 GHz• 4 ~ 36 コア• 汎用的なコア• ~ 288 の演算器

GPU(GTX750i)• 1GHz 程度• 20(程度 ) の CPU的コア• GPU に特化したコア• 640 の CUDA コア

あくまで CPU を補助する特定分野に強い計算機CPU と GPU を比べるのはおそらくナンセンスでしょう

Page 68: 並列計算への道 2015年版

参考 :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)

グラフィックカードではないので表示をする機能がない

Page 69: 並列計算への道 2015年版

参考 :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

Page 70: 並列計算への道 2015年版

参考 : スパコン TOP500(2014 Nov.)

既製品をつかっていて、意外とすごみがない価格 com で \345,275780 億円 !!

\83,807 * 35040 = 28 億円 !!

Page 71: 並列計算への道 2015年版

ベンチマーク早くても意味なし• どんな計算をさせるかの方が重要 !!

Page 72: 並列計算への道 2015年版

早稲田大学のスパコン事情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

Page 73: 並列計算への道 2015年版

Agenda

• GPGPU– OpenCL– CUDA

• Parallella (Epiphany)• FPGA で専用ハードを作る• 何を計算させるか?

Page 74: 並列計算への道 2015年版

Parallella について• Parallella は Adapteva 社が販売をしている

– Epiphany というマルチコアチップ– 並列コンピューティングをターゲット–名刺サイズのコンピュータ

\17,318 ~ \34,493

Page 75: 並列計算への道 2015年版

Parallella の中身

マルチコア(Epiphany)

Page 76: 並列計算への道 2015年版

コアが高速ネットワーク ( メッシュ ) でつながれているネットワークでつながれている

Page 77: 並列計算への道 2015年版

コアの中身メモリ

演算器が2つ

Page 78: 並列計算への道 2015年版

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 を比べるのはおそらくナンセンスでしょう

Page 79: 並列計算への道 2015年版

Parallella タワー128 GFLOPS!!

Page 80: 並列計算への道 2015年版

おまけ :8192 GFLOPS!!

Page 81: 並列計算への道 2015年版

Parallella について、詳しくは

細かい話は記事を読んでください。

Page 82: 並列計算への道 2015年版

Parallella まとめ• Parallella をつかうと“なにか”できそう。

– C/C++ でプログラミングができる

Page 83: 並列計算への道 2015年版

Agenda

• GPGPU– OpenCL– CUDA

• Parallella (Epiphany)• FPGA で専用ハードを作る• 何を計算させるか?

Page 84: 並列計算への道 2015年版

FPGA とはなにか?• Field Programmable Gate Array の略

自分の好きな回路を書ける

xilinx.com から引用 (?)

Page 85: 並列計算への道 2015年版

L チカ (LED チカチカ )

SW

Page 86: 並列計算への道 2015年版

いろんな回路を作ることができる

Page 87: 並列計算への道 2015年版

クロックに同期した処理が得意

Page 88: 並列計算への道 2015年版

FPGA で画像処理の例

1920×1080@60P なら150MHz のスピードの入力

メモリにためることなくリアルタイムで出力

Page 89: 並列計算への道 2015年版

FPGA の特徴• 自分で回路を組むことができる

– 並列処理で特殊処理を組むことが可能• ソフトウェアでは達成できないタイミングの処理、とりわけクロックに同期する処理を可能とする

– 処理時間が一定しない処理は苦手• 動作スピードは 100MHz ~ 200MHz

– 中には特殊な機能を積んであるチップで 1G Hz を超える入出力も可能なものもある。その場合でも、内部は 100MHz ~ 200MHz

Page 90: 並列計算への道 2015年版

Agenda

• GPGPU– OpenCL– CUDA

• Parallella (Epiphany)• FPGA で専用ハードを作る• 何を計算させるか?

Page 91: 並列計算への道 2015年版

比較動作クロック

クロックに同期した処理

並列処理

整数演算

(浮動 )小数点演算

階層のある処理

柔軟性

PC(intel) 3G~ × ▽ ○ ○ ◎ ◎GPGPU 1 ~ 2G × ◎ ○ ◎ ▽ ○

FPGA 100M ~200M

◎ ◎ ○ ▽ ▽ ▽

動作クロックを考えると PCが圧倒的に早いクロック同期をするような処理は FPGA が断然得意

並列処理は GPGPU も FPGAも得ルートの計算や割り算は PC が

GPGPU が得意。積和演算ならFPGA も得意

階層のある (再帰処理のある ) 処理は PC が得意

Page 92: 並列計算への道 2015年版

何を計算させるか?• マンデンブロ集合?

– 並列処理のデモとして格好の対象• それぞれの計算が独立• 分割が用意

– 入力がない• 入力データがなく、結果は出力だけ

Page 93: 並列計算への道 2015年版

並列計算の流れ処理

分割 割り振り

結果を集約

Page 94: 並列計算への道 2015年版

おさらい

CUDA での処理 Parallella の内部構造

ネットワークを通してデータのやり取りネットワークで繋がれている

Page 95: 並列計算への道 2015年版

並列処理のコスト• 計算のコスト• ネットワークのコスト

– 処理を割り振るときにネットワークを使用する– 処理結果を得るときにネットワークを使用する

Page 96: 並列計算への道 2015年版

並列計算 ( 例 1)

60

10

10

10

10

10

10

5

入力のコスト 出力のコスト

5

トータルの時間 =5 + 10 + 5

Page 97: 並列計算への道 2015年版

並列計算 ( 例 2)

60

1010

10

10

1010

5

入力のコスト 出力のコスト

5

トータルの時間 =5 + 10 + 10 + 5

計算に順序性がある

Page 98: 並列計算への道 2015年版

並列計算 ( 例 3)

60

5

5

入力のコスト 出力のコスト

5

トータルの時間 =5 + 5 + 5 + 5 + 5 + 5 + 5 + 5

パイプライン化粒度が細かければ効果的

5 55 5 5

5

5 5 5 55

Page 99: 並列計算への道 2015年版

最適な手段はケースバイケース• 4GHz CPU で単純に計算した方が早い• 1GHz の GPGPU で並列計算した方が早い• 100MHz の FPGA で並列計算した方が早い

• 関連する項目– 並列の粒度– 順序性– ネットワークのスピード– ノード計算能力

Page 100: 並列計算への道 2015年版

力尽きたのでこの辺で終わり