私は計算を実行したカーネルの中にI malloc
という構造体があるとします。私はこれらの変数を返すしたいですが、私はカーネルを初期化したときにポインタとして送られなかったので、もし私がこれらの値を返そうとするならば。私はどうしたらいいのですか?以下のサンプルコード。カーネルのmallocデータを効率的にCPUに戻す方法
私はこれを一般的な質問として以下のコードを解決しないように要求しています。私はこれに遭遇する他の問題を抱えており、私はそれについて何が最善の方法であるのか分からない。ポインタを投げて結果をコピーするだけでよいことを理解しています。しかし、結果のサイズがあらかじめ決められていない場合、それを効率的に行うのは非常に難しいでしょう。だから私は良い方法があるかどうか尋ねています。
__global__ void addKernel()
{
int* c = (int*)malloc(sizeof(int) * 32);
#pragma unroll
for (int i = 0; i < 32; i++){
c[i] += 1;
}
}
私はこの部分を読んだが、まだこのアイデアをあきらめる準備ができていなかった:)私はuvaを使用し、データがgpuによって操作されたかどうかを示すヘッダーを考えていた。ロケーション。それは良い考えですか?私がコードを書くことを私が望むなら、私が帰った後でそれをやります。 –
私はあなたが解決しようとしている問題についてさらにいくつかの情報を提供するべきだと思います。可変量のデータを出力するカーネルに対処するために使用できる多くの異なる戦略がありますが、通常はそれに対してデバイス側のmallocは必要ありません。 –