• 検索結果がありません。

Microsoft PowerPoint - GPGPU実践基礎工学(web).pptx

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft PowerPoint - GPGPU実践基礎工学(web).pptx"

Copied!
67
0
0

読み込み中.... (全文を見る)

全文

(1)

補足

MPIプログラムのコンパイル,実行

標準の環境ではmpic++やmpiexecを実行できない

OSがmpic++やmpiexecの場所を把握していないことが原因

OSが実行ファイルなどを探す場所(PATH)を設定

PATH(パス)にmpic++やmpiexecがあるディレクトリを追加PATHは.bashrcに記述.bashrcはホームディレクトリ(grouseにログインしたときの ディレクトリ)に置く ‐bash‐3.2$ mpic++ ‐bash: mpic++: command not found ‐bash‐3.2$ mpiexec ‐bash: mpiexec: command not found ‐bash‐3.2$

(2)

補足

MPIプログラムのコンパイル,実行

ホームディレクトリでls ‐a を実行して

.bashrcが見つかる場合  エディタで.bashrcを開いて編集  .bashrcが見つからない場合  ホームディレクトリに.bashrcを新しく作成  .(ドット)から始まるファイルはlsで表示されないlsに‐aオプションを付けて実行すると全てのファイルを表示

(3)

補足

MPIプログラムのコンパイル,実行

.bashrcに記述(追記)する内容

.bashrcに記述した内容を有効化

sourceコマンドを利用source 設定ファイル名 として実行 MPIROOT=/opt/mpi/openmpi/gcc PATH=$MPIROOT/bin:$PATH LD_LIBRARY_PATH=$MPIROOT/lib:$LD_LIBRARY_PATH MANPATH=$MPIROOT/share/man:$MANPATH export PATH export LD_LIBRARY_PATH export MANPATH

(4)

補足

MPIプログラムのコンパイル,実行

.bashrcをストリーミング配信サイトからダウンロードし

て利用するには

1.ストリーミング配信サイト(GPGUP実践基礎工学第8回)にアク セス 2.bashrcをダウンロードしてホームディレクトリに置く  アップロードしているファイル名はbashrc 3.mvコマンドを使ってファイル名を変更  mv 変更前ファイル名 変更後ファイル名mv bashrc .bashrc 4.sourceコマンドで設定を有効化  source .bashrc

(5)

長岡技術科学大学 電気電子情報工学専攻 出川智啓

(6)

今回の内容

GPUの進化の歴史

GPUのアーキテクチャ

(7)

GPU(Graphics Processing Unit)とは

画像処理専用のハードウェア

 具体的には画像処理用のチップ  チップ単体では販売されていない  PCI‐Exカードで販売(チップ単体と区別せずにGPUと呼ぶことも多い)  マザーボードやノートPCに搭載  PCI‐Exカードとして販売されるGPUには,ビデオメモリと呼ばれ るRAMが搭載

(8)

GPU(Graphics Processing Unit)とは

代表的な製品

NVIDIA GeForceAMD RadeonIntel HD Graphics(内蔵)

代表的な用途

3Dグラフィックス処理3Dゲーム,3DCAD,3DCG作成  エンコード・デコード支援  GPU上に専用チップを搭載していることが多い  デスクトップPCのGUI処理  Windows Aeroが比較的高性能なGPUを要求

(9)

GPU(Graphics Processing Unit)の役割

グラフィックスを表示するために様々な処理を行い,処

理の結果をディスプレイに出力

3次元グラフィックスの発展に伴って役割が大きく変化

3次元座標変換 ポリゴンとピクセルの 対応付け ピクセル色計算 テクスチャ参照 フレームバッファ(ビデ オメモリ)への書き込み ディスプレイ出力 CPU ビデオカード GPU 3次元座標変換 ポリゴンとピクセルの 対応付け ピクセル色計算 テクスチャ参照 フレームバッファ(ビデ オメモリ)への書き込み ディスプレイ出力 現在 過去  CPU が 3D 描 画 の演算を実行  GPUが出力 描画情報 画面出力  GPUが演算から 出力までの全て を担当  CPUは描画情報 の生成やGPUへ の情報の引き渡 し , GPU の 制 御 を行う 描画情報 画面出力

