試した環境
- Microsoft Visual Studio Community 2019 Version 16.8.3
- NVIDIA CUDA 11.0
- GeForce GTX 750
本題
Visual Studio の CUDA 11.0 Runtime プロジェクトのデフォルトソースコードで、ビルドは通ったものの実行時に以下のメッセージが表示されました。
addKernel launch failed: no kernel image is available for execution on the device addWithCuda failed!
構成プロパティ -> CUDA C/C++ -> Device の Code Generation をみると、デフォルトの値としてcompute_52,sm_52
が指定されていました。
私が使用している GeForce GTX 750 の compute capability が 5.0 のため、ここにcompute_50,sm_50
を追加します。
するとビルド時に以下の警告が出ます。
CUDACOMPILE : nvcc warning : The 'compute_35', 'compute_37', 'compute_50', 'sm_35', 'sm_37' and 'sm_50' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
しかしこれで動くようになりました。
{1,2,3,4,5} + {10,20,30,40,50} = {11,22,33,44,55}
CUDA 11.0 から compute capability 5.0 が非推奨になってしまいました。 CUDA のバージョンを下げることを検討したほうがいいかもしれません。
参考
自分が使っている NVIDIA GPU の compute capability を確認するために以下のページを参考にしました。
CUDA のバージョンと compute capability の対応については以下の Stack Overflow の解答が参考になります。 NVIDIA のサイトでは見つけられませんでした。