OpenCL Buffer - это 1D, 2D или 3D массив в глобальной памяти.Это абстрактный объект, к которому можно обратиться через указатель.Буферы только для чтения или только для записи или только для чтения и записи.Буфер изображения представляет текстурную память графического процессора.Он представляет собой массив пикселей, доступ к которому можно получить через функции, определяющие координаты x, y, z пикселей.Нет доступа указателя к пикселям изображения на графическом процессоре.
Аппаратное обеспечение по-разному относится к этим двум типам буферов.Буфер OpenCL находится либо в ОЗУ хоста, либо в ОЗУ графического процессора и передается между ними.Буфер изображений OpenCL имеет аналогичные характеристики буфера OpenCL.Но различия в том, что Image Buffer доступен только для чтения или только для записи.Для буферов изображений, доступных только для чтения, графический процессор может кэшировать копии пикселей изображения в каждой вычислительной единице (= 32 или 64 ALU).Типичный размер кэша составляет 8 КБ (байтов или пикселей?).Кроме того, поскольку пиксели изображения не могут быть доступны через указатель на графическом процессоре.Их отображение из координат x, y, z в физический адрес может быть отображено несколькими способами.Одним из способов является Z-порядок.Это кластеризует пиксели в двух измерениях, так что соседние пиксели в направлениях x, y сохраняются линейно.Это помогает ускорить доступ к соседним пикселям в фильтрах изображений.
Буферы OpenCL используются для общих массивов и особенно для массивов с возможностью чтения-записи или двойной точности.OpenCL Image Buffers используются для обработки изображений или других алгоритмов обработки сигналов, где входное изображение / сигнал может обрабатываться только для чтения.