Вопрос о синтаксисе использования константного кэша - PullRequest
1 голос
/ 04 ноября 2010

Привет всем, в руководствах от Nvidia я не особо разбирался в синтаксисе распределения переменных __constant в OpenCL.

Когда я вызываю clCreateBuffer, должен ли я присвоить ему флаг CL_MEM_READ_ONLY. Кажется, я не против, чтобы я сейчас установил для него CL_MEM_READ_WRITE, хотя держу пари, что попытка записи в постоянный кеш в ядре что-то напортачит

Есть ли какие-нибудь ошибки или специальные вещи, которые мне нужно помнить, чтобы делать на стороне хоста? Если я объявлю аргумент как __constant в коде ядра устройства, то хорошо ли мне использовать постоянную переменную кэша, если я не пишу в нее?

1 Ответ

2 голосов
/ 11 ноября 2010

Да, вот и все.Однако следует помнить, что размер константного кэша ограничен 64 КБ.Так как адресное пространство __constant изначально доступно только для чтения, компилятор должен пожаловаться, если вы попытаетесь записать в него.

К сожалению, постоянная память __constant немного глючит в реализации NVidia.Изредка компилятор выдаст неправильный код, считывания из постоянной памяти просто возвращают ноль.Начиная с серии драйверов 260.x проблема не устранена.

...