私はgpuサポートでOpenCVをしばらく構築してきましたが、修正できないような状況に遭遇しました。 OpenCV 3.3をVS 2013とCUDA 8.0でビルドした後、OpenCV cpuとgpuは、私のテストマシンGTX 750 TiとGTX 950Mの両方(Windows 10とも)で正常に動作するようです。 GTX 1050 Tiを搭載した別のマシンでは、CPUが動作しますが、私は最初のOpenCV-cuda関数呼び出しで "無効なデバイス機能"を取得します。 CMakeでは、私はCUDA_ARCH_BINとCUDA_GENERATION変数を試して再構築しましたが、私はこの1台のマシンの解決策を見つけることができません。私はNVidiaグラフィックスドライバを更新し、3.0,3.5,3.7,5.0のCUDA_ARCH_BIN、MaxwellのKeplerのCUDA_GENERATIONを試してみました。すべてが2台のテストマシンで動作し、3台目と同じエラーで失敗します。私がウェブ上で見つけたすべてのことは、これはGPUの計算機能とCUDA_ARCH_BIN設定の不一致が原因であると言います。私は、5.0/Maxwellを設定すると、Maxwell、Pascals、およびそれ以降で動作すると思います。唯一の他の変数は、1050 TiがWindows 7ボックスで動作していることです。問題はないと私は祈っています。あるいは、VS2013、Cuda 8.0、および/またはOpenCV 3.3との間に互換性がないかもしれませんか?どんなアイデアでも大歓迎です。OpenCV Cuda最初のcudaコールで無効なデバイス機能
0
A
答えて
1
正解を提供してくれた@RobertCrovellaに感謝します。この問題はCMAKEのCUDA_ARCH_BINリストに6.1を追加するだけで解決しました。だから私が使用し終わったのは でした。CUDA_ARCH_BIN = 5.0,5.2,6.0,6.1(私はMaxwellとPascalにしか関心がないので) と私はCUDA_GENERATIONを空にしました。 CUDA_GENERATIONのために何かを選択すると、自動的にCUDA_ARCH_BINがあなたのために埋められます...そして、私のために、それは私が望む以上に私を与えました。
サイドノート:CUDA_ARCH_BINに追加するアーキテクチャが多くなればなるほど、OpenCV dllが大きくなったことに気付きました。ロバートがコメントしたことを正確にサポートしています。リスト内のすべてのアーキテクチャに対して、そのアーキテクチャの特定のコードがdllに追加されているようです。リストにアーチを置かないと、コードはそのアーチでは実行されません。
これですべてが明らかになったようです。
もう一度、Robertさんに感謝します。ここ
興味のある方のためには、私のCUDAのCMAKE設定です:
関連する問題
- 1. CUDA無効なデバイスの機能
- 2. CUDAでのMalloc機能の効率
- 3. CUDA cudaMemcpy:無効な引数
- 4. 無効なデバイスシンボルcudaMemcpyFromSymbol CUDA
- 5. Nsight Eclipse Cuda + opencv
- 6. CUDA matrixMulCUBLAS余分なmemcpyコール
- 7. Cuda Fortranデバイス変数の初期化スコープ
- 8. CUDA 6.5(キャップ1.1)「無効な引数」
- 9. CNTKのCUDA計算機能
- 10. Cudaのドキュメントの不明な機能
- 11. 異なる機能でのcudaデバイス変数の割り当てと使用
- 12. Android用opencv付きCUDA
- 13. デバイスへのCUDA C++コピーオブジェクトポインタ
- 14. CUDAとCompute Visual Profilerの新機能
- 15. CUDAコンピューティング機能下位互換性
- 16. CUDAアクティブ経糸CUDAで
- 17. PythonのOpencv Cuda関数の使用
- 18. cuda - カーネル最適化
- 19. Cuda maxwellに最適
- 20. OpenCLまたはCUDAコールのオーバーヘッド?
- 21. OpenCVのestimateRigidTransformに相当するCUDA 3
- 22. CUDAでホストからデバイスへアレイをコピー
- 23. 初期化子がCUDA
- 24. CUDAでホストとデバイスのための効率的な疎テンソルへのハッシュテーブルのアプローチ
- 25. CUDAで可能な最大ブロック数はいくらですか?
- 26. CUDAの効率的な画像ピラミッド?
- 27. CUDAの最小テクスチャサイズ制限
- 28. rc4とcudaの最適化
- 29. CUDA削減の最適化
- 30. Cudaレジスタコンパイラの最適化
私はこのことを、この質問を書いていたとして、それは私に起こったパスカル1050デバイス –
@RobertCrovella用アーチ6.1 /パスカルを追加することをお勧め問題かもしれない。 CUDA_ARCH_BINを3.0,3.2,3.5,3.7,5.0,5.2に設定すると、6.1カードで動作すると思います。たぶん*あなたがカバーしたいすべてのコンピューティング機能がリストになければならないのでしょうか?とにかく今ビルドして戻ってきます。 –
これは、実際にどのようにcmakeがそれらのエントリを実際のCUDAビルドスイッチに変換するかによって異なります。それがPTXの包含を指定すれば、あなたは正しいです。そうでなければ、私は正しいです。 「無効なデバイス機能」のエラーは、ビルドされたイメージに適切なPTXが存在しないことを決定的に示しているため、私は正しいと思っており、自分の声明と一貫していると考えています。これは、GPUの計算機能とCUDA_ARCH_BIN設定の間の不一致が原因であると言います –