これは、この投稿の選択された回答へのフォローアップの質問です: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';
}
しないのはなぜこの作品? 2番目のバージョン、myWord = "Hello\0";
で
__global__ void setVal(char **word)
{
char *myWord = word[(blockIdx.y * gridDim.x) + blockIdx.x];
myWord = "Hello\0";
}
したがって、単語の特定のインデックスを文字列に設定するにはどうすればよいですか。単語[0]を "hello"に設定したいとします。 – Programmer
投稿した最初のカーネルバージョンのように、ソース文字列の値を宛先文字列にコピーします。あなた自身のstrcpyの実装を書いてください。 GPUハードウェアは8ビットタイプよりも32ビットタイプで作業するほうがはるかに優れているので、charではなくchar4ベクトルタイプを使用して内部的に動作させることを検討してください。 – talonmies