GPGPUクラスタの性能評価

Similar documents
GPU GPU CPU CPU CPU GPU GPU N N CPU ( ) 1 GPU CPU GPU 2D 3D CPU GPU GPU GPGPU GPGPU 2 nvidia GPU CUDA 3 GPU 3.1 GPU Core 1

Microsoft Word ●IntelクアッドコアCPUでのベンチマーク_吉岡_ _更新__ doc

Microsoft PowerPoint - GPUシンポジウム _d公開版.ppt [互換モード]

Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking Environments

熊本大学学術リポジトリ Kumamoto University Repositor Title GPGPU による高速演算について Author(s) 榎本, 昌一 Citation Issue date Type URL Presentation

名称 : 日本 GPU コンピューティングパートナーシップ (G-DEP) 所在 : 東京都文京区本郷 7 丁目 3 番 1 号東京大学アントレプレナープラザ, 他工場 URL アライアンスパートナー コアテクノロジーパートナー NVIDIA JAPAN ソリュ

Microsoft PowerPoint - CCS学際共同boku-08b.ppt

ストリームを用いたコンカレントカーネルプログラミングと最適化 エヌビディアジャパン CUDAエンジニア森野慎也 GTC Japan 2014

GPUを用いたN体計算

23 Fig. 2: hwmodulev2 3. Reconfigurable HPC 3.1 hw/sw hw/sw hw/sw FPGA PC FPGA PC FPGA HPC FPGA FPGA hw/sw hw/sw hw- Module FPGA hwmodule hw/sw FPGA h

スライド 1

1. GPU コンピューティング GPU コンピューティング GPUによる 汎用コンピューティング GPU = Graphics Processing Unit CUDA Compute Unified Device Architecture NVIDIA の GPU コンピューティング環境 Lin

Microsoft PowerPoint - suda.pptx

hpc141_shirahata.pdf

CUDA を用いた画像処理 画像処理を CUDA で並列化 基本的な並列化の考え方 目標 : 妥当な Naïve コードが書ける 最適化の初歩がわかる ブロックサイズ メモリアクセスパターン

RICCについて

07-二村幸孝・出口大輔.indd

EnSightのご紹介

