這是此帖子中所選答案的後續問題: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