次の問題が発生しました。を使用して cuda アプリケーションのgst_efficiency
とを測定したい。cuda 5.0 で配布されたドキュメントには、コンピューティング機能 2.0 ~ 3.0 を備えたデバイスに対して次の式を使用してこれらを生成するように指示されています。gld_efficiency
nvprof
gld_efficiency = 100 * gld_requested_throughput / gld_throughput
gst_efficiency = 100 * gst_requested_throughput / gst_throughput
必要なメトリックについては、次の式が提供されます。
gld_throughput = ((128 * global_load_hit) + (l2_subp0_read_requests + l2_subp1_read_requests) * 32 - (l1_local_ld_miss * 128)) / gputime
gst_throughput = (l2_subp0_write_requests + l2_subp1_write_requests) * 32 - (l1_local_ld_miss * 128)) / gputime
gld_requested_throughput = (gld_inst_8bit + 2 * gld_inst_16bit + 4 * gld_inst_32bit + 8
* gld_inst_64bit + 16 * gld_inst_128bit) / gputime
gst_requested_throughput = (gst_inst_8bit + 2 * gst_inst_16bit + 4 * gst_inst_32bit + 8
* gst_inst_64bit + 16 * gst_inst_128bit) / gputime
使用されるメトリクスの数式が指定されていないため、これらは nvprof でカウントできるイベントであると想定しています。しかし、一部のイベントは私の gtx 460 では利用できないようです (gtx 560 Ti も試しました)。の出力を貼り付けましたnvprof --query-events
。
何が間違っているのか、または私が誤解しているものはありますか?
編集:
さまざまなパラメーターについてアプリケーションを分析しようとしているため、CUDA Visual Profiler を使用したくありません。nvprof
したがって、複数のパラメーター構成を使用して実行し、複数のイベント (それぞれを 1 回の実行で) を記録してから、データをテーブルに出力したいと考えています。これはすでに自動化されており、他のメトリック (つまり、発行された命令) で機能しており、ロードとストアの効率のためにこれを実行したいと考えています。これが、私が を含むソリューションに興味がない理由ですnvvp
。ちなみに、私のアプリケーションnvvp
はストア効率に必要なメトリックを計算できないため、この場合はまったく役に立ちません。