Я хочу скопировать некоторые данные из буфера в глобальной памяти устройства в локальную память процессорного ядра, но с изюминкой.
Я знаю о async_work_group_copy, и это красиво (точнее, неуклюже и раздражающе, но работает). Однако мои данные не являются непрерывными - они разделены, то есть между каждыми двумя последовательными байтами Y, которые я хочу скопировать, может быть X байтов.
Очевидно, что я не собираюсь копировать все бесполезные данные - и они могут даже не поместиться в моей локальной памяти. Что я могу сделать вместо этого? Я хочу избежать написания фактического кода ядра для копирования, например.
threadId = get_local_id(0);
if (threadId < length) {
unsigned offset = threadId * stride;
localData[threadId] = globalData[offset];
}