CUDA 4.0 の特徴 ( Featrues of CUDA 4.0 )

以下のリンクから CUDA 4.0 の関するスライドをダウンロードできます.
You can download a slide about CUDA 4.0 from link below.

このスライドを元に簡単に, CUDA 4.0 の特徴についての説明をしようと思います.

I will try to explain CUDA 4.0 features based on this slide.



コピーが不要な pinned system memory ( No-copy Pinning of System Memory )


  • Pinned メモリは以前の CUDA のバージョンでもあったと思うのですが, どうやら明示的なコピーをする必要がなくなったようです.
  • これによって, システムメモリ側で確保しておくメモリ領域が減るので使用するシステムメモリのサイズや memcpy() のオーバーヘッドが減ります.
  • I guess there was a pinned memory also at previous CUDA version, but it seems you don't have to copy the memory area explicitly.
  • So, it reduces system memory usage and CPU memcpy() overhead.

C++

  • new/delete のサポート
  • C++ virtual functions への対応
  • PTX のインライン記述による最適化が可能
  • STL ライクな C++ のテンプレートライブラリThrust のサポート
  • Supports new/delete.
  • Supports C++ virtual functions.
  • Enables assembly-level optimization by using inline PTX.
  • Thrust : C++ Templatized Algorithms & Data Structures.

GPU Direct V2.0

  • メインメモリを介することなく, GPU2 のメモリから GPU 1 のメモリへ直接転送可能.
  • GPU0 は GPU1 のメモリを読み書きすることが可能.
  • Peer-to-Peer memory access, transfers & synchronization between multiple GPUs.
  // before
  // GPU2 のメモリの領域を, システムメモリへ転送
  // Transfer GPU2 memory area to system memory area
  cudaMemcopy( GPU2_memory, system_memory )
  // システムメモリを GPU1 のメモリの領域に転送
  // Transfer system memory area to GPU1 memory area
  cudaMemcopy( system_memory, GPU1_memory )


  // after
  // GPU2 のメモリの領域を, GPU1 のメモリへ転送
  // Transfer GPU2 memory area to GPU1 memory area
  cudaMemCpy(GPU2_memory, GPU1_memory)


Unified Virtual Addressing

  • 以前はシステムメモリ用のメモリ空間, GPU のメモリ空間というようにメモリ空間がありましたが, そうではなくそれらを統合した単一の仮想アドレス空間になりました.
  • Several memory spaces for system memory and GPU memory are intergrated to one virtual address space.


  // この API を使います.
  // You use this API to use this feature.
  cudaMemcpyDefault()