( CUDA CUDA CUDA CUDA ( NVIDIA CUDA I

3次多項式パラメタ推定計算の CUDAを用いた実装 (CUDAプログラミングの練習として) Implementation of the Estimation of the parameters of 3rd-order-Polynomial with CUDA

システムソリューションのご紹介

PowerPoint プレゼンテーション

TSUBAME2.0におけるGPUの 活用方法

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

Microsoft PowerPoint - OpenMP入門.pptx

VXPRO R1400® ご提案資料

工学院大学建築系学科近藤研究室2000年度卒業論文梗概

Microsoft Word ●MPI性能検証_志田_ _更新__ doc

Microsoft Word - HOKUSAI_system_overview_ja.docx


スライド 1

HPC143

Slide 1

Slide 1

GPGPUイントロダクション

Images per Second Images per Second VOLTA: ディープラーニングにおける大きな飛躍 ResNet-50 トレーニング 2.4x faster ResNet-50 推論 TensorRT - 7ms レイテンシ 3.7x faster P100 V100 P10

スライド 1

Microsoft PowerPoint - ARCEMB08HayashiSlides.ppt [互換モード]

GPU チュートリアル :OpenACC 篇 Himeno benchmark を例題として 高エネルギー加速器研究機構 (KEK) 松古栄夫 (Hideo Matsufuru) 1 December 2018 HPC-Phys 理化学研究所 共通コードプロジェクト

(速報) Xeon E 系モデル 新プロセッサ性能について

<4D F736F F F696E74202D2091E63489F15F436F6D C982E682E992B48D8291AC92B489B F090CD2888F38DFC E B8CDD8

Itanium2ベンチマーク

本文ALL.indd

修士論文

[4] ACP (Advanced Communication Primitives) [1] ACP ACP [2] ACP Tofu UDP [3] HPC InfiniBand InfiniBand ACP 2 ACP, 3 InfiniBand ACP 4 5 ACP 2. ACP ACP

Fujitsu Standard Tool

TSUBAME2.0 における GPU の 活用方法 東京工業大学学術国際情報センター丸山直也第 10 回 GPU コンピューティング講習会 2011 年 9 月 28 日

NUMAの構成

GPUコンピューティング講習会パート1

マルチコアPCクラスタ環境におけるBDD法のハイブリッド並列実装

チューニング講習会 初級編

N08

Microsoft PowerPoint PCクラスタワークショップin京都.ppt

並列・高速化を実現するための 高速化サービスの概要と事例紹介

Microsoft PowerPoint - 高速化WS_ver1.1.1

160311_icm2015-muramatsu-v2.pptx

― ANSYS Mechanical ―Distributed ANSYS(領域分割法)ベンチマーク測定結果要約

CCS HPCサマーセミナー 並列数値計算アルゴリズム

研究報告用MS-Wordテンプレートファイル

Operating System 仮想記憶

Microsoft PowerPoint - SS研200911姫野_最新.ppt

ERDAS IMAGINE における処理速度の向上 株式会社ベストシステムズ PASCO CORPORATION 2015

GPGPU によるアクセラレーション環境について

資料3 今後のHPC技術に関する研究開発の方向性について(日立製作所提供資料)

スライド 1

Microsoft PowerPoint - SWoPP2010_Shirahata

1 GPU GPGPU GPU CPU 2 GPU 2007 NVIDIA GPGPU CUDA[3] GPGPU CUDA GPGPU CUDA GPGPU GPU GPU GPU Graphics Processing Unit LSI LSI CPU ( ) DRAM GPU LSI GPU

Microsoft PowerPoint ppt

スライド 1

PowerPoint プレゼンテーション

Microsoft PowerPoint - GPU_computing_2013_01.pptx

PowerPoint プレゼンテーション

この方法では, 複数のアドレスが同じインデックスに対応づけられる可能性があるため, キャッシュラインのコピーと書き戻しが交互に起きる性のミスが発生する可能性がある. これを回避するために考案されたのが, 連想メモリアクセスができる形キャッシュである. この方式は, キャッシュに余裕がある限り主記憶の

GPU CUDA CUDA 2010/06/28 1

ポスト「京」でのコデザイン 活動報告

4 倍精度基本線形代数ルーチン群 QPBLAS の紹介 [index] 1. Introduction 2. Double-double algorithm 3. QPBLAS 4. QPBLAS-GPU 5. Summary 佐々成正 1, 山田進 1, 町田昌彦 1, 今村俊幸 2, 奥田洋司

<4D F736F F D20332E322E332E819C97AC91CC89F090CD82A982E78CA982E9466F E393082CC8D5C91A291CC90AB945C955D89BF5F8D8296D85F F8D F5F E646F63>

TopSE並行システム はじめに

HPC146

Microsoft Word - Dolphin Expressによる10Gbpソケット通信.docx

研究背景 大規模な演算を行うためには 分散メモリ型システムの利用が必須 Message Passing Interface MPI 並列プログラムの大半はMPIを利用 様々な実装 OpenMPI, MPICH, MVAPICH, MPI.NET プログラミングコストが高いため 生産性が悪い 新しい並

最新の並列計算事情とCAE

(ch2 + i)->next = ch1 + r; doit(ch1, ch2); 図 1 ランダムアクセスする C ソース 時間 (elapsed) 32 ビットプログラム (gcc -O2 -m32 でコンパイル ) 6.23 秒 秒 64 ビットプログラム (gcc -O2 -m

Insert your Title here

untitled

GPU.....

組込み Linux の起動高速化 株式会社富士通コンピュータテクノロジーズ 亀山英司 1218ka01 Copyright 2013 FUJITSU COMPUTER TECHNOLOGIES LIMITED

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

GPGPU

ためのオーバーヘッドが課題となりつつある しかしこのオーバーヘッドに関する数値はほとんど公開されていない この論文ではこの cache coherency の時間を Linux カーネルで提供されている atomic_inc 関数を用いて測定する方法を新たに考案し 実測プログラムを作成した 実測はプ

Microsoft PowerPoint - ARCICD07FukumotoSlides.pptx

分のゲージ行列である. γ µ は, 式 2 に示すような x の行 列である. なお, いずれの物理量も複素数で表される. γ i i γ 3 i i i i i i γ 2 γ よって, 式 は, 隣接する 8 方向の格子点上の 3x のス ピノルに, 格子間の 3x3 のゲージ行列と x のガ

GPUコンピューティング講習会パート1

Microsoft PowerPoint - sales2.ppt

! 行行 CPUDSP PPESPECell/B.E. CPUGPU 行行 SIMD [SSE, AltiVec] 用 HPC CPUDSP PPESPE (Cell/B.E.) SPE CPUGPU GPU CPU DSP DSP PPE SPE SPE CPU DSP SPE 2

Microsoft Word - nvsi_050110jp_netvault_vtl_on_dothill_sannetII.doc

NUMAの構成

Agenda GRAPE-MPの紹介と性能評価 GRAPE-MPの概要 OpenCLによる四倍精度演算 (preliminary) 4倍精度演算用SIM 加速ボード 6 processor elem with 128 bit logic Peak: 1.2Gflops

supercomputer2010.ppt

Transcription:

2008 年度理研 HPC シンポジウム第 3 世代 PC クラスタ GPGPU クラスタの性能評価 2009 年 3 月 12 日 富士通研究所成瀬彰

発表の概要 背景 GPGPU による高速化 CUDA の概要 GPU のメモリアクセス特性調査 姫野 BMT の高速化 GPGPU クラスタによる高速化 GPU Host 間のデータ転送 GPU-to-GPU の通信性能 GPGPU クラスタ上での姫野 BMT 性能 まとめ

背景 : GPGPU GPU を汎用計算に 高速化 汎用化が進展 CPU と比べて桁違いの演算性能 メモリ転送性能 プログラム開発環境の整備 CUDA nvidia の統合開発環境 GPU 上のプログラム開発の簡易化 GPGPU 対応の進展 課題 行列演算 N 体問題 FFT CFD GPUはブラックボックス チューニングが困難 GPU 向けプログラム最適化は難しい ノウハウが少ない

背景 : GPGPU クラスタ PC クラスタを GPU で加速 GPU 搭載マシンを高速ネットワークで接続 計算は GPU 通信は従来通り CUDA + MPI GPU CPU NIC NIC CPU GPU 課題 通信は CPU を経由 GPUで計算は速くなるが 通信は速くならない GPU-to-GPUで十分な通信性能は出るのか

背景 : GPGPU クラスタ 並列処理 時間 計算処理 計算処理 GPU で加速 どれぐらい速くできるか? 通信処理 GPU で加速しない むしろ遅くなる どれぐらい遅くなるか? 姫野 BMT の高速化を題材に 通信処理

姫野 BMT 流体アプリのカーネルルーチン Poisson 方程式解法時の性能を測定 メモリアクセス特徴 14 個の 3D 配列 再利用性が低い (1 配列を除く ) キャッシュは効かない メモリバンド幅ネック 14 ストリームで高メモリバンド幅

姫野 BMT のコア部分 (jacobi) for (i=1; i<imax-1; i++) for (j=1; j<jmax-1; j++) for (k=1; k<kmax-1; k++) { } s0 = a0[i][j][k] * p[i+1][j][k] + a1[i][j][k] * p[i][j+1][k] + a2[i][j][k] * p[i][j][k+1] + b0[i][j][k] * (p[i+1][j+1][k] p[i+1][j-1][k] p[i-1][j+1][k] + p[i-1][j-1][k]) + b1[i][j][k] * (p[i][j+1][k+1] p[i][j+1][k-1] p[i][j-1][k+1] + p[i][j-1][k-1]) + b2[i][j][k] * (p[i+1][j][k+1] p[i+1][j][k-1] p[i-1][j][k+1] + p[i-1][j][k-1]) + c0[i][j][k] * p[i-1][j][k] + c1[i][j][k] * p[i][j-1][k] + c2[i][j][k] * p[i][j][k-1] + wrk1[i][j][k]; ss = (s0 * a3[i][j][k] p[i][j][k]) * bnd[i][j][k]; wrk2[i][j][k] = p[i][j][k] + omega * ss; 配列 p: ステンシルアクセス 再利用性有り 他 13 配列 : 点アクセス 再利用性無し

発表の概要 背景 GPGPU による高速化 CUDA の概要 GPU のメモリアクセス特性調査 姫野 BMT の高速化 GPGPU クラスタによる高速化 GPU Host 間のデータ転送 GPU-to-GPU の通信性能 GPGPU クラスタ上での姫野 BMT 性能 まとめ

CUDA 概要 : ハードウェア構成 GeForce GTX280 最新世代 CUDA GPU 理論ピークメモリバンド幅 : 141.7GB/s ( = 64bit * 8 * 2.214GHz ) MP 数 : 30 MPの内部構成 SP 数 : 8 ( 全体で240) 共有メモリ : 16KB レジスタ数 : 16K 本 (64KB) MP MP MP Memory Controller 64bit GDDR3 GDDR3 (*) SP = Stream Processor Multi-Processor Register Files (64KB) SP SP SP SP SP SP SP SP Shared Memory (16KB) (x10) X-Bar (x8) MP MP MP Memory Controller 64bit GDDR3 GDDR3 Global Memory

CUDA 概要 : プログラミング 2 段階のデータ並列 グリッド 複数のブロックで構成 ブロック 複数のスレッドで構成 スレッド SP 上で実行される MP 内の処理 各ブロックは 1 つの MP に割当 MP が実行可能スレッドを選択 選択単位はワープ (32 スレッド ) Block Warp 0 Warp 1 Warp 7 Grid Block (0,0) Block (0,1) Block (0,15) Thread (0,0) Thread (0,1) Thread (0,7) Block (1,0) Block (1,1) Block (1,15) Block (15,0) Block (15,1) Block (15,15) (*) 256block/grid Thread (1,0) Thread (1,1) Thread (1,7) Thread (31,0) Thread (31,1) Thread (31,7) (*) 256thread/block

CUDA 概要 : 実行モデル CUDA の実行モデル : SPMD Single Program Multiple Data 命令列 SIMD Thread0 Thread1 Thread2 Thread3 SPMD Thread0 Thread1 Thread2 Thread3 基本的に スレッド間は非同期 同じワープ内のスレッドだけ同期

メモリアクセス特性の調査 高速化の対象 : 姫野 BMT 姫野 BMT はメモリバンド幅ネック 姫野 BMT の高速化 高メモリバンド幅の実現 GPU の実効メモリバンド幅 理論ピークの 8 割超も可能 いつでも高バンド幅を実現できる NO 高バンド幅実現の条件は? GPU のメモリアクセス特性を調査 バンド幅 アクセス遅延

メモリバンド幅の調査 メモリコピー時のメモリバンド幅を実測 READ:WRITE 比率 = 1:1 以下の条件を変え 測定を実施 コピー量 (= 転送量 ) 同時コピー数 (= ストリーム数 )

メモリコピー ( 基本 ) 普通のメモリコピー for ( i = 0 ; i < num ; i ++ ) { } dst[ i ] = src[ i ]; GPU: データ並列でメモリコピー 各スレッドへのデータ割当 (4 スレッド ): Block (dst) (src) Cyclic (dst) (src) スレッド 1 の担当領域スレッド 2 スレッド 3 スレッド 4

メモリコピー ( 基本 ) global void mcopy( float *dst, float *src, int size ) { int id = ( 各スレッド固有の番号 ); int step = ( 総スレッド数 ); int n_total = ( 総コピー回数 ); for ( int i = id ; i < n_total ; i += step ) { dst[ i ] = src[ i ]; } } 配列に対するアクセスパターン スレッド単体で考えるとストライドアクセス スレッド全体で考えると逐次アクセス READ/WRITE 各 1 ストリーム ( 計 2 ストリーム )

メモリコピー ( 同時に複数コピー ) 同時に複数のメモリコピー 1-Copy 2-Copy 4-Copy 8-Copy for ( i = 0 ; i < num /; 24 8 i ++ ; i ++ ) { ) { dst[ dst0[ i i i ] ] = = src0[ src[ i ]; i ]; } dst1[ i i ] ] = = src1[ src1[ i ]; i ]; dst2[ i ] = src2[ i ]; } dst2[ i ] = src2[ i ]; dst3[ i ] = src3[ i ]; dst3[ i ] = src3[ i ]; } } dst4[ i ] = src4[ i ]; dst5[ i ] = src5[ i ]; dst6[ i ] = src6[ i ]; dst7[ i ] = src7[ i ];