(10)

GPUの描画の流れ

1.

CPUからGPUへ描画情報を送信

2.

頂点処理(頂点シェーダ)

 座標変換  画面上での頂点やポリゴンの位置・大きさの決定  頂点単位での照明の計算

3.

頂点やポリゴンからピクセルを生成

(ラスタライザ)

4.

ピクセル処理(ピクセルシェーダ)

 画面上のピクセルの色  テクスチャの模様

5.

画面出力

 ピクセルの色情報をフレームバッファに書き込み 2. 3. 4.

(11)

ビデオカードの利点

CPUで描画のための演算を行うと,CPUにかかる負荷が

大きい

3次元画像処理の専用回路を備えたハードウェアを導入

○CPUにかかる負荷を減らすことができる ○頂点・ピクセルごとに並列処理が可能なため,ハードウェアに よる並列処理が可能

(12)

ビデオカードの欠点

3次元画像処理の専用回路を備えたハードウェアを導入

×新しい描画方法を開発しても,GPUへ実装・製品化されるまで 利用できない ×ユーザが所有しているGPUによって利用できる機能にばらつき が生じる ×ある描画手法用の専用回路を実装しても,その描画方法が 常に使われる訳ではないのでGPU全体の利用効率が下がる

(13)

ビデオカードから

GPUへ

CGの多様化と共に固定機能の実装が困難に

頂点処理とピクセル処理をユーザが書き換えられるプロ

グラマブルシェーダの実装

頂点処理用回路 ピクセル処理用回路 ビデオカード 頂点シェーダユニット ピクセルシェーダユニット GPU

(14)

レンダリングパイプライン処理

頂点情報 光源情報 視野変換 陰影計算 材質情報 投影変換 クリッピング ビューポート変換 走査変換 合成 テクスチャ 出力画像 投影像を画素 へ変換 整数演算とメモリ アクセス 形状データの画面 への投影像 実数演算

(15)

レンダリングパイプライン処理

頂点情報 光源情報 視野変換 陰影計算 材質情報 投影変換 クリッピング ビューポート変換 走査変換 合成 テクスチャ 出力画像 形状データの画面 への投影像 ハードウェアで処理 (固定機能) 実数演算 実数演算を行うハード ウェアは高価だった

(16)

レンダリングパイプライン処理

頂点情報 光源情報 視野変換 陰影計算 材質情報 投影変換 クリッピング ビューポート変換 走査変換 合成 テクスチャ 出力画像 ハードウェアで処理 (固定機能) ハードウェアで処理 (固定機能)

(17)

レンダリングパイプライン処理

頂点情報 光源情報 視野変換 陰影計算 材質情報 投影変換 クリッピング ビューポート変換 走査変換 合成 テクスチャ 出力画像 ピクセルシェーダ 頂点シェーダ

(18)

ビデオカードから

GPUへ

描画する画像によって頂点処理とピクセル処理の負荷

が変化

 処理によっては利用効率に差が発生し,利用効率が低下 GPU 頂点シェーダユニット ピクセルシェーダユニット 頂点処理重視の処理 GPU 頂点シェーダユニット ピクセルシェーダユニット ピクセル処理重視の処理 空きユニット 空きユニット

(19)

ビデオカードから

GPUへ

頂点シェーダとピクセルシェーダを統合したユニファイド

シェーダへの進化

 頂点処理とピクセル処理を切り替えることで利用率を向上 GPU ユニファイドシェーダユニット 頂点処理重視の処理 ピクセル処理重視の処理 GPU ユニファイドシェーダユニット

(20)

ビデオカードから

GPUへ

各ピクセルに対して並列に処理実行できるように進化

 単純な処理を行う演算器を大量に搭載  高い並列度で処理を実行 

GPUの誕生とGPGPUの普及

 高性能な3DCG画像処理への要求→GPUの高性能化 

GPUの長所

 消費電力あたりの浮動小数点理論演算性能が高い  GPU単体の消費電力は高い  (相対的に)安価  CPUだけで同等の計算能力を達成するより安価

