C++ 如何将字符串传递到GPU,并从内核获取字符串以显示它?(C+;+;OpenCL)
我想传递一个字符串到我的GPU,并从GPU获取它来打印它。这是为了理解——我知道,这个想法听起来毫无意义 我试过: OpenCL:C++ 如何将字符串传递到GPU,并从内核获取字符串以显示它?(C+;+;OpenCL),c++,opencl,C++,Opencl,我想传递一个字符串到我的GPU,并从GPU获取它来打印它。这是为了理解——我知道,这个想法听起来毫无意义 我试过: OpenCL: __kernel void same_in_same_out_char(__global uchar * out, __constant uchar * in){ for (unsigned int ui=0; ui<3; ui++) out[ui]=in[ui]; } \uuuuu内核void same\u in\u same\u out\u char
__kernel void same_in_same_out_char(__global uchar * out, __constant uchar * in){
for (unsigned int ui=0; ui<3; ui++) out[ui]=in[ui];
}
\uuuuu内核void same\u in\u same\u out\u char(\uuuu全局uchar*out,\uuuuu常量uchar*in){
对于(unsigned int ui=0;ui来说,如果事实给了您期望的答案,但您将其放在了错误的数据类型中,则是这样
您得到的是单个整数5783885
,即0x0058414D
(十六进制)。您位于一个小的endian平台上,因此这些字节在内存中从低阶到高阶排列,即,如果查看内存,字节将是(仍为十六进制):
以十进制显示的这些将是:
77, 65, 88, 0, ...
换句话说,这正是你所期望的
你的问题(至少是你的一个问题)是你把out\u global
声明为cl\u uint
s的数组,而不是cl\u uchar
或cl\u char
之类的东西
所以,改变下面这句话,你可能会没事的
cl_uint out_global[bufferC_size];
77, 65, 88, 0, ...
cl_uint out_global[bufferC_size];