0

デバイスに送信したい文字ポインタの配列があります。誰か教えてくれませんか?

これが私がこれまでに試したことです:

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

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

上記の 2 つの関数にパラメーターを渡すにはどうすればよいですか? 最後に、カーネルをどのように呼び出す必要がありますか? (単に 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 に答える