cuda 6の話@関西gpgpu勉強会#5
TRANSCRIPT
![Page 1: CUDA 6の話@関西GPGPU勉強会#5](https://reader034.vdocuments.site/reader034/viewer/2022050907/5589d5d2d8b42a403b8b46f9/html5/thumbnails/1.jpg)
2013年11月30日 関西GPGPU勉強会#5
CUDA 6の話おのうえ(@_likr)
![Page 2: CUDA 6の話@関西GPGPU勉強会#5](https://reader034.vdocuments.site/reader034/viewer/2022050907/5589d5d2d8b42a403b8b46f9/html5/thumbnails/2.jpg)
お前、誰よ
✤ おのうえ(@_likr)!
✤ 関西GPGPU勉強会主宰
![Page 3: CUDA 6の話@関西GPGPU勉強会#5](https://reader034.vdocuments.site/reader034/viewer/2022050907/5589d5d2d8b42a403b8b46f9/html5/thumbnails/3.jpg)
今日のおはなし
✤ SC13のCUDA6に関する発表を要約しようとする!
✤ “New Features in CUDA 6 Make GPU Acceleration Easier”!
✤ “Unified Memory in CUDA 6.0”!
✤ 性能向上の数値・グラフなどは上の発表資料を見てください!
✤ 上記の発表ぐらいしか一次情報がないので、解釈などに誤りがあったらごめんなさい
![Page 4: CUDA 6の話@関西GPGPU勉強会#5](https://reader034.vdocuments.site/reader034/viewer/2022050907/5589d5d2d8b42a403b8b46f9/html5/thumbnails/4.jpg)
CUDA 6の目玉
✤ Unified Memory!
✤ XT and Drop-in Libraries!
✤ GPUDirect RDMA in MPI!
✤ Developer Tools
![Page 5: CUDA 6の話@関西GPGPU勉強会#5](https://reader034.vdocuments.site/reader034/viewer/2022050907/5589d5d2d8b42a403b8b46f9/html5/thumbnails/5.jpg)
Unified Memory
![Page 6: CUDA 6の話@関西GPGPU勉強会#5](https://reader034.vdocuments.site/reader034/viewer/2022050907/5589d5d2d8b42a403b8b46f9/html5/thumbnails/6.jpg)
Unified Memory
✤ 明示的なメモリ転送が不要に!
✤ 複雑なデータ構造の扱いが容易に!
✤ メモリ転送パフォーマンスが良くなる(かも)
![Page 7: CUDA 6の話@関西GPGPU勉強会#5](https://reader034.vdocuments.site/reader034/viewer/2022050907/5589d5d2d8b42a403b8b46f9/html5/thumbnails/7.jpg)
Unified MemoryのイメージUnified Memoryなし
CPU GPU
System!Memory
GPU!Memory
Unified Memoryあり
CPU GPU
Unified Memory
![Page 8: CUDA 6の話@関西GPGPU勉強会#5](https://reader034.vdocuments.site/reader034/viewer/2022050907/5589d5d2d8b42a403b8b46f9/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050907/5589d5d2d8b42a403b8b46f9/html5/thumbnails/9.jpg)
どううれしいのか
✤ データをポインタで持つようなデータ構造の 明示的なデータ転送が不要になる
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](https://reader034.vdocuments.site/reader034/viewer/2022050907/5589d5d2d8b42a403b8b46f9/html5/thumbnails/10.jpg)
まだわからない部分?
✤ パフォーマンス!
✤ データの疎密さの影響!
✤ 最適化!
✤ メモリ転送制御(prefetchとか)!
✤ マルチGPU
![Page 11: CUDA 6の話@関西GPGPU勉強会#5](https://reader034.vdocuments.site/reader034/viewer/2022050907/5589d5d2d8b42a403b8b46f9/html5/thumbnails/11.jpg)
おまけ:Unified Virtual Addressing
✤ UVA、統合仮想アドレス空間!
✤ CUDA 4.0で導入!
✤ ホスト・デバイスのメモリを全部同じ空間で扱う!!
✤ Unified Memoryとは別物!
![Page 12: CUDA 6の話@関西GPGPU勉強会#5](https://reader034.vdocuments.site/reader034/viewer/2022050907/5589d5d2d8b42a403b8b46f9/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050907/5589d5d2d8b42a403b8b46f9/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050907/5589d5d2d8b42a403b8b46f9/html5/thumbnails/14.jpg)
ついでに
✤ 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](https://reader034.vdocuments.site/reader034/viewer/2022050907/5589d5d2d8b42a403b8b46f9/html5/thumbnails/15.jpg)
XT and Drop-in Libraries
![Page 16: CUDA 6の話@関西GPGPU勉強会#5](https://reader034.vdocuments.site/reader034/viewer/2022050907/5589d5d2d8b42a403b8b46f9/html5/thumbnails/16.jpg)
Extended Library Interfaces
✤ cuFFTとcuBLAS level 3がすごくなった!
✤ マルチGPUスケーリング!
✤ Out-of-core!
✤ BLAS互換インターフェース(cuBLAS level 3)
![Page 17: CUDA 6の話@関西GPGPU勉強会#5](https://reader034.vdocuments.site/reader034/viewer/2022050907/5589d5d2d8b42a403b8b46f9/html5/thumbnails/17.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022050907/5589d5d2d8b42a403b8b46f9/html5/thumbnails/18.jpg)
GPUDirect RDMA in MPI
![Page 19: CUDA 6の話@関西GPGPU勉強会#5](https://reader034.vdocuments.site/reader034/viewer/2022050907/5589d5d2d8b42a403b8b46f9/html5/thumbnails/19.jpg)
GPUDirect
✤ GPU間の高速データ転送!
✤ GPUDirect v1.0!
✤ Infinibandで接続されたノード間のGPUメモリ転送!
✤ GPUDirect v2.0!
✤ ノード内のGPU間のメモリ転送!
✤ CUDA 6でMPI時の更なるレイテンシ削減
![Page 20: CUDA 6の話@関西GPGPU勉強会#5](https://reader034.vdocuments.site/reader034/viewer/2022050907/5589d5d2d8b42a403b8b46f9/html5/thumbnails/20.jpg)
Developer Tools
![Page 21: CUDA 6の話@関西GPGPU勉強会#5](https://reader034.vdocuments.site/reader034/viewer/2022050907/5589d5d2d8b42a403b8b46f9/html5/thumbnails/21.jpg)
Eclipse版Nsightの改善
✤ リモート開発(ビルド、実行、デバッグ、プロファイル)!
✤ MPIのプロファイル!
✤ ホットスポット分析(Visual Profilerも)
![Page 22: CUDA 6の話@関西GPGPU勉強会#5](https://reader034.vdocuments.site/reader034/viewer/2022050907/5589d5d2d8b42a403b8b46f9/html5/thumbnails/22.jpg)
まとめ
![Page 23: CUDA 6の話@関西GPGPU勉強会#5](https://reader034.vdocuments.site/reader034/viewer/2022050907/5589d5d2d8b42a403b8b46f9/html5/thumbnails/23.jpg)
まとめ
✤ CUDA6の特徴(?)!
✤ GPGPU環境へのオフロードをより簡単、便利に!
✤ マルチデバイス・マルチノード対応の強化!
✤ 低レベルでのレイテンシ削減!
✤ CUDA 6は2014年始めにリリース
![Page 24: CUDA 6の話@関西GPGPU勉強会#5](https://reader034.vdocuments.site/reader034/viewer/2022050907/5589d5d2d8b42a403b8b46f9/html5/thumbnails/24.jpg)
参考情報
✤ 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速報がいくつか掲載