現在、C と CUDA を使用してアプリケーションを作成しています。私はアルゴリズムを純粋な C で動作させ、それを CUDA に変換しました。
結果は問題なく、コードを最適化するプロセスに入っています。
簡単な方法を使用して、カーネルが結果を返すのにかかる時間をプロファイリングします。
clock_t start, end;
double cpu_time_used;
start = clock();
. . . my memcopies and my kernel . . .
end = clock();
cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
驚いたことに、プログラム全体を数回続けて実行すると、処理時間が劇的に短縮されます。1 回だけ実行すると、平均で約 0.9 秒になります。10 回連続で実行すると、0.1 秒まで短縮できます。
私の本当の懸念は、Visual Profiler が 15 回の実行に基づいて統計を計算しているため、最初の実行が他の 14 回の非常に高速な実行に圧倒されることです。
私のプログラムは後で時々実行されるので、最適化したいのは最初の実行時です。
したがって、私の質問は、これを解決する方法はありますか、それともどこから来たのかを知っていますか?
どうも !
編集:
ネットブックで Windows 7、CUDA 4.2 Toolkit (2.1 機能) を実行しています