1

我正在尝试分配一个向量(字符串数组)来存储 2 个或更多字符(字节),但 OpenCL 内核的编译器(clang)kernel parameter cannot be declared as a pointer to a pointer在声明 char**compressedBytes 数组时抛出以下错误

内核: 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 unsigned char**compressedBytes, __global unsigned long* arrayCountCompressedBytes) ^

C:\Users\PONTIA~1\AppData\Local\Temp\OCL4936T1.cl:40:16:警告:不兼容的整数到指针转换初始化 'const __generic char ' 使用类型为 'int' 的表达式 const char str=fileBytes[ i] + 文件字节[i+1]; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

C:\Users\PONTIA~1\AppData\Local\Temp\OCL4936T1.cl:41:9: 警告:不兼容的指针类型将 '__global unsigned char *__generic *' 传递给 'const __global char *__generic *' 类型的参数(compressedBytes,size,str,found); ^~~~~~~~~~~~~~~

C:\Users\PONTIA~1\AppData\Local\Temp\OCL4936T1.cl:10:33:注意:在此处将参数传递给参数“开始” void Find(__global const char** begin,unsigned long length, const char* val,int 找到)^

C:\Users\PONTIA~1\AppData\Local\Temp\OCL4936T1.cl:45:23: 错误:将 'const __generic char *' 分配给 '__global unsigned char *__generic' 更改指针压缩字节的地址空间 [i]=字符串;^~~~

4

1 回答 1

0

OpenCL 不支持指向内核内部随机内存的指针。所以没有指针的指针,所有你有 cl_buffers 形式的线性内存块 – Quimby

于 2020-06-21T15:52:34.360 回答