Что должно заменить «memcpy» внутри ядер OpenCL?

#opencl #c99 #memcpy

#opencl #c99 #memcpy

Вопрос:

Язык OpenCL, который расширяет C99, не предоставляет функцию memcpy. Что следует использовать вместо этого?

Ответ №1:

Насколько я знаю, в OpenCL нет ничего подобного, определенного. OpenCL не предоставляет такой концепции, как динамическая память, и, следовательно, такая функциональность не нужна.

Вы могли бы просто запустить свой массив с помощью for и скопировать данные поэлементно. Но целевой массив имеет фиксированный размер из-за необходимости указывать длину массива во время компиляции.

С другой стороны, OpenCL (и OpenGL как своего рода источник) был определен более статичным способом. Данные должны быть предоставлены графическому процессору и размер результата должен быть определен. Графический процессор вычисляет входные данные в предварительно определенном местоположении вывода. Это не предназначено для создания большего количества процессов в графическом процессоре, а также не предназначено для динамического выделения памяти, чтобы не беспокоить хост, выполняющий это.