Как обработать строку в ядре opencl из буфера N строк фиксированной длины?

.GroupBy(x => x.Column1 + " " + x.Column2)
0
задан pmdj 12 March 2019 в 13:24
поделиться

1 ответ

Ваш вопрос не на 100% ясен, поэтому я кратко изложу свое понимание ситуации, прежде чем ответить:

У вас есть buffer_of_strings, который содержит N строк по length_of_string байтов. Это означает, что каждая строка начинается со смещения i * length_of_string в буфере:

      +--------length_of_string--------+
      |          |          |          |
 <----+----><----+----><----+----><----+---->
"String0    String1    Str2       String3    "
 ^          ^                     ^
 |          |                     |
 0     (1 * length_of_string)     (3 * length_of_string)

Так что это приводит меня к чему-то вроде этого с простой старомодной арифметикой указателей:

__kernel void myKernel(global char *buffer_of_strings, char length_of_string, global char *output_buffer) {
     uint offset = get_global_id(0) * length_of_string;
     global char *string_input = buffer_of_strings + offset;
     Function(string_input, length_of_string, output_buffer);
}

Убедитесь, что все ваши указатели помечены соответствующей областью памяти. (global в этом случае)

0
ответ дан pmdj 12 March 2019 в 13:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: