並列計算への道 2015年版

Post on 15-Apr-2017

420 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

並列計算への道 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 から引用

拡大

★ 競馬ゲーム”ダービー” ★ 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でアナログ

n 型 MOS FET

Wikipedia より引用

トランジスタと 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 から引用

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

8 桁液晶表示7,900 円

casio.ledudu.com から引用

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

Dフリップフロップ

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 で並列計算した方が早い

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

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

top related