(21)

Teslaアーキテクチャ

*

の構造

Tesla C1060の仕様

SM数 30CUDA Core数 240(=8 Core/SM×30 SM)  キャッシュを搭載せず *CUDAのサポートから外れます

(22)

Teslaアーキテクチャの構造

Tesla C1060の仕様

CUDAコア数(単精度) 240 Cores CUDAコアクロック周波数 1,296 MHz 単精度演算ピーク性能 622*1 (933*2) GFLOPS 倍精度演算ユニット数 30*3 Units 倍精度演算ピーク性能 78 GFLOPS メモリクロック周波数 800 MHz メモリバス幅 512 bit 最大メモリバンド幅*4 102 GB/s *1単精度演算ピーク性能 = コアクロック周波数×コア数×命令の同時発行数(2) *2CUDA CoreとSFUが同時に命令を発行できれば1296 MHz×240×3 *3一つのSMに倍精度演算器が一つ搭載 *4最大メモリバンド幅=メモリクロック周波数×メモリバス幅/8×2(Double Data Rate)

(23)

Fermiアーキテクチャの構造

Tesla M2050の仕様

SM数 14CUDA Core数 448(=32 Core/SM×14 SM)L1/L2 キャッシュを搭載ECC(誤り訂正機能)を搭載

(24)

Fermiアーキテクチャの構造

Tesla M2050の仕様

CUDAコア数(単精度) 448 Cores CUDAコアクロック周波数 1,150 MHz 単精度演算ピーク性能 1.03 TFLOPS 倍精度演算ユニット数 0*Unit 倍精度演算ピーク性能 515 GFLOPS メモリクロック周波数 1.55 GHz メモリバス幅 384 bit 最大メモリバンド幅 148 GB/s *1単精度CUDA Coreを2基使って倍精度演算を実行

(25)

Keplerアーキテクチャの構造

Tesla K20c/mの仕様

SMX数 13

Streaming Multiprocessor eXtreme (?)

(26)

Keplerアーキテクチャの構造

Tesla K20c/mの仕様

CUDAコア数(単精度) 2,496 Cores CUDAコアクロック周波数 706 MHz 単精度演算ピーク性能 3.52 TFLOPS 倍精度演算ユニット数 832*1 Units 倍精度演算ピーク性能 1.17 TFLOPS メモリクロック周波数 2.6 GHz メモリバス幅 320 bit 最大メモリバンド幅 208 GB/s *164基/SMX×13基

(27)

Maxwellアーキテクチャ

GeForce GTX TITAN Xの仕様

SM数 24

(28)

Maxwellアーキテクチャ

GeForce GTX TITAN Xの仕様

* CUDAコア数(単精度) 3,072 Cores CUDAコアクロック周波数 1,002 MHz 単精度演算ピーク性能 6.14 TFLOPS 倍精度演算ユニット数 0*1 Units 倍精度演算ピーク性能 192 GFLOPS*2 メモリクロック周波数 3.5 GHz*3 メモリバス幅 384 bit 最大メモリバンド幅 336.5 GB/s *1http://www.4gamer.net/games/121/G012181/20141225075/ *2倍精度演算は単精度演算の性能の1/32 (1/16 Flop/Core/clock) *3DDR(Double Data Rate) 7GHz相当と書かれている場合もある http://http://www.geforce.com/hardware/desk top‐gpus/geforce‐gtx‐titan‐x/specifications *http://ja.wikipedia.org/wiki/FLOPS

(29)

Pascalアーキテクチャ

2016年にリリース予定

 倍精度演算器を搭載予定

NVLink

GPU同士やGPUとCPUを接続する独自の方式

 通信(CPU ↔ メモリ ↔ PCI Express ↔ メモリ ↔ GPU)の

ボトルネックを解消(PCI Express3.0の5~12倍)

 複数のGPUを使って大規模な計算が可能

3Dメモリ(High Bandwidth Memory, HBM)*

3次元積層技術を利用し,メモリの容量と帯域を大幅に増加  最大32GB,メモリ帯域1TB/s

(30)

Voltaアーキテクチャ

