0

こんにちは私はCAPSOpenACCコンパイラを使用していましたが、予備的なプロファイル結果を取得しようとすると、何か問題が発生します。

最初に、HMPPRT_LOG_LEVEL = "info"を宣言してコードを実行しました。これにより、タイムスタンプ付きのプロファイル結果が生成されます。

[     2.612337] ( 0) INFO : Upload   edgelengths[0:129600] (element_size=8, queue=none, location=gravity_openacc.c:50)
[     2.613485] ( 0) INFO : Call     __hmpp_acc_region__2ha750yb (queue=none, location=gravity_openacc.c:50)
[     2.614367] ( 0) INFO : Free     edgelengths[0:129600] (element_size=8, queue=none, location=gravity_openacc.c:50)

したがって、カーネルの実行時間は2.614367-2.613485=0.000882秒として計算されると思います。

しかし、CUDA_PROFILE = 1を宣言すると、以下のプロファイルが表示されます

method=[ __hmpp_acc_region__2ha750yb_parallel_region_1 ] gputime=[ 492.480 ] cputime=[ 13.000 ] occupancy=[ 0.250 ] 

だから私はこれらの2つの結果についてかなり混乱しています、それは本当ですか?

誰かがいくつかの解決策を手に入れますか?

ありがとう!

4

1 に答える 1

0

CUDAプロファイラーは、CUDAカーネルの実行にかかる時間だけを示しますが、HMPPRT_LOG_LEVEL = "info"で取得したログは、リージョンの実行にかかる全体の時間を示します。これは、まったく同じではありません。たとえば、ホスト上で実行されるコードがあります。

于 2013-03-20T16:13:18.590 に答える