私のライブラリでは、コンピューティング機能 2.0 以上のデバイスをサポートする必要があります。CC 3.5+ デバイスの場合、動的並列処理を利用する最適化されたカーネルを実装しました。「compute_35,sm_35」よりも小さい値が指定されている場合、nvcc コンパイラは DP をサポートしていないようです (コンパイラ/リンカー エラーが発生しています)。私の質問は、そのような場合に複数のカーネル バージョンをサポートする最善の方法は何ですか? 複数の DLL があり、実行時にそれらを選択することはできますが、もっと良い方法があるかどうか疑問に思っていました。
更新:私は#if __CUDA_ARCH__ >= 350
他のもの(__ldg()
など)に正常に使用していますが、次のエラーを生成するcudadevrt.libとリンクする必要があるため、DPの場合は機能しません:
1>nvlink : 致命的なエラー : C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v5.5/lib/Win32/cudadevrt.lib に互換性のあるデバイス コードが見つかりませんでした