clCreateImage2D (..., void * hst_ptr,..) как его использовать?

122
6

Я читал официальное определение на официальном сайте, но все же я не понимаю: для чего используется void * hst-ptr? Например, здесь. Почему буфер здесь настолько полезен, почему буфер - это указатель на символ, а размер - 4 * ширина * высота

спросил(а) 2021-01-19T15:11:23+03:00 2 месяца, 3 недели назад
1
Решение
62

host_ptr используется, когда host_ptr один из флагов CL_MEM_USE_HOST_PTR или CL_MEM_COPY_HOST_PTR. В этих случаях host_ptr указывает на память ЦП, содержащую изображение для использования или копирования.

В примере кода, к CL_MEM_COPY_HOST_PTR, buffer - это изображение на стороне хоста (ЦП), которое копируется на образ устройства (тип GPU). (Поскольку они используют флаг CL_MEM_COPY_HOST_PTR).

Не важно, что они сделали его указателем на char, поскольку они используют memcpy для его заполнения, но он помогает распределению с использованием new char поскольку char имеет размер 1 байт.

4 * width * height - это потому, что это общее количество байтов (символов).

4 - размер одного CL_RGBA CL_UNORM_INT8 пикселя (R, G, B, A - каждый один байт). width * height т.к. это общий кол-во пикселей.

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

ответил(а) 2021-01-19T15:11:23+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема