Можно ли использовать текстурную память CUDA для 32-байтовых элементов? - PullRequest
1 голос
/ 31 августа 2011

Интересно, можно ли использовать текстурную память для структуры 32 байта?

Некоторые друзья сказали мне, что самый большой элемент - это uint4, то есть 16 байтов.

Не могли бы вы дать мне совет?

Ответы [ 2 ]

4 голосов
/ 01 сентября 2011

См. Раздел 3.2.10.1.1 Руководства по программированию CUDA C :

DataType указывает тип данных, возвращаемых при извлечении текстуры;Тип ограничен базовыми целочисленными типами и типами с плавающей запятой одинарной точности, а также любым из 1-, 2- и 4-компонентных векторных типов, определенных в разделе B.3.1;

Другими словами: нет , вы не можете использовать его для 32 байтов, так как самый большой из определенных векторных типов составляет 16 байтов.Также обратите внимание, что вы не можете использовать произвольные структуры, текстуры работают только с ограниченным набором типов.

1 голос
/ 27 февраля 2014

В последней версии Руководства по программированию CUDA C , раздел 3.2.11.1, написано:

Тип текселя, который ограничен базовыми целочисленными типами и типами с плавающей запятой одинарной точности и любым из 1-, 2- и 4-компонентных векторных типов, определенных в char, short, int, long, longlong, float, double, полученные из базовых целочисленных типов и типов с плавающей запятой одинарной точности.

А затем ссылки на раздел B.3.1, который явно описывает структуры, такие как long4, который в моей платформе (x86_64) имеет размер 4 * 8 байт, так что, возможно, вы могли бы использовать его в конце концов, если хотите выполнять небезопасные преобразования от вашей структуры к этим структурам. Однако, почему вы хотите это сделать?

Обновление: только что понял, что этому вопросу более двух лет, позор мне.

...