Pascalの後継

詳しい情報は不明

アメリカの次世代スーパーコンピュータへ採用予定

 オークリッジ国立研究所 SUMMIT 150~300PFLOPS  ローレンス・リバモア研究所 SIERRA 100PFLOPS以上  地球シミュレータと同等の演算性能を1ノードで実現  現在Top500 2位のスーパーコンピュータと同じ電力で5~10 倍高速,サイズは1/5

(31)

GPUの普及の要因

GPUの進展は15年程

 普及の速度は驚異的 

CPUは数十年かけて進展

CPUも驚異的な速度で進展  様々な高速化技術を導入 

GPUが普及している要因は何か?

(32)

TOP500 List(2015, Jun.)

スーパーコンピュータの性能の世界ランキング

GPUを搭載したコンピュータは2基だけ http://www.top500.org/より引用 計算機名称(設置国) アクセラレータ 実効性能[PFlop/s] /ピーク性能[PFlop/s] 消費電力[MW] 1 Tianhe‐2 (China) Intel Xeon Phi 33.9/54.9 17.8 2 Titan (U.S.A.) NVIDIA K20x 17.6/27.1 8.20 3 Sequoia (U.S.A.) − 17.2/20.1 7.90 4 K computer (Japan) − 10.5/11.3 12.7 5 Mira (U.S.A.) − 8.59/10.1 3.95 6 Piz Daint (Switzerland) NVIDIA K20x 6.27/7.79 2.33

7 Shaheen II(Saudi Arabia) 5.54/7.24 2.83

8 Stampede (U.S.A.) Intel Xeon Phi 5.17/8.52 4.51 9 JUQUEEN (Germany) − 5.01/5.87 2.30 10 Vulcan (U.S.A.) − 4.29/5.03 1.97

(33)

CPUの性能向上サイクル

半導体回路 の細線化 消費電力が 低下 低下分の電 力をトランジ スタのスイッ チングに利用 動作周波数 向上 性能向上

(34)

CPUの性能向上サイクル

半導体回路 の細線化 消費電力が 低下 低下分の電 力をトランジ スタのスイッ チングに利用 動作周波数 向上 性能向上 絶縁部が狭くなり 漏れ電流が発生, 電力が低下しない 消費電力の増加に よって発熱量が増 加,空冷の限界 2倍のトランジスタ を使っても性能は 1.4倍程度にしか 伸びない

(35)

CPUの性能向上サイクル

半導体回路 の細線化 消費電力が 低下 低下分の電 力をトランジ スタのスイッ チングに利用 動作周波数 向上 性能向上 絶縁部が狭くなり 漏れ電流が発生, 電力が低下しない 消費電力の増加に よって発熱量が増 加,空冷の限界 2倍のトランジスタ を使っても性能は 1.4倍程度にしか 伸びない コア数の増加

(36)

CPUの性能向上

FLOPS = 

1コアの演算性能

× コア数

× CPUの動作周波数

1コアの演算性能の向上

 演算器(トランジスタ)の増加 

コア数の増加

 トランジスタ数の増加 

CPUの動作周波数

 回路の効率化や印可電圧の向上 劇的な性能向上は期待できない コンパイラの最適化を利用 複数のコアを使うように プログラムを書かないと 速くならない

(37)

GPUを使うという選択

GPU普及の要因の一つはCPUクロックの頭打ち

 クロックを下げてマルチコア化したCPUへの対応が必要 

なぜGPUという選択か?

CPU用プログラムの並列化でもいいのでは?

消費電力の低減

 数値計算や高性能計算(HPC)の業界がGPUに注目  スーパーコンピュータの性能向上  高機能なCPUを大量に使うと消費電力が問題に  高機能な制御用プロセッサと,計算を実行する低性能なアクセラ レータの組み合わせ

(38)

Green500(2015, Jun.)

日本の次世代機がTOP3を独占

AMD社のGPUが4位

NVIDIA社のGPUが5位以降を占める

計算機名称 アクセラレータ GFLOPS/W 消費電力[kW] 1 Shoubu PEZY‐SC 7.03 50.32

