0

我有一个要发送到设备的字符指针数组。有人可以告诉我怎么做吗?

这是我到目前为止所尝试的:

char **a;
char **b;
*a[0]="Foo1";
*a[1]=="Foo2";

cudaMalloc(void**)?,sizeof(?);
cudamemcpy(b,a,sizeof(?),cudaMemcpyHostToDevice);

如何将参数传递给上述两个函数?最后应该如何调用内核?(我只是通过 b 或 *b 还是什么?)

4

2 回答 2

2

如果您将字符指针发送到设备,您将在设备上拥有一个 CPU 内存地址数组,这可能不是您想要的。

如果您想将整个数据结构发送到那里,请sizeof(char) * string_length为每个字符串分配字节,然后将生成的设备指针存储在 s 的 CPU 数组中char*。然后,一旦完成,将设备指针数组发送到设备,sizeof(char*) * number_of_strings为其分配字节。

当你调用内核时,给它设备端的设备指针数组。

于 2010-07-27T04:54:33.733 回答
0

分配,使用array[0] = "string literal" 不需要星星。

要获取长度,请使用 strlen()。siezeof 无关紧要。

切勿复制到此字符串矩阵中,或将其作为输出参数传递。你必须为此分配内存。

于 2010-06-22T08:02:55.877 回答