Правильный способ информировать ядра OpenCL о многих объектах памяти?

В моей программе OpenCL я собираюсь получить более 60 глобальных буферов памяти, к которым каждое ядро ​​должно иметь доступ. Каков рекомендуемый способ сообщить каждому ядру расположение каждого из этих буферов?

Сами буферы стабильны на протяжении всего жизненного цикла приложения, то есть мы выделяем буферы при запуске приложения, вызываем несколько ядер, а затем освобождаем буферы только в конце приложения. Однако их содержимое может изменяться по мере того, как ядро ​​читает/записывает их.

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

Как лучше всего это сделать в OpenCL? Кажется, что глобальные переменные CL немного отличаются от CUDA, но я не могу найти четкого ответа, будет ли работать мой метод CUDA, и если да, то как передать указатели буфера в глобальные переменные.Если это не сработает, что лучше сделать в противном случае?

7
задан int3h 16 June 2012 в 11:28
поделиться