CUDA, мне нужна новая карта? Отличия от 1,0, 1,1, 2,0, 2,1 - PullRequest
1 голос
/ 03 марта 2012

Изучал некоторые сэмплы GPU CUDA и пробовал некоторые сэмплы из пакета Nvidia, а также некоторые демонстрации в OpenCV. Большинство сэмплов Nvidia работают, но OpenCV дает мне в основном ошибку OpenCV: вызов API Gpu (недопустимый символ устройства).

У меня есть карта gts 8800, поддерживающая то, что Nvidia перечисляет как вычислительную способность 1.0. Каковы различия и мои ошибки связаны с этим? Могу ли я запустить больше вещей, если куплю новую карту?

Ответы [ 3 ]

1 голос
/ 04 марта 2012

Похоже, что OpenCV поддерживает возможности CUDA от 1.1 и выше. Грустно, но верно ...

Из 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 голос
/ 24 апреля 2012

У меня 8800 GTX, и я не могу использовать функции CUDA с версией 1.0.Для правильного обнаружения CUDA используйте:

if (GpuInvoke.HasCuda &&
    GpuInvoke.GetCudaEnabledDeviceCount() > 0 &&
    new GpuDevice(GpuInvoke.GetDevice()).CudaComputeCapability.Major > 1)
{  
   //enter code here
}
1 голос
/ 03 марта 2012

Да, вы сможете использовать более продвинутые функции, если покупаете новую карту. Вы можете использовать пример DeviceQuery SDK, чтобы получить возможность вычислений, или вы можете найти его для многих карт. Различия между аппаратными устройствами с различными вычислительными возможностями перечислены в приложениях к Руководству по программированию CUDA и / или Руководству по оптимальной практике CUDA, которые доступны в том же месте, где вы получаете драйвер и инструментарий ... возможно.

Я не знаю, является ли это причиной вашей конкретной проблемы или нет; но, как правило, новые устройства могут делать больше, чем старые, во многих случаях.

...