Как получить доступ к элементу на CV :: GPU :: Matrix GPUMAT с помощью CUDA и OPENCV? -- opencv поле с участием matrix поле с участием cuda поле с участием gpu пол Связанный проблема

How to access an element on cv::gpu::GpuMat matrix using CUDA and OpenCV?


2
vote

проблема

русский

Я работаю над проектом, который реализует алгоритм обнаружения лица на платформе CUDA.

В настоящее время я бы получить доступ к элементу <код> Given Week: 31 Return First Day of Week: July 24 6 экземпляра .

Я попробовал следующие обычные методы:

  1. пытаясь сделать индукцию от <код> Given Week: 31 Return First Day of Week: July 24 7 , <код> Given Week: 31 Return First Day of Week: July 24 8 нет <код> Given Week: 31 Return First Day of Week: July 24 9 метода.
  2. Я пытался использовать <код> Given Week: 52 Return First Day of Week: Dec 25 0 , я получаю сообщение об ошибке.

Вот мой код на findectection.cu файл:

 <Код> Given Week: 52 Return First Day of Week: Dec 25 1  

Я получаю ошибку

 <код> Given Week: 52 Return First Day of Week: Dec 25 2  
Английский оригинал

I'm working on a project which implement face detection algorithm on CUDA platform.

Currently I'd to access an element on GpuMat instance.

I have tried the following conventional methods:

  1. Trying to make induction from cv:Mat, GpuMat doesn't have a <T>.at method.
  2. I have tried using CV_MAT_ELEM , I receive an error.

Here is my code on FaceDetection.cu file:

        int DetectFacesGPU(cv::gpu::GpuMat * sumMat ,cv::gpu::GpuMat * qSumMat , float factor)             {                 //                 int i = CV_MAT_ELEM(*sumMat,int ,0,0);                  //  

I receive an error

Error   29  error : expression must have class type C:UsersShaharDropboxOpenCV2.3OpenCV2.3FaceDetectionLatestFaceDetectionCudaFaceDetectionLatestFaceDetection.cu  139 
</div
           
     
     

Список ответов

3
 
vote

Вы должны загрузить его на <код> WebView3 , а затем получить доступ к нему со стандартным способом.

Я думаю, что скачивание так же просто, как:

 <код> WebView4  
 

You have to download it to a cv::Mat and then access it with the standard way.

I think downloading it is as simple as:

cv::Mat mat; sumMat->download(mat); // or something like that.  
</div
 
 
     
     
0
 
vote

Из определения <код> CV_MAT_ELEM , <код> CV_MAT_ELEM(*sumMat, int, 0, 0); расширяется до:

 <код> *(int*)CV_MAT_ELEM_PTR_FAST(*sumMat, 0, 0, 4));   

и в свою очередь расширился до:

 <код> *(int*)(assert ( 0 < (*sumMat).rows && 0 < (*sumMat).cols ),                (*sumMat).data.ptr + (size_t)(*sumMat).step*0 + 4*0);   

Предполагая, что ваш <код> DetectFacesGPU функция определяется как код устройства, приведенное выше оператор неисправен, потому что вы не можете нельзя разыраться <код> sumMat в коде устройства. При этом вы получаете доступ к памяти хоста из кода устройства. Вы должны быть осторожны, потому что GpuMat Сам класс выделяется в памяти хоста. Это только фактические данные матрицы , которые выделяются в памяти устройства.

Так <Код> GpuMat Сам класс в общем, не передается в ядро. Чтобы получить доступ к отдельным пикселям GpuMat в ядре, вы должны пройти указатель, ссылающийся на фактические данные матрицы (который находится в памяти устройства) в ядро ​​и выполняет арифметику указателя на этом указателе.

 

From the definition of CV_MAT_ELEM, CV_MAT_ELEM(*sumMat, int, 0, 0); is expanded to:

*(int*)CV_MAT_ELEM_PTR_FAST(*sumMat, 0, 0, 4)); 

and in turn expanded to:

*(int*)(assert ( 0 < (*sumMat).rows && 0 < (*sumMat).cols ),                (*sumMat).data.ptr + (size_t)(*sumMat).step*0 + 4*0); 

Assuming that your DetectFacesGPU function is defined as a device code, the above statement is faulty because you can't dereference sumMat in device code. By doing so you're accessing host memory from device code. You have to be careful because GpuMat class itself is allocated in host memory. It is only the actual matrix data that is allocated in device memory.

So GpuMat class itself is, in general, not passed to kernel. To access individual pixels of GpuMat in kernel, you have to pass the pointer referencing the actual matrix data (which is in device memory) to the kernel and do pointer arithmetic on that pointer.

</div
 
 

Связанный проблема

