Как я мог использовать векторбуфер на ядре opencl c или установить SVM с этим вектором? - PullRequest
1 голос
/ 23 июня 2019

Я пытаюсь выделить вектор (массив строк) для хранения 2 или более символов (байтов), но компилятор ядра OpenCL (clang) выдает следующую ошибку kernel parameter cannot be declared as a pointer to a pointer при объявлении массива char ** сжатых байтов

ядро: https://gist.github.com/PontiacGTX/0f0897ac1eaf93cb04a5c1e3c205dc4b

хост: https://gist.github.com/PontiacGTX/745b4942acab0c7213dee1fede6a8e35

ошибки компилятора ядра:

Ошибка создания ядра 1

C: \Users \ PONTIA ~ 1 \ AppData \ Local \ Temp \ OCL4936T1.cl: 31: 111: ошибка: параметр ядра не может быть объявлен как указатель на указатель __kernel void CopyBytes (__ global unsigned char const * fileBytes, unsigned long length, __ global unsignedchar ** compressBytes, __global unsigned long * arrayCountCompressedBytes) ^

C: \ Users \ PONTIA ~ 1 \ AppData \ Local \ Temp \ OCL4936T1.cl: 40: 16: предупреждение: несовместимое целое число для инициализации преобразования указателя, инициализирующего 'const __genic char 'с выражением типа int const char str = fileBytes [i] + fileBytes [i + 1];^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

C: \ Users \ PONTIA ~ 1 \ AppData \ Local \ Temp\ OCL4936T1.cl: 41: 9: предупреждение: несовместимые типы указателей, передающие '__global unsigned char * __ generic *' параметру типа 'const __global char * __ generic *' Find (сжатый размер, размер, найденная строка);^ ~~~~~~~~~~~~~~

C: \ Users \ PONTIA ~ 1 \ AppData \ Local \ Temp \ OCL4936T1.cl: 10: 33: примечание: передача аргумента параметру'begin' здесь void Find (__ global const char ** begin, unsigned long length, const char * val, int found) ^

C: \ Users \ PONTIA ~ 1 \ AppData \ Local \ Temp \ OCL4936T1.cl: 45: 23: ошибка: присвоение 'const __generic char *' для '__global unsigned char * __ generic' изменяет адресное пространство указателя сжатых байтов [i] = str;^ ~~~

...