Что должно заменить «memcpy» в ядрах OpenCL? - PullRequest
9 голосов
/ 13 апреля 2011

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

1 Ответ

4 голосов
/ 20 апреля 2011

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

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

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

...