24
20131130関西GPGPU勉強会#5 CUDA 6 の話 おのうえ(@_likr)

CUDA 6の話@関西GPGPU勉強会#5

Embed Size (px)

Citation preview

Page 1: CUDA 6の話@関西GPGPU勉強会#5

2013年11月30日 関西GPGPU勉強会#5

CUDA 6の話おのうえ(@_likr)

Page 2: CUDA 6の話@関西GPGPU勉強会#5

お前、誰よ

✤ おのうえ(@_likr)!

✤ 関西GPGPU勉強会主宰

Page 3: CUDA 6の話@関西GPGPU勉強会#5

今日のおはなし

✤ SC13のCUDA6に関する発表を要約しようとする!

✤ “New Features in CUDA 6 Make GPU Acceleration Easier”!

✤ “Unified Memory in CUDA 6.0”!

✤ 性能向上の数値・グラフなどは上の発表資料を見てください!

✤ 上記の発表ぐらいしか一次情報がないので、解釈などに誤りがあったらごめんなさい

Page 4: CUDA 6の話@関西GPGPU勉強会#5

CUDA 6の目玉

✤ Unified Memory!

✤ XT and Drop-in Libraries!

✤ GPUDirect RDMA in MPI!

✤ Developer Tools

Page 5: CUDA 6の話@関西GPGPU勉強会#5

Unified Memory

Page 6: CUDA 6の話@関西GPGPU勉強会#5

Unified Memory

✤ 明示的なメモリ転送が不要に!

✤ 複雑なデータ構造の扱いが容易に!

✤ メモリ転送パフォーマンスが良くなる(かも)

Page 7: CUDA 6の話@関西GPGPU勉強会#5

Unified MemoryのイメージUnified Memoryなし

CPU GPU

System!Memory

GPU!Memory

Unified Memoryあり

CPU GPU

Unified Memory

Page 8: CUDA 6の話@関西GPGPU勉強会#5

cudaMallocManaged

New Features in CUDA 6 Make GPU Acceleration Easier

void sortfile(FILE *fp, int N) { char *data; data = (char *)malloc(N); ! fread(data, 1, N, fp); ! qsort(data, N, 1, compare); ! use_data(data); ! free(data); }

void sortfile(FILE *fp, int N) { char *data; cudaMallocManaged(&data, N); ! fread(data, 1, N, fp); ! qsort<<<…>>>(data, N, 1, compare); cudaDeviceSynchronize(); ! use_data(data); ! cudaFree(data); }

cudaMallocManagedで確保されたメモリ領域はホストデバイス両方で使える

CPU CUDA Unified Memory

Page 9: CUDA 6の話@関西GPGPU勉強会#5

どううれしいのか

✤ データをポインタで持つようなデータ構造の 明示的なデータ転送が不要になる

key

data

next

key

data

next

key

data

next

key

data

next

Linked List

struct dataElem { int porp1; int prop2; char *text; };

prop1

prop2

*text “We love YAMADA.”

System Memory

GPU Memory 従来は2回の明示的な転送が必要

ネストしたデータ

Page 10: CUDA 6の話@関西GPGPU勉強会#5

まだわからない部分?

✤ パフォーマンス!

✤ データの疎密さの影響!

✤ 最適化!

✤ メモリ転送制御(prefetchとか)!

✤ マルチGPU

Page 11: CUDA 6の話@関西GPGPU勉強会#5

おまけ:Unified Virtual Addressing

✤ UVA、統合仮想アドレス空間!

✤ CUDA 4.0で導入!

✤ ホスト・デバイスのメモリを全部同じ空間で扱う!!

✤ Unified Memoryとは別物!

Page 12: CUDA 6の話@関西GPGPU勉強会#5

UVAのイメージ

CPU GPU0 GPU1

PCI-e

System!Memory

GPU0!Memory

GPU1!Memory

0x0000

0xFFFF

0x0000

0xFFFF 0xFFFF

0x0000

UVAなし