メモリコピー ( 同時に複数コピー ) 同時コピー数と配列アクセスパターン 配列 ( メモリ ) 1-copy 2-copy 4-copy 配列 (src) (dst) 配列 (src) (dst) 8-copy 同時コピー数の増加 = ストリーム数の増加ストリーム数とメモリバンド幅の関係

メモリコピー ( 同時に複数コピー ) global void mcopy( float *dst, float *src, int size, int n_copy ) { int id = ( 各スレッド固有の番号 ); int step = ( 総スレッド数 ); int n_total = ( 総コピー回数 ); int n_each = n_total / n_copy; for ( int i = id ; i < n_each ; i += step ) { for ( int j = i ; j < n_total ; j += n_each ) { dst[ j ] = src[ j ]; } } } 複数のメモリコピーが同時進行 配列を N 個に分離 ストリーム数 : 2*N

メモリバンド幅測定結果 バンド幅低下問題 転送量増でバンド幅低下 ストリーム数増でバンド幅低下 cudamemcpy では未発生 (*) ブロック数 :60, スレッド数 / ブロック :256

メモリアクセス遅延の調査 遅延は短い方が扱いやすい GPU は遅延が長いと言われている 具体的に どれぐらい長いのか ランダムアクセス時の遅延を測定 int index = ( 各スレッド固有の番号 ); int num = ( アクセス回数 ); while ( num > 0 ) { index = buf[ index ]; num--; }

