補足
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$補足
MPIプログラムのコンパイル,実行
ホームディレクトリでls ‐a を実行して
.bashrcが見つかる場合 エディタで.bashrcを開いて編集 .bashrcが見つからない場合 ホームディレクトリに.bashrcを新しく作成 .(ドット)から始まるファイルはlsで表示されない lsに‐aオプションを付けて実行すると全てのファイルを表示補足
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補足
MPIプログラムのコンパイル,実行
.bashrcをストリーミング配信サイトからダウンロードし
て利用するには
1.ストリーミング配信サイト(GPGUP実践基礎工学第8回)にアク セス 2.bashrcをダウンロードしてホームディレクトリに置く アップロードしているファイル名はbashrc 3.mvコマンドを使ってファイル名を変更 mv 変更前ファイル名 変更後ファイル名 mv bashrc .bashrc 4.sourceコマンドで設定を有効化 source .bashrc長岡技術科学大学 電気電子情報工学専攻 出川智啓
今回の内容
GPUの進化の歴史
GPUのアーキテクチャ
GPU(Graphics Processing Unit)とは
画像処理専用のハードウェア
具体的には画像処理用のチップ チップ単体では販売されていない PCI‐Exカードで販売(チップ単体と区別せずにGPUと呼ぶことも多い) マザーボードやノートPCに搭載 PCI‐Exカードとして販売されるGPUには,ビデオメモリと呼ばれ るRAMが搭載GPU(Graphics Processing Unit)とは
代表的な製品
NVIDIA GeForce AMD Radeon Intel HD Graphics(内蔵) 代表的な用途
3Dグラフィックス処理 3Dゲーム,3DCAD,3DCG作成 エンコード・デコード支援 GPU上に専用チップを搭載していることが多い デスクトップPCのGUI処理 Windows Aeroが比較的高性能なGPUを要求GPU(Graphics Processing Unit)の役割
グラフィックスを表示するために様々な処理を行い,処
理の結果をディスプレイに出力
3次元グラフィックスの発展に伴って役割が大きく変化
3次元座標変換 ポリゴンとピクセルの 対応付け ピクセル色計算 テクスチャ参照 フレームバッファ(ビデ オメモリ)への書き込み ディスプレイ出力 CPU ビデオカード GPU 3次元座標変換 ポリゴンとピクセルの 対応付け ピクセル色計算 テクスチャ参照 フレームバッファ(ビデ オメモリ)への書き込み ディスプレイ出力 現在 過去 CPU が 3D 描 画 の演算を実行 GPUが出力 描画情報 画面出力 GPUが演算から 出力までの全て を担当 CPUは描画情報 の生成やGPUへ の情報の引き渡 し , GPU の 制 御 を行う 描画情報 画面出力GPUの描画の流れ
1.
CPUからGPUへ描画情報を送信
2.
頂点処理(頂点シェーダ)
座標変換 画面上での頂点やポリゴンの位置・大きさの決定 頂点単位での照明の計算3.
頂点やポリゴンからピクセルを生成
(ラスタライザ)
4.
ピクセル処理(ピクセルシェーダ)
画面上のピクセルの色 テクスチャの模様5.
画面出力
ピクセルの色情報をフレームバッファに書き込み 2. 3. 4.ビデオカードの利点
CPUで描画のための演算を行うと,CPUにかかる負荷が
大きい
3次元画像処理の専用回路を備えたハードウェアを導入
○CPUにかかる負荷を減らすことができる ○頂点・ピクセルごとに並列処理が可能なため,ハードウェアに よる並列処理が可能ビデオカードの欠点
3次元画像処理の専用回路を備えたハードウェアを導入
×新しい描画方法を開発しても,GPUへ実装・製品化されるまで 利用できない ×ユーザが所有しているGPUによって利用できる機能にばらつき が生じる ×ある描画手法用の専用回路を実装しても,その描画方法が 常に使われる訳ではないのでGPU全体の利用効率が下がるビデオカードから
GPUへ
CGの多様化と共に固定機能の実装が困難に
頂点処理とピクセル処理をユーザが書き換えられるプロ
グラマブルシェーダの実装
頂点処理用回路 ピクセル処理用回路 ビデオカード 頂点シェーダユニット ピクセルシェーダユニット GPUレンダリングパイプライン処理
頂点情報 光源情報 視野変換 陰影計算 材質情報 投影変換 クリッピング ビューポート変換 走査変換 合成 テクスチャ 出力画像 投影像を画素 へ変換 整数演算とメモリ アクセス 形状データの画面 への投影像 実数演算レンダリングパイプライン処理
頂点情報 光源情報 視野変換 陰影計算 材質情報 投影変換 クリッピング ビューポート変換 走査変換 合成 テクスチャ 出力画像 形状データの画面 への投影像 ハードウェアで処理 (固定機能) 実数演算 実数演算を行うハード ウェアは高価だったレンダリングパイプライン処理
頂点情報 光源情報 視野変換 陰影計算 材質情報 投影変換 クリッピング ビューポート変換 走査変換 合成 テクスチャ 出力画像 ハードウェアで処理 (固定機能) ハードウェアで処理 (固定機能)レンダリングパイプライン処理
頂点情報 光源情報 視野変換 陰影計算 材質情報 投影変換 クリッピング ビューポート変換 走査変換 合成 テクスチャ 出力画像 ピクセルシェーダ 頂点シェーダビデオカードから
GPUへ
描画する画像によって頂点処理とピクセル処理の負荷
が変化
処理によっては利用効率に差が発生し,利用効率が低下 GPU 頂点シェーダユニット ピクセルシェーダユニット 頂点処理重視の処理 GPU 頂点シェーダユニット ピクセルシェーダユニット ピクセル処理重視の処理 空きユニット 空きユニットビデオカードから
GPUへ
頂点シェーダとピクセルシェーダを統合したユニファイド
シェーダへの進化
頂点処理とピクセル処理を切り替えることで利用率を向上 GPU ユニファイドシェーダユニット 頂点処理重視の処理 ピクセル処理重視の処理 GPU ユニファイドシェーダユニットビデオカードから
GPUへ
各ピクセルに対して並列に処理実行できるように進化
単純な処理を行う演算器を大量に搭載 高い並列度で処理を実行 GPUの誕生とGPGPUの普及
高性能な3DCG画像処理への要求→GPUの高性能化 GPUの長所
消費電力あたりの浮動小数点理論演算性能が高い GPU単体の消費電力は高い (相対的に)安価 CPUだけで同等の計算能力を達成するより安価Teslaアーキテクチャ
*の構造
Tesla C1060の仕様
SM数 30 CUDA Core数 240(=8 Core/SM×30 SM) キャッシュを搭載せず *CUDAのサポートから外れます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)Fermiアーキテクチャの構造
Tesla M2050の仕様
SM数 14 CUDA Core数 448(=32 Core/SM×14 SM) L1/L2 キャッシュを搭載 ECC(誤り訂正機能)を搭載Fermiアーキテクチャの構造
Tesla M2050の仕様
CUDAコア数(単精度) 448 Cores CUDAコアクロック周波数 1,150 MHz 単精度演算ピーク性能 1.03 TFLOPS 倍精度演算ユニット数 0*1 Unit 倍精度演算ピーク性能 515 GFLOPS メモリクロック周波数 1.55 GHz メモリバス幅 384 bit 最大メモリバンド幅 148 GB/s *1単精度CUDA Coreを2基使って倍精度演算を実行Keplerアーキテクチャの構造
Tesla K20c/mの仕様
SMX数 13
Streaming Multiprocessor eXtreme (?)
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基Maxwellアーキテクチャ
GeForce GTX TITAN Xの仕様
SM数 24
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/FLOPSPascalアーキテクチャ
2016年にリリース予定
倍精度演算器を搭載予定
NVLink
GPU同士やGPUとCPUを接続する独自の方式
通信(CPU ↔ メモリ ↔ PCI Express ↔ メモリ ↔ GPU)の
ボトルネックを解消(PCI Express3.0の5~12倍)
複数のGPUを使って大規模な計算が可能
3Dメモリ(High Bandwidth Memory, HBM)*
3次元積層技術を利用し,メモリの容量と帯域を大幅に増加 最大32GB,メモリ帯域1TB/s
Voltaアーキテクチャ
Pascalの後継
詳しい情報は不明
アメリカの次世代スーパーコンピュータへ採用予定
オークリッジ国立研究所 SUMMIT 150~300PFLOPS ローレンス・リバモア研究所 SIERRA 100PFLOPS以上 地球シミュレータと同等の演算性能を1ノードで実現 現在Top500 2位のスーパーコンピュータと同じ電力で5~10 倍高速,サイズは1/5GPUの普及の要因
GPUの進展は15年程
普及の速度は驚異的 CPUは数十年かけて進展
CPUも驚異的な速度で進展 様々な高速化技術を導入 GPUが普及している要因は何か?
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.337 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
CPUの性能向上サイクル
半導体回路 の細線化 消費電力が 低下 低下分の電 力をトランジ スタのスイッ チングに利用 動作周波数 向上 性能向上CPUの性能向上サイクル
半導体回路 の細線化 消費電力が 低下 低下分の電 力をトランジ スタのスイッ チングに利用 動作周波数 向上 性能向上 絶縁部が狭くなり 漏れ電流が発生, 電力が低下しない 消費電力の増加に よって発熱量が増 加,空冷の限界 2倍のトランジスタ を使っても性能は 1.4倍程度にしか 伸びないCPUの性能向上サイクル
半導体回路 の細線化 消費電力が 低下 低下分の電 力をトランジ スタのスイッ チングに利用 動作周波数 向上 性能向上 絶縁部が狭くなり 漏れ電流が発生, 電力が低下しない 消費電力の増加に よって発熱量が増 加,空冷の限界 2倍のトランジスタ を使っても性能は 1.4倍程度にしか 伸びない コア数の増加CPUの性能向上
FLOPS =
1コアの演算性能
× コア数
× CPUの動作周波数
1コアの演算性能の向上
演算器(トランジスタ)の増加 コア数の増加
トランジスタ数の増加 CPUの動作周波数
回路の効率化や印可電圧の向上 劇的な性能向上は期待できない コンパイラの最適化を利用 複数のコアを使うように プログラムを書かないと 速くならないGPUを使うという選択
GPU普及の要因の一つはCPUクロックの頭打ち
クロックを下げてマルチコア化したCPUへの対応が必要 なぜGPUという選択か?
CPU用プログラムの並列化でもいいのでは? 消費電力の低減
数値計算や高性能計算(HPC)の業界がGPUに注目 スーパーコンピュータの性能向上 高機能なCPUを大量に使うと消費電力が問題に 高機能な制御用プロセッサと,計算を実行する低性能なアクセラ レータの組み合わせGreen500(2015, Jun.)
日本の次世代機がTOP3を独占
AMD社のGPUが4位
NVIDIA社のGPUが5位以降を占める
計算機名称 アクセラレータ GFLOPS/W 消費電力[kW] 1 Shoubu PEZY‐SC 7.03 50.322 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
まとめ
GPUの特徴
低性能の演算器を大量に搭載(~3000コア) GPUが使われる理由
理論演算性能が高い メモリとチップ間の帯域も広い 省電力と高性能を両立 今後の計算機の主流になると考えられる 将来に対する投資
GPUだけでなく,制御用CPU+計算用アクセラレータという思想 は今後しばらく主流であり続ける情報処理センター
GPGPUシステム
16台の計算サーバで構成
NVIDIA Tesla M2050を搭載 各サーバに4機ずつ計64機 grouse tesla01 ‐ tesla04 M2050×16 tesla05 ‐ tesla08 M2050×16 tesla09 – tesla12 M2050×16 tesla13 – tesla16 M2050×16 外部ネットワークgrouseへのログイン
ターミナルの起動
実行イメージ
grouse 処理 処理結果出力
実行イメージ
grouse ファイル 保存 ハード ディスク 共有 共有tesla01 ‐ tesla04 tesla05 ‐ tesla08 tesla09 – tesla12 tesla13 – tesla16 共有
tesla??へのログイン
もう一つターミナルを起動し,下の ターミナルでログイン
$ ssh␣–l␣ユーザID␣tesla?? (??には01~16の番号を入力)
tesla??でのコンパイルとプログラム実行
grouseでの作業用
tesla??でのコンパイルと 実行用
tesla??でコンパイルとプログラム実行
コンパイル
nvcc˽ソースファイル名
nvccがコンパイル対象とするソースファイルの拡張子は.cu エラーがなければa.outという実行ファイルが作成される 実行
./a.out
nvccはgccと同じオプションを持っていることが多い
対応オプションの一覧は‐hオプションで確認
nvcc ‐h実行イメージ
grouse 処理 処理結果出力 キー入力,マウス入力 $ ssh␣tesla16 tesla16 キー入力 処理 処理結果実行イメージ
grouse キー入力,マウス入力 $ ssh␣tesla16 $ nvcc ??.cu キー入力 処理結果 ハード ディスク ??.cu コンパイル 処理結果出力 tesla16実行イメージ
grouse 処理結果出力 キー入力,マウス入力 $ ssh␣tesla16 $ nvcc ??.cu $ ./a.out キー入力 処理結果 ハード ディスク a.out 実行 tesla16実行イメージ
grouse キー入力,マウス入力 $ ssh␣tesla16 $ nvcc ??.cu $ ./a.out キー入力 ハード ディスク a.out 実行 tesla16 GPU0 GPU1 GPU2 GPU3 処理結果出力 処理結果情報処理センターでの
CUDAの使い方
1.grouseやtesla??で開発する場合
grouseやtesla??にログイン ソースファイルを作成し,tesla??上でコンパイル・実行 grouseはGPUを搭載していないため実行できない(コンパイルは可能) 2.研究室のPC等,情報処理センター外で開発する場合
研究室のPCでソースファイルを作成 WinSCPなどでファイルをgrouseにアップロード grouseを経由してtesla??にログインした後,コンパイル・実行ターミナルのみの利用
(特に演習室外から利用する場合)
ターミナルのみの利用
(特に演習室外から利用する場合)
2. sshでtesla??にログイン
$ ssh␣–l␣ユーザID␣tesla?? (??には01~16の番号を入力)
grouseへのファイル転送(WinSCP)
Unixコマンドscp(secure copy)のWindows GUIクラ
イアント
Secure Shell (ssh) に含まれるsshの機能を利用し
て安全性の高いファイル転送を行う
Host名 grouse
統合アカウントの
ユーザ名とパスワード
login
Windows上のソースファイルをコピー
grouse ハード ディスク WinSCPでコピー ハード ディスク 共有 共有 ソース ファイルtesla01 ‐ tesla04 tesla05 ‐ tesla08 tesla09 – tesla12 tesla13 – tesla16 共有
ログインしているサーバの確認