1  Можно ли проанализировать память GPU в Visual Studio?  ( Is it possible to analyze gpu memory in visual studio ) 
Интересно, есть ли способ просмотреть RAW VRAM память GPU в Visual Studio. Так же, как при открытии макета памяти от Soft Visual Studio, которая показывает па...

10  Используя CUDA, чтобы решить систему уравнений в нелинейных наименьших квадратах  ( Using cuda to solve a system of equations in non linear least squares fashion ) 
Использование CUDA, я хотел бы решить систему уравнений с нелинейным решаемым наименьшими квадратами. Эти методы обсуждаются в отличном буклете, который можно...

1  Как я могу ускорить тренировку сети, используя мой графический процессор?  ( How can i speed up the training of a network using my gpu ) 
Мне было интересно, есть ли способ использовать свой графический процессор для ускорения тренировки сети в Pybrain. ...

-2  Caffe не использует GPU  ( Caffe not using gpu ) 
Я установил Caffe в среде Anaconda Python 3.5, используя следующую команду: <Код> conda install -c anaconda caffe-gpu . Машина - машина Ubuntu с CUDA уже прав...

1  Как я правильно использую глобальную память в CUDA?  ( How i use global memory correctly in cuda ) 
Я пытаюсь сделать приложение в CUDA, который использует глобальную память, определенную с помощью устройством . Эти переменные объявлены в файле .cuh. в др...

1  Карта GPU сбрасывает через 2 секунды  ( Gpu card resets after 2 seconds ) 
Я использую карту NVIDIA GeForce, которая дает ошибку через 2 секунды, если я попытаюсь запустить программу CUDA на нем. Я прочитал Здесь , что вы можете исп...

2  не могу получить Скорча, чтобы бежать на GPU  ( Cant get skorch to run on gpu ) 
У меня работает мой код Skorch Net Net GridSearchcv, он просто кажется, не будет на графическом процессе, чтобы он медленно. Любая помощь оценила. Требует...

3  Время запуска Keras (_make_train_function ()) Очень медленно на GPU Tesla V100-SXM2-16GB, по сравнению с менее мощным графическим процессором  ( Keras startup time make train function very slow on tesla v100 sxm2 16gb gp ) 
Следуйте до: Keras с Tensorflow на машине GPU - некоторые детали очень медленные работает mnist_cnn.py (слегка изменено - в основном добавление ведения жу...

1  Регистрация GPuview с Cygwin не работает  ( Gpuview logging with cygwin doesnt work ) 
Когда я бегу <код> log.cmd из командной строки Windows, я получаю ошибки из <код> xperf , говоря, что <код> *.etl файл уже существует. Я понимаю, что другие...

7  Как отладки CUDA, используя Eclipse Nsight только с одним графическим процессором  ( How to debug cuda using eclipse nsight with only one gpu ) 
Я получаю ошибку: «Все устройства CUDA используются для отображения и не могут быть использованы при отладке» (Используя Ubuntu) Есть ли способ использовать...

1  Как я могу связать GPU каждому процессору  ( How can i associate a gpu to each cpu ) 
У меня есть вопрос: Давайте скажем, у меня есть 2 GPU: s в моей системе, и у меня есть 2-хост-процессы, работающие в CUDA Code. Как я могу быть уверен, что ...

2  Неиспользованные различные переменные в фрагменте шейдер GLSL - могут ли они ранить  ( Unused varying variables in fragment shader glsl can they hurt perf ) 
Что происходит с неиспользованными различными переменными в GLSL GPU имеют междершенные буферы, которые наследуются этими значениями, но поскольку фрагментный...

-3  Как умножить 100 целых чисел с еще 100 целых чисел параллельно на графическом процессе с помощью Pyopencl?  ( How to multiply 100 integers with another 100 integers in parallel on a gpu usin ) 
Есть много примеров Pyopencl при выполнении арифметических операций на векторах размера 4. Если мне нужно умножить 100 целых чисел с еще одним 100 целыми числ...

1  TF: Ошибка распределения памяти, если два GPU присутствует  ( Tf memory allocation error if two gpu present ) 
У меня 2 GPU, установленные в двух слотах PCIEX16. Один 1080Ti, один 980. GPU-Z показывает, как присутствующие устройства, так и диспетчера устройств, как п...

1  ATI Stream SDK на Ubuntu 9.04  ( Ati stream sdk on ubuntu 9 04 ) 
Я использовал ATI Stream SDK на Windows XP SP3 и реализовал один алгоритм на GPU. Но теперь я заинтересован в масштабировании этого алгоритма на нескольких гр...

3  Фильтр SOBEL в CUDA (не могу показать полное изображение)  ( Sobel filter in cuda cant show full image ) 
У меня есть классическая проблема о выходе фильтра SOBEL с использованием CUDA. Это основной класс (Main.cpp) <код> /*main class */ int main(int argc, cha...

-1  Не может переключаться между видеокартами на Ubuntu  ( Cannot switch between graphics cards on ubuntu ) 
Я недавно установил NVIDIA X Server, как упомянуто во многих сообщениях, чтобы переключиться между моими графическими картами. Однако, когда я запускаю NVIDIA...

6  Что касается ошибки режима GPU при запуске виртуального устройства Android  ( Regarding gpu mode error in launching android virtual device ) 
Когда я пытаюсь запустить виртуальное устройство Android в Android Studio 2.0, он дает мне последую ошибки. <Сильная> Ошибка: Неверный режим GPU 'MESA', исп...

3  Огромная разница производительности OpenGL в Linux против MacOS, одинаковое оборудование [закрыто]  ( Huge opengl performance difference in linux versus macos same hardware ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> закрыто. Этот вопрос нуждается в Детали отладки . В настоящее вр...

5  Элементные операции в C ++  ( Element wise operations in c ) 
Есть ли проведенная библиотека, которая позволит мне создавать массивные объекты, которые имеют следующие свойства: Спецификация размера времени пробега (в...

2  Получение достоверной информации о памяти GPU в OpenGL ES  ( Getting reliable informations about gpu memory under opengl es ) 
Как я могу получить надежную информацию о памяти, зарезервированной для операций ГПУ в среде OpenGL ES? Например, как я могу определить, сколько памяти я могу...

4  CUDA "Нет Совместимого устройства" Ошибка на Ubuntu 11.10 / 12.04  ( Cuda no compatible device error on ubuntu 11 10 12 04 ) 
Я пытался настроить среду Ubuntu на моем ноутбуке уже некоторое время для программирования CUDA. В настоящее время я в настоящее время двойной загрузку Window...

0  Функция Python альтернатива Gpuarray Matlab ()  ( Python function alternative to matlabs gpuarray ) 
<Код> MATLAB имеет приятную функцию <код> gpuArray(); для эксплуатации графического процессора для выполнения операций на скорости молнии (особенно если уст...

0  OOM при выделении тензора с формой [1,48 48,1024] и типа поплавок на / job: localhost / replica: 0 / task: 0 / Устройство: GPU: 0 by allocator gpu_0_bfc  ( Oom when allocating tensor with shape1 48 48 1024 and type float on joblocal ) 
Я пытаюсь воспроизвести тренировку маски RCNN в следующем репозитории: https: //github.com/maxkferg/metal-defect-detection Кодовый фрагмент для поезда сле...

7  Высокая точность математика на GPU  ( High precision math on gpu ) 
Я заинтересован в реализации алгоритма в GPU с использованием HLSL, но один из моих основных проблем заключается в том, что я хотел бы получить переменный уро...

Связанный проблема

1  Можно ли проанализировать память GPU в Visual Studio? 
10  Используя CUDA, чтобы решить систему уравнений в нелинейных наименьших квадратах 
1  Как я могу ускорить тренировку сети, используя мой графический процессор? 
-2  Caffe не использует GPU 
1  Как я правильно использую глобальную память в CUDA? 
1  Карта GPU сбрасывает через 2 секунды 
2  не могу получить Скорча, чтобы бежать на GPU 
3  Время запуска Keras (_make_train_function ()) Очень медленно на GPU Tesla V100-SXM2-16GB, по сравнению с менее мощным графическим процессором 
1  Регистрация GPuview с Cygwin не работает 
7  Как отладки CUDA, используя Eclipse Nsight только с одним графическим процессором 
1  Как я могу связать GPU каждому процессору 
2  Неиспользованные различные переменные в фрагменте шейдер GLSL - могут ли они ранить 
-3  Как умножить 100 целых чисел с еще 100 целых чисел параллельно на графическом процессе с помощью Pyopencl? 
1  TF: Ошибка распределения памяти, если два GPU присутствует 
1  ATI Stream SDK на Ubuntu 9.04 
3  Фильтр SOBEL в CUDA (не могу показать полное изображение) 
-1  Не может переключаться между видеокартами на Ubuntu 
6  Что касается ошибки режима GPU при запуске виртуального устройства Android 
3  Огромная разница производительности OpenGL в Linux против MacOS, одинаковое оборудование [закрыто] 
5  Элементные операции в C ++ 
2  Получение достоверной информации о памяти GPU в OpenGL ES 
4  CUDA "Нет Совместимого устройства" Ошибка на Ubuntu 11.10 / 12.04 
0  Функция Python альтернатива Gpuarray Matlab () 
0  OOM при выделении тензора с формой [1,48 48,1024] и типа поплавок на / job: localhost / replica: 0 / task: 0 / Устройство: GPU: 0 by allocator gpu_0_bfc 
7  Высокая точность математика на GPU