メモリアクセス遅延測定結果 2 つの境界 8MB と 32MB (GTX280) 8MB 境界 : よく分からない.. 32MB 境界 : おそらく TLB ページサイズ : 4MB? エントリ数 : 8? (*) ブロック数 :1 スレッド数 :32 (1 ワープ )

調査結果の考察 バンド幅測定 : バンド幅低下問題 転送量増でバンド幅低下 ストリーム数増でバンド幅低下 cudamemcpy 性能に届かない 遅延測定 : TLB の存在 TLB ミスで ~200ns の遅延増 バンド幅低下問題の原因は TLB スラッシング?

バンド幅低下のシナリオ CUDA の実行モデルは SPMD 進行の速いスレッド 遅いスレッドが混在 時間が経過 スレッド間の進行差が拡大 メモリアクセス箇所が分散 単位時間あたりアクセスページ数が増加 TLB ミス発生頻度が増加 (TLB スラッシング ) メモリバンド幅低下

バンド幅低下のシナリオ CUDA の実行モデルは SPMD メモリコピー時の配列アクセス箇所 配列 ( メモリ ) SIMD Thread0 Thread1 Thread2 Thread3 配列 (src) 局所 SPMD Thread0 Thread1 Thread2 Thread3 配列 (src) 分散 スレッド進行を同期状態に近づける バンド幅低下を回避できる?

