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

3,107 views

Published on

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,107
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
10
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

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

  1. 1. CUDA 6の話 おのうえ(@_likr) 2013年11月30日 関西GPGPU勉強会#5
  2. 2. お前、誰よ ✤ おのうえ(@_likr)! ✤ 関西GPGPU勉強会主宰
  3. 3. 今日のおはなし ✤ SC13のCUDA6に関する発表を要約しようとする! ✤ “New Features in CUDA 6 Make GPU Acceleration Easier”! ✤ “Unified Memory in CUDA 6.0”! ✤ 性能向上の数値・グラフなどは上の発表資料を見てください! ✤ 上記の発表ぐらいしか一次情報がないので、
 解釈などに誤りがあったらごめんなさい
  4. 4. CUDA 6の目玉 ✤ Unified Memory! ✤ XT and Drop-in Libraries! ✤ GPUDirect RDMA in MPI! ✤ Developer Tools
  5. 5. Unified Memory
  6. 6. Unified Memory ✤ 明示的なメモリ転送が不要に! ✤ 複雑なデータ構造の扱いが容易に! ✤ メモリ転送パフォーマンスが良くなる(かも)
  7. 7. Unified Memoryのイメージ Unified Memoryなし System! Memory GPU! Memory CPU GPU Unified Memoryあり Unified Memory CPU GPU
  8. 8. cudaMallocManaged CPU CUDA Unified Memory 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で確保されたメモリ領域はホストデバイス両方で使える New Features in CUDA 6 Make GPU Acceleration Easier
  9. 9. どううれしいのか ✤ データをポインタで持つようなデータ構造の
 明示的なデータ転送が不要になる ネストしたデータ prop1 System Memory prop2 *text “We love YAMADA.” GPU Memory struct dataElem { int porp1; int prop2; char *text; }; 従来は2回の明示的な転送が必要 Linked List key key key key data data data data next next next next
  10. 10. まだわからない部分? ✤ パフォーマンス! ✤ ✤ 最適化! ✤ ✤ データの疎密さの影響! メモリ転送制御(prefetchとか)! マルチGPU
  11. 11. おまけ:Unified Virtual Addressing ✤ UVA、統合仮想アドレス空間! ✤ CUDA 4.0で導入! ✤ ホスト・デバイスのメモリを全部同じ空間で扱う!! ✤ Unified Memoryとは別物!
  12. 12. UVAのイメージ UVAなし UVAあり System! GPU0! GPU1! Memory Memory Memory System! GPU0! GPU1! Memory Memory Memory 0x0000 0x0000 0x0000 0xFFFF 0xFFFF 0xFFFF CPU GPU0 GPU1 PCI-e 0x0000 0xFFFF CPU GPU0 GPU1 PCI-e
  13. 13. UVAで変わったこと ✤ メモリ転送命令の簡素化 cudaMemcpy(dst, src, count, kind) UVAなし UVAあり cudaMemcpyHostToDevice HostBuf1 cudaMemcpyDefault DeviceBuf1 HostBuf1 cudaMemcpyDeviceToHost cudaMemcpyHostToHost HostBuf2 DeviceBuf1 cudaMemcpyDefault cudaMemcpyDeviceToDevice DeviceBuf1 cudaMemcpyDefault HostBuf2 cudaMemcpyDefault DeviceBuf1
  14. 14. ついでに ✤ Mapped Memory! ✤ ✤ Unified Virtual Addressing! ✤ ✤ GPUからアクセス可能なCPU上のメモリ! 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
  15. 15. XT and Drop-in Libraries
  16. 16. Extended Library Interfaces ✤ cuFFTとcuBLAS level 3がすごくなった! ✤ マルチGPUスケーリング! ✤ Out-of-core! ✤ BLAS互換インターフェース(cuBLAS level 3)
  17. 17. Drop-in NVBLAS ✤ 既存のBLASライブラリを置き換えるだけで
 コンパイルし直さなくてもGPU実行が可能に! ✤ R、Octave、Scilab、… gcc myapp.c -lnvblas -lmkl_rt -o myapp or env LD_PRELOAD=libnvblas.so myapp
  18. 18. GPUDirect RDMA in MPI
  19. 19. GPUDirect ✤ GPU間の高速データ転送! ✤ GPUDirect v1.0! ✤ ✤ GPUDirect v2.0! ✤ ✤ Infinibandで接続されたノード間のGPUメモリ転送! ノード内のGPU間のメモリ転送! CUDA 6でMPI時の更なるレイテンシ削減
  20. 20. Developer Tools
  21. 21. Eclipse版Nsightの改善 ✤ リモート開発(ビルド、実行、デバッグ、プロファイル)! ✤ MPIのプロファイル! ✤ ホットスポット分析(Visual Profilerも)
  22. 22. まとめ
  23. 23. まとめ ✤ CUDA6の特徴(?)! ✤ ✤ マルチデバイス・マルチノード対応の強化! ✤ ✤ GPGPU環境へのオフロードをより簡単、便利に! 低レベルでのレイテンシ削減! CUDA 6は2014年始めにリリース
  24. 24. 参考情報 ✤ 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速報がいくつか掲載

×