2012-03-03 8 views
1

GPUのCUDAサンプルを調べて、NvidiaのパックやOpenCVのデモのサンプルを試してみました。 Nvidiaのサンプルのほとんどは動作しますが、OpenCVはOpenCV Error:Gpu APIコール(無効なデバイスシンボル)を私に提供します。CUDA、新しいカードが必要ですか? 1.0,1.1,2.0,2.1の相違点

私はgts 8800カードを持っており、Nvidiaがコンピューティング機能1.0として挙げたものをサポートしています。違いは何ですか?これに関連するエラーは何ですか?新しいカードを購入すれば、もっと多くのものを稼ぐことができますか?

+0

ダウンロード[CUDA Cプログラミング・ガイド](http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_C_Programming_Guide.pdf)それを通して読んだことがあります。さまざまなコンピューティング機能とその相違点や改善点について、必要なすべての情報を提供します。 – Bart

答えて

1

OpenCVは1.1以降のCUDA機能をサポートしているようです。悲しいが、真... OpenCVのMakefileのから

set(CUDA_ARCH_BIN "1.1 1.2 1.3 2.0 2.1(2.0)" 
     CACHE STRING "Specify 'real' GPU architectures to build binaries for, 
     BIN(PTX) format is supported") 
1

はい、新しいカードを購入した場合、より高度な機能を使用できるはずです。 DeviceQuery SDKの例を使用してコンピューティング機能を利用することも、多数のカードを検索することもできます。コンピューティング能力の異なるハードウェアデバイスの違いについては、「CUDAプログラミングガイド」または「CUDAベストプラクティスガイド」の付録に記載されています。どちらもドライバとツールキットを入手した同じ場所にあります... developer.nvidia.com、おそらく。

これがあなたの特定の問題の原因であるかどうかわかりません。一般に、新しいデバイスは多くの場合、古いデバイスよりも多くのことを行うことができます。

+0

自分でopencvをコンパイルした後に実行するようにしました。デモのソースがどこにあるのか把握するだけで、私も試してみることができます。 –

1

私は8800 GTXを持っていると私は、バージョン1.0でCUDA機能を使用傾けます。正しいCUDA検出利用の場合:

if (GpuInvoke.HasCuda && 
    GpuInvoke.GetCudaEnabledDeviceCount() > 0 && 
    new GpuDevice(GpuInvoke.GetDevice()).CudaComputeCapability.Major > 1) 
{ 
    //enter code here 
}