CPU GPU0 GPU1

PCI-e

System!Memory

GPU0!Memory

GPU1!Memory

0x0000

0xFFFF

UVAあり

Page 13: CUDA 6の話@関西GPGPU勉強会#5

UVAで変わったこと

✤ メモリ転送命令の簡素化

cudaMemcpy(dst, src, count, kind)

HostBuf1 DeviceBuf1

DeviceBuf1HostBuf2

cudaMemcpyDeviceToHost

cudaMemcpyHostToDevice

cudaMemcpyHostToHost cudaMemcpyDeviceToDevice

HostBuf1 DeviceBuf1

DeviceBuf1HostBuf2

cudaMemcpyDefault

cudaMemcpyDefault

cudaMemcpyDefault cudaMemcpyDefault

UVAなし UVAあり

Page 14: CUDA 6の話@関西GPGPU勉強会#5

ついでに

✤ Mapped Memory!

✤ GPUからアクセス可能なCPU上のメモリ!

✤ Unified Virtual Addressing!

✤ CPUのメモリ空間とGPUのメモリ空間の統一!

✤ Unified Memory!

✤ CPUとGPUとで2重に確保して同期を自動的に行うメモリトータル・ディスクロージャー・サイト - CUDA 6速報(1): Unified Memory!

http://topsecret.hpc.co.jp/wiki/index.php/CUDA_6%E9%80%9F%E5%A0%B1(1):_Unified_Memory

Page 15: CUDA 6の話@関西GPGPU勉強会#5

XT and Drop-in Libraries

Page 16: CUDA 6の話@関西GPGPU勉強会#5

Extended Library Interfaces

✤ cuFFTとcuBLAS level 3がすごくなった!

✤ マルチGPUスケーリング!

✤ Out-of-core!

✤ BLAS互換インターフェース(cuBLAS level 3)

Page 17: CUDA 6の話@関西GPGPU勉強会#5

Drop-in NVBLAS

✤ 既存のBLASライブラリを置き換えるだけで

コンパイルし直さなくてもGPU実行が可能に!

✤ R、Octave、Scilab、…

env LD_PRELOAD=libnvblas.so myapp

gcc myapp.c -lnvblas -lmkl_rt -o myappor

Page 18: CUDA 6の話@関西GPGPU勉強会#5

GPUDirect RDMA in MPI

Page 19: CUDA 6の話@関西GPGPU勉強会#5

GPUDirect

✤ GPU間の高速データ転送!

✤ GPUDirect v1.0!

✤ Infinibandで接続されたノード間のGPUメモリ転送!

✤ GPUDirect v2.0!

✤ ノード内のGPU間のメモリ転送!

✤ CUDA 6でMPI時の更なるレイテンシ削減

Page 20: CUDA 6の話@関西GPGPU勉強会#5

Developer Tools

Page 21: CUDA 6の話@関西GPGPU勉強会#5

Eclipse版Nsightの改善

✤ リモート開発(ビルド、実行、デバッグ、プロファイル)!

✤ MPIのプロファイル!

✤ ホットスポット分析(Visual Profilerも)

Page 22: CUDA 6の話@関西GPGPU勉強会#5

まとめ

Page 23: CUDA 6の話@関西GPGPU勉強会#5

まとめ

✤ CUDA6の特徴(?)!

✤ GPGPU環境へのオフロードをより簡単、便利に!

✤ マルチデバイス・マルチノード対応の強化!

✤ 低レベルでのレイテンシ削減!

✤ CUDA 6は2014年始めにリリース

Page 24: CUDA 6の話@関西GPGPU勉強会#5

参考情報

✤ GPU TECHNOLOGY THEATER AT SC13!

✤ http://www.nvidia.com/object/sc13-technology-theater.html!

✤ SC13の資料・動画がみれる!

✤ トータル・ディスクロージャ・サイト!

✤ http://topsecret.hpc.co.jp/wiki/index.php!

✤ CUDA 6速報がいくつか掲載