OpenCL Texture Memory - PullRequest
       37

OpenCL Texture Memory

2 голосов
/ 24 декабря 2009

Я довольно новичок в OpenCL, поэтому, пожалуйста, потерпите меня.

На первой итерации моего кода я использовал базовые буферы памяти для больших наборов данных и объявил их глобальными. Однако теперь, когда я хочу улучшить синхронизацию, я хотел использовать для этого текстурную память. В версии CUDA мы используем cudaBindTexture и tex1Dfetch для получения данных для большого одномерного массива с плавающей точкой. Из моего понимания спецификации память текстур - это то же самое, что память изображений. Однако, поскольку есть только 2D и 3D объекты изображения с максимальной высотой и шириной, я столкнулся с некоторыми проблемами. Мой массив больше максимальной высоты / ширины, но не максимальной высоты * максимальной ширины. Должен ли я конвертировать мой 1D массив в 2D? Или есть лучший способ сделать это?

Или я полностью выключен?

Я прочитал http://forums.nvidia.com/index.php?showtopic=151743 и http://forums.nvidia.com/index.php?showtopic=150454, но они не совсем точно определили, была ли память текстур, упомянутая в Руководстве по наилучшим практикам и программированию, фактически объектами изображения.

Спасибо и любая помощь / предложения приветствуются!

Ответы [ 3 ]

3 голосов
/ 31 декабря 2009

Я нашел лучший ответ как ответ на мой пост на форуме NVidia здесь .

1 голос
/ 31 января 2014

OpenCL 1.2 поддерживает 1D текстуры. Проблема в том, что NVIDIA поддерживает только OpenCL 1.1 в отличие от AMD или Intel ...

1 голос
/ 30 декабря 2009

Мой массив больше максимальной высоты / ширины, но не максимальной высоты * максимальной ширины. Должен ли я конвертировать мой 1D массив в 2D?

Да, текстурное оборудование имеет ограничения на максимальные значения индекса. Если вы превысите эти значения, вам нужно будет использовать несколько значений индекса.

Тем не менее, я не имею в виду, что преобразование в доступ к текстурам ускорит вашу программу.

...