2 Suiren Blue PEZY‐SC 6.84 28.25 3 Suiren PEZY‐SC 6.22 32.59 4 ‐ AMD FirePro S9150 5.27 57.15 5 TSUBAME‐KFC NVIDIA K20x 4.25 39.83 6 XStream NVIDIA K80 4.11 190.0 7 Storm1 NVIDIA K40m 3.96 44.54 8 Wilkes NVIDIA K20 3.63 52.62 9 Taurus NVIDIA K80 3.61 58.01 10 iDataPlex NVIDIA K20x 3.54 54.60

(39)

まとめ

GPUの特徴

 低性能の演算器を大量に搭載(~3000コア) 

GPUが使われる理由

 理論演算性能が高い  メモリとチップ間の帯域も広い  省電力と高性能を両立  今後の計算機の主流になると考えられる 

将来に対する投資

GPUだけでなく,制御用CPU+計算用アクセラレータという思想 は今後しばらく主流であり続ける

(40)
(41)

情報処理センター

GPGPUシステム

16台の計算サーバで構成

NVIDIA Tesla M2050を搭載  各サーバに4機ずつ計64機 grouse tesla01 ‐ tesla04 M2050×16 tesla05 ‐ tesla08 M2050×16 tesla09 – tesla12 M2050×16 tesla13 – tesla16 M2050×16 外部ネットワーク

(42)
(43)

grouseへのログイン

(44)

ターミナルの起動

(45)
(46)

実行イメージ

grouse 処理 処理結果出力

(47)
(48)

実行イメージ

grouse ファイル 保存 ハード ディスク 共有 共有

tesla01 ‐ tesla04 tesla05 ‐ tesla08 tesla09 – tesla12 tesla13 – tesla16 共有

(49)

tesla??へのログイン

もう一つターミナルを起動し,下の ターミナルでログイン

$ ssh␣–l␣ユーザID␣tesla?? (??には01~16の番号を入力)

(50)

tesla??でのコンパイルとプログラム実行

grouseでの作業用

tesla??でのコンパイルと 実行用

(51)

tesla??でコンパイルとプログラム実行

コンパイル

nvcc˽ソースファイル名

nvccがコンパイル対象とするソースファイルの拡張子は.cu  エラーがなければa.outという実行ファイルが作成される 

実行

./a.out

nvccはgccと同じオプションを持っていることが多い

対応オプションの一覧は‐hオプションで確認

nvcc ‐h

(52)

実行イメージ

grouse 処理 処理結果出力 キー入力,マウス入力 $ ssh␣tesla16 tesla16 キー入力 処理 処理結果

(53)

実行イメージ

grouse キー入力,マウス入力 $ ssh␣tesla16 $ nvcc ??.cu キー入力 処理結果 ハード ディスク ??.cu コンパイル 処理結果出力 tesla16

(54)

実行イメージ

grouse 処理結果出力 キー入力,マウス入力 $ ssh␣tesla16 $ nvcc ??.cu $ ./a.out キー入力 処理結果 ハード ディスク a.out 実行 tesla16

(55)

実行イメージ

grouse キー入力,マウス入力 $ ssh␣tesla16 $ nvcc ??.cu $ ./a.out キー入力 ハード ディスク a.out 実行 tesla16 GPU0 GPU1 GPU2 GPU3 処理結果出力 処理結果

(56)

情報処理センターでの

CUDAの使い方

1.

grouseやtesla??で開発する場合

grouseやtesla??にログイン  ソースファイルを作成し,tesla??上でコンパイル・実行  grouseはGPUを搭載していないため実行できない(コンパイルは可能) 2.

研究室のPC等,情報処理センター外で開発する場合

 研究室のPCでソースファイルを作成  WinSCPなどでファイルをgrouseにアップロードgrouseを経由してtesla??にログインした後,コンパイル・実行

(57)

ターミナルのみの利用

(特に演習室外から利用する場合)

(58)

ターミナルのみの利用

(特に演習室外から利用する場合)

2. sshでtesla??にログイン

$ ssh␣–l␣ユーザID␣tesla?? (??には01~16の番号を入力)

(59)

