这是此帖子中所选答案的后续问题:Output of cuda program is not what was expected。Cuda char *变量赋值
虽然下面的功能原理:
__global__ void setVal(char **word)
{
char *myWord = word[(blockIdx.y * gridDim.x) + blockIdx.x];
myWord[0] = 'H';
myWord[1] = 'e';
myWord[2] = 'l';
myWord[3] = 'l';
myWord[4] = 'o';
}
为什么不这项工作?
__global__ void setVal(char **word)
{
char *myWord = word[(blockIdx.y * gridDim.x) + blockIdx.x];
myWord = "Hello\0";
}
那么,我如何设置一个词的一个particualr索引到一个字符串。假设我要将word [0]设置为“hello” – Programmer
将源字符串中的值复制到目标字符串,就像您发布的第一个内核版本 - 即。编写你自己的strcpy实现。请注意,GPU硬件在处理32位类型时比8位类型好得多,所以考虑使用char4向量类型而不是char来使其工作。 – talonmies