スレッド進行の同期化 全スレッドの同期 CUDA では出来ない 同じブロック内のスレッド 同期可能 global void mcopy( float *dst, float *src, int size, int n_copy ) { int id = ( 各スレッド固有の番号 ); int step = ( 総スレッド数 ); int n_total = ( 総コピー回数 ); int n_each = n_total / n_copy; for ( int i = id ; i < n_each ; i += step ) { for ( int j = i ; j < n_total ; j += n_each ) { syncthreads() dst[ j ] = src[ j ]; } } }

メモリバンド幅測定結果 (*) ブロック数 :60, スレッド数 / ブロック :256

メモリバンド幅測定結果 (syncthreads) 転送量増によるバンド幅低下は解消 cudamemcpy 相当の性能 ストリーム数増によるバンド幅低下は改善 でも ストリーム数は少ない方が良い (*) ブロック数 :60, スレッド数 / ブロック :256

高メモリバンド幅を実現する方法 スレッド進行の同期化 syncthreads() でブロック内スレッドを同期 同期ペナルティ < 同期メリット アクセスパターンの局所化 アルゴリズム データ構造を見直し ストリーム数減 単位時間あたりアクセスページ数を削減 スレッド数の最適化 レジスタ 共有メモリ使用量を減らし 同時実行可能スレッド数を増加 適切な総スレッド数の選択