grouseへのファイル転送(WinSCP)

Unixコマンドscp(secure copy)のWindows GUIクラ

イアント

Secure Shell (ssh) に含まれるsshの機能を利用し

て安全性の高いファイル転送を行う

Host名 grouse

統合アカウントの

ユーザ名とパスワード

login

(60)

Windows上のソースファイルをコピー

grouse ハード ディスク WinSCPでコピー ハード ディスク 共有 共有 ソース ファイル

tesla01 ‐ tesla04 tesla05 ‐ tesla08 tesla09 – tesla12 tesla13 – tesla16 共有

(61)

ログインしているサーバの確認

grouseにログインしているかtesla??にログインしてい

るか分からなくなったら

(62)

GPUの選択

計算機がGPUを複数搭載している場合

CUDAで利用するGPUを選択

CUDA APIを利用したGPUの選択

cudaSetDevice()命令

int main(void){ 変数宣言 //ここでは標準でGPU0が使われる GPUやCPUを使った処理 // cudaSetDevice(3);  //ここからGPU3が使われる ...   return 0; }

(63)

レポート課題

1(提出期限は2学期末)

grouseにログインして,以降のスライドに示す3個のプロ

グラムを作成,コンパイル,実行せよ

helloworld.cuhellokernel.cuhellothread.cu

各プログラムで指定された事項について考察せよ

(64)

レポート課題

1(提出期限は2学期末)

通常のC言語の

プログラム

との違いは何か

 違いがあるとすればどの箇所か  違いがないとすればその理由はなぜか #include<stdio.h> int main(void){ printf("hello world¥n"); return 0; } helloworld.cu

(65)

レポート課題

1(提出期限は2学期末)

通常のC言語の

関数

との違いは何か

 違いがあるとすればどの箇所か(どのように違うか) #include<stdio.h> __global__ void kernel(){} int main(void){ kernel<<<1,1>>>(); printf("hello world¥n"); return 0; } hellokernel.cu

(66)

レポート課題

1(提出期限は2学期末)

三重括弧(<<<1,1>>>)内の数字を変えると実行結果は

どのように変化するか

cudaDeviceSynchronize();をコメントアウトすると実

行結果はどのように変化するか,その理由はなぜか

#include<stdio.h> __global__ void hello(){ printf(“Hello Thread¥n”);//printfを実行するには,コンパイルの際に }      //‐arch=sm_20オプションが必要 int main(void){ hello<<<1,1>>>(); cudaDeviceSynchronize(); return 0; } hellothread.cu

(67)

レポートの書式

必ず表紙を付けること

 授業名,課題番号,学籍番号,氏名,提出日に加えて課題に 要した時間を書く 

課題内容,プログラム,実行結果(ターミナルの出力結果),

考察で構成

 プログラムを実行したtesla??およびGPUの番号も明記すること 

pdf形式に変換してメールで提出

 宛先 degawa at vos.nagaokaut.ac.jp  メール題目 GPGPU実践基礎工学課題1(氏名)

参照

関連したドキュメント

内的効果 生産性の向上 欠勤率の低下、プレゼンティーイズムの解消 休業率 内的効果 モチベーションUP 家族も含め忠誠心と士気があがる

・「下→上(能動)」とは、荷の位置を現在位置から上方へ移動する動作。

はじめに

電路使用電圧 300V 以下 対地電圧 150V 以下: 0.1MΩ 以上 150V 以上: 0.2MΩ 以上 電路使用電圧 300V 以上 : 0.4MΩ 以上.

平成 22 年基準排出ガス窒素酸化物 10 %以上低減、及び、粒子状物質 30 %以上低減

接続対象計画差対応補給電力量は,30分ごとの接続対象電力量がその 30分における接続対象計画電力量を上回る場合に,30分ごとに,次の式

接続対象計画差対応補給電力量は,30分ごとの接続対象電力量がその 30分における接続対象計画電力量を上回る場合に,30分ごとに,次の式

安全性は日々 向上すべきもの との認識不足 安全性は日々 向上すべきもの との認識不足 安全性は日々 向上すべきもの との認識不足 他社の運転.