私は 2 つのカーネルを使用してA
いB
ます。
CUDA プロファイラーを実行すると、次のような結果が返されました。
最初のカーネルには 44% のオーバーヘッドがあり、2 番目のカーネルには 20% のオーバーヘッドがあります。
ただし、次のロジックに従って実際の実行時間を調べることにした場合:
timeval tim;
gettimeofday(&tim, NULL);
double before = tim.tv_sec+(tim.tv_usec/1000000.0);
runKernel<<<...>>>(...)
gettimeofday(&tim, NULL);
double after=tim.tv_sec+(tim.tv_usec/1000000.0);
totalTime = totalTime + after - before;
はtotalTime
非常に小さく、約 0.0001 秒です。
私はCUDAが初めてで、何が起こっているのか正確にはわかりません。カーネルをより効率的にする必要がありますか、それともすでに効率的ですか?