姫野 BMT on GPU 従来実装 東工大 ) 青木教授の実装 2007 年度理研ベンチマークコンテスト優勝 HPC 研究会で発表 (2008-HPC-115) 姫野 BMT(M サイズ ) の実行ファイルが公開

従来実装 128 Array 256 128 Block 16 8 16 z y x ブロック形状 : (16,16,8) ブロック数 : 2,048 各ブロック スレッド数 : 256 8 格子点計算 / スレッド 格子点計算開始前に スレッド間で共用する配列値を全て共有メモリにロード 同期回数を減らすため? 共有メモリ使用量 : 12.7KB 4B*(16+2)*(16+2)*(8+2) MP への割当ブロック数 : 1 x 軸と z 軸の入替え マルチ GPU 対応?

提案手法に基づく高速化 スレッド進行の同期化 同期処理の多用 ( syncthreads()) アクセスパターンの局所化 配列の次元入替え ブロック形状変更 スレッド数の最適化 同時実行スレッド数の増加 総スレッド数調整 その他 配列間のパディング量調整

提案手法適用後 128 z y x 128 Array 4 64 Block 64 ブロック形状 : (64,4,64) ブロック数 : 256 各ブロック スレッド数 : 256 64 格子点計算 / スレッド スレッド間で共用する配列値 各格子点計算の開始前に 必要な分だけ共有メモリにロード 同期回数増 問題無し 共有メモリ使用量 : 4.7KB 4B*(64+2)*(4+2)*3 1MP に 3 ブロック割当 256

姫野 BMT 性能 (GFLOPS) 1.7x 1.7x 従来実装提案手法従来実装提案手法

GFLOPS とバンド幅の関係 姫野 BMT のメモリアクセス量 1.65 B/FLOP (*) BF 比は実装依存 1 格子点あたりのメモリアクセス量 : 56 B 1 格子点あたり14 変数のメモリアクセス データ型はfloat (4B) 1 格子点あたりの演算量 : 34 FLOP

姫野 BMT 性能 ( バンド幅 ) 最大実効メモリバンド幅 理論ピークの80% を超えるバンド幅を実現 (GTX280) 従来実装提案手法従来実装提案手法

発表の概要 背景 GPGPU による高速化 CUDA の概要 GPU のメモリアクセス特性調査 姫野 BMT の高速化 GPGPU クラスタによる高速化 GPU Host 間のデータ転送 GPU-to-GPU の通信性能 GPGPU クラスタ上での姫野 BMT 性能 まとめ

並列版の姫野 BMT 3 次元配列をプロセス数分割 各プロセスは分割後の配列を担当 (1) 計算処理 : 各プロセスは自分の担当領域を計算 (2) 通信処理 : 配列 p の隣接面を隣のプロセスと送受信 (3) (1) に戻る 3D 配列

