将char **数据类型发送到设备

时间:2010-06-22 00:16:16

标签: c++ cuda gpu

我有一个字符指针数组,我想发送给设备。有人可以告诉我怎么做?

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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

要获得长度,请使用strlen()。西泽夫是无关紧要的。

永远不要复制到此字符串矩阵中,或将其作为out参数传递。 你必须为此分配内存。