Я хочу создать собственные ядра CUDA, которые будут использовать изображения, читаемые как типы Mat, используя OpenCV. У меня есть несколько вопросов о совместимости CUDA, OpenCV и вычислительных возможностей моего устройства. Я читал из многих мест, но у меня не было четкого ответа.
Устройство: Tesla C2070, вычислительные возможности: 2.0
Версия CUDA: 9.1
Версия OpenCV: 3.4
Теперь, выполняя простой пример CUDA, я столкнулся с этой ошибкой: terminate вызывается после создания экземпляра cv :: Exception what (): OpenCV (3.4.10-dev) / opt / opencv /modules/cudev/include/opencv2/cudev/grid/detail/transform.hpp:334: ошибка: (-217: вызов API Gpu) отсутствует образ ядра для выполнения на устройстве в функции 'call'
Пример:
#include <iostream>
#include "opencv2/opencv.hpp"
int main (int argc, char* argv[])
{
//Read Two Images
cv::Mat h_img1 = cv::imread("cameraman.tif");
cv::Mat h_img2 = cv::imread("circles.png");
//Create Memory for storing Images on device
cv::cuda::GpuMat d_result1,d_img1, d_img2;
cv::Mat h_result1;
//Upload Images to device
d_img1.upload(h_img1);
d_img2.upload(h_img2);
std::cout << "All is good till here" << std::endl;
cv::cuda::add(d_img1,d_img2, d_result1);
return 0;
}
Я прочитал это потому, что CUDA 9 не поддерживает вычислительные возможности 2 (источник: Cuda - nv cc - Образ ядра недоступен для выполнения на устройстве. В чем проблема? ).
Мне кажется, мне нужно найти подходящую версию CUDA, которая совместима с OpenCV и вычислительными возможностями моего устройства. Я мог найти список версий CUDA, совместимых с определенной вычислительной возможностью, здесь: https://en.wikipedia.org/wiki/CUDA. Тем не менее, я не вижу списка, говорящего о том, какие версии CUDA и OpenCV совместимы. Есть ли такая вещь? И это мой единственный вариант? Это заняло у меня так много времени, и при установке возникло много проблем, поэтому я хочу убедиться в этом, прежде чем переустановить все.