GPGPU クラスタ試験環境 4 台の GPU 搭載マシンを InfiniBand で接続 マシンスペック GPU: nvidia GTX285 (PCIe2x16) CPU: Intel Core i7 (2.66GHz) NIC: Mellanox ConnectX (DDR-IB, PCIe2x8) M/B: Gigabyte GA-EX58-UD5 (Intel X58) Mem: DDR3-1066 2GB x 3 OS: RHEL 5.3 (64bit) C/C++: GNU CUDA: 2.1 MPI: OpenMPI 1.3

姫野 BMT on PC クラスタ PC クラスタの姫野 BMT 性能 ( 実測 L サイズ ) 1 ノード : 4 ノード : 6.5GFLOPS 25.5GFLOPS 1 4 ノードで 3.9 倍性能 UP スケール 4 ノード PC クラスタの処理時間内訳 GPGPU クラスタはスケールするか? 1 ノード : 4 ノード :??? 計算処理 :43 msec 70GFLOPS 程度 通信処理 : 1.0 msec

GPU-to-GPU 通信 GPU CPU NIC NIC CPU GPU GPU メモリ Host メモリ Host メモリ GPU メモリ PC クラスタ : CPU-to-CPU 通信 Host メモリ Host メモリ (MPI) GPU Host 間のデータ転送性能が重要 GPGPUクラスタ : GPU-to-GPU 通信 GPUメモリ Hostメモリ (CUDA) Hostメモリ Hostメモリ (MPI) Hostメモリ GPUメモリ (CUDA)

GPU Host 間のデータ転送 Pinned メモリと Pageable メモリ Pinned メモリ cudamallochost() DMA 可能 Pageable メモリ malloc() DMA 不可 Host メモリ内でコピーが必要 GPU DMA CPU GPU DMA CPU GPU メモリ Host メモリ Pinned GPU メモリ Host メモリ Pageable COPY

Core i7 のメモリバンド幅 Core2 Core i7 (1channel)

GPU Host 間のデータ転送性能 Pinned Pinned 3ch 2ch 3ch 2ch Pinnedメモリの転送性能が高い 1ch Pageableメモリでもそれなり Pageable Core i7のおかげ 遅延は~10usecと長め 回数を減らし まとめて転送 Pageable 1ch

GPU-to-GPU 通信性能 (CPU-to-CPU) 姫野 BMT IB RDMA 域 (Pinned は RDMA NG) Pinned Pageable DDR-IB を GPU-to-GPU で使うと 遅延は GbE 程度 バンド幅は SDR-IB 程度 Pinned メモリ IB RDMA 通信は NG 1 年前から知られている問題

GPGPU クラスタの性能予測 処理時間内訳 4 ノード PC クラスタ ( 実測 ) 通信処理 : 1.0 msec 4 ノード GPGPU クラスタ ( 予測 ) 計算時間 : 1/10 倍 通信時間 : 2+ 倍 GPU 使用時の姫野 BMT 性能 1 ノード GPGPU: 計算処理 :43 msec 計算処理 :4.3 msec 70GFLOPS 4 ノード GPGPU クラスタ : 170GFLOPS ( 予測 ) 通信処理 : 2.2 msec

姫野 BMT on GPGPU クラスタ

発表の概要 背景 GPGPU による高速化 CUDA の概要 GPU のメモリアクセス特性調査 姫野 BMT の高速化 GPGPU クラスタによる高速化 GPU Host 間のデータ転送 GPU-to-GPU の通信性能 GPGPU クラスタ上での姫野 BMT 性能 まとめ

まとめ GPGPU は使えるか? YES GPU 向けプログラム最適化ノウハウの蓄積 姫野 BMT で メモリバンド幅効率 80% 超 理論ピーク 142GB/s に対して 実効で 115GB/s を実現 GPGPU クラスタは使えるか? 数ノードで通信ネック GPU: 計算にはアクセル 通信にはブレーキ より高速な通信機構が必要 GPU 直接通信 GPU CPU 統合