引き続いて、CUDAでのプログラミングをやっていく予定です。前回は環境構築と、取り合えず動かしてみたというところがメインだったのですが、基本的に画像処理にCUDAを用いたいと思っているので、前回よりは少し画像処理チックなことをやってみます。各ピクセルで独立に処理をすればよい教材ということで、今回はカラー画像をグレースケールに変換するプログラムをCUDAを利用して書いてみました。0.114*Bグレースケールとカラーの輝度値の変換は、上記の式に従って行っています。環境構築済ソースコードプログラムのビルドの方法に関しては、前回の記事を参考にしてください。第1回】convertToGray関数にてGPUでの並列計算を実施しています。今回画像の読み込みにはOpenCVを使いました。cudaMallocでデバイス(GPU)側のメモリを確保し、cudaMemcpyにてCPU→GPU、GPU→CPU側の伝送を行っています。シェアードメモリ等は利用しておらず、とにかくシンプルな実装としています。そのあたりも少しずつ使えるようにしていきたいですね。