0
私は、カーネルが実行する時間を見つけるためにcudaEventメソッドを使用しています。ここには、マニュアルに記載されているコードがあります。CudaEventでのエラー記録時間
cudaEvent_t start,stop;
float time=0;
cudaEventCreate(&start);
cudaEventCreate(&stop);
cudaEventRecord(start,0);
subsampler<<<gridSize,blockSize>>>(img_redd,img_greend,img_blued,img_height,img_width,final_device_r,final_device_g,final_device_b);
cudaEventRecord(stop,0);
cudaEventSynchronize(stop);
cudaEventElapsedTime(&time,start,stop);
今、私はこれを実行すると、それは52428800.0000のようなものを(値が異なるが、この程度である).Iは、それがミリ秒である知っているが、それでも、これは膨大な数の場合は特に、このプログラムで来て時間を確認しようとすると、実行が1分以上かかるわけではありません。誰かがこれがなぜ起こっているのかを指摘することができます。カーネルが実行するのにどれくらいの時間がかかります。
プログラムを終了する前にrep.IのcudaGetLastError()関数を呼び出すと "エラーなし"というメッセージが表示されます。イメージを書き込んでいて、正しく表示されるため、コードは大丈夫です。私は午前ただ、実行するのに1分もかからないプログラムのためになぜそのような大きな数字が現れるのだろうと驚いただけです。 – Manish
あなたはどのプラットフォームを使用していますか(OSとビット数、CUDAバージョン)?ホストとデバイスの両方が同じビット数でコンパイルされていることを確認します。つまり、64ビットホスト用にコンパイルする場合は、nvccコマンドラインに '-m64'があることを確認してください。 – Tom