C++ 如何将字符串传递到GPU,并从内核获取字符串以显示它?(C+;+;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

我想传递一个字符串到我的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(\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];