Rustで書いたCUDAカーネルで画像処理してみる
CRANK
!概要C++の後継と言われているRustですが、現状でまだC++の方が勝っているのではないかという点の一つが、GPUなどのハードウェアアクセラレーションまわりかなと思っています。ハードウェアアクセラレーションの中でも特にCUDAは近年、画像処理やディープラーニングの発展によって使用される機会が増えてきています。現状では、画像処理で使われるOpenCVやディープラーニング系のフレームワークもCUDAによる処理を記述するためにC++を用いており、それをPython等にバインディングしていますが、こういったところにもRustが入ってきてより使いやすいものになると、いよいよC++の立場も危うくなってきそうです。この記事ではRustでもCUDAをうまく扱っていくために、実用的な用途として考えられそうな画像処理を行うコードを書いてみようと思います。Rust-CUDA今回RustでCUDAを使うために使用するパッケージはこちらです。 には登録できていないのですが、ライブラリっぽい使い方ができるような構成にしています。Rust-CUDAに習って、ホスト用とデバイス用の2つのクレートを持つワークスペースになっており、以下のような形でcpuフォルダにホスト側のプログラムを、gpuフォルダ…