Cuda 2d или 3d массивы - PullRequest
2 голосов
/ 09 июня 2011

Я имею дело с набором (больших 2k x 2k) изображений.
Мне нужно выполнять операции для каждого пикселя в стеке из нескольких последовательных изображений.

Есть ли мнения об использованииодна большая 2D-текстура + вычисление смещений по сравнению с использованием 3D-массивов?

Кажется, что 3D-массивы немного "вне основного потока" в API CUDA, функции переноса распределения сильно отличаются от тех же 2D-функций.

Кажется, что нет более хорошей документации по более высокому уровню "как и почему" CUDA, а не по конкретным вызовам

Существует руководство по передовым практикам но это не относится к этому

Ответы [ 2 ]

6 голосов
/ 10 июня 2011

Я бы порекомендовал вам прочитать книгу "Cuda by Example".В нем рассматриваются все эти вещи, которые также не документированы, и объясняется, «как и почему».

Я думаю, что вам следует использовать, если вы визуализируете результат ядра CUDA, чтобыиспользовать взаимодействие OpenGL.Таким образом, ваш код обрабатывает изображение в графическом процессоре и оставляет обработанные данные там, делая его намного быстрее для визуализации.В книге есть хороший пример того, как это сделать.

Если каждому потоку CUDA нужно прочитать только один пиксель из первого кадра и один пиксель из следующего кадра, вам не нужно использовать текстуры.Текстуры приносят вам пользу только в том случае, если каждая нить читает последовательность пикселей.Так что лучше всего использовать 3D-массив.

0 голосов
/ 11 мая 2015

Вот пример использования CUDA и 3D-массивов cuda: https://github.com/nvpro-samples/gl_cuda_interop_pingpong_st

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...