Hands-On GPU-Accelerated Computer Vision with OpenCV and CUDA

Prefice


[UP]

この本を活用するために

この本の例は Windows, Linux, macOS 上で動作する。 computer vision を理解し、C++ や Python のプログラミング知識を前提としている。 この本のコード例を実行できる Nvidia GPU ハードウェアを保有している方が望ましい。

サンプルコードのダウンロード

github からダウンロードできる。

カラー画像のダウンロード

packtpub
からダウンロードできる。

Code in Action

code を実行している時のの動画 http://bit.ly/2PZOYcH

Cuda

Compute Unified Device Architecture (CUDA)

nVidia によって最初に開発された GPU は GeForce 256 (1999年)。 その後、Graphics 命令だけではなく一般の数値計算にも利用できるようになり、 GP-GPU (General Purpose GPU) と呼ばれるようになった。

CPU とそのメモリを「ホスト」と呼ぶ。 GPUとそのメモリを「デバイス」と呼ぶ。 CUDA コードには、ホストとデバイスの両方のコードが含まれている。 ホストコードはカーネルコールによってデバイスコードを呼び出す。 デバイス上で多くのスレッドを並行して起動する。

スレッドを起動する前に、ホストはホストメモリからGPUメモリにデータをコピーする。 スレッドは、デバイスメモリ上のデータを処理し、デバイスメモリに結果を保存する。 最後にこの結果データはホストメモリに描き戻される。

  1. ホストおよびデバイスのメモリにデータ用のメモリを割り当てる。
  2. ホストメモリからデバイスメモリにデータをコピーする。
  3. 並列度を指定してカーネルを起動する。
  4. すべてのスレッドが終了したら、データをデバイスメモリからホストメモリにコピーして戻す。
  5. ホストとデバイスで使用されているすべてのメモリを解放する。

CUDA 開発環境

CPU 用コンパイラ

GPU用コンパイラ

CUDA Toolkit https://developer.nvidia.com/cube-downloads

Cuda

CUDA toolkit ... https://developer.nvidia.com/cuda-downloads

NVIDIA CUDA Installation Guide for Linux