CUDAの特定のメモリ命令またはコードラインのメモリ帯域幅を測定する方法はありますか? (nvprofはカーネル全体のメモリ帯域幅を出力することができます)。clock()関数が唯一の方法であれば、帯域幅を計算する式は何ですか? ({命令またはコード行ごとの合体アドレスの数}をクロック()の差で割ったもの)CUDAの特定の命令またはコードラインのメモリ帯域幅を測定する方法はありますか?
特定の命令またはコード行がメモリ帯域幅を超えているかどうかを確認したいと思います。 (ex、MSHR ..)
x86_64ビットLinuxシステムにGTX980(Maxwell、sm_52)とP100(Pascal、sm_60)という2つのデバイスがあります。
これは多くの理由でこれが意味をなさないとは確信していません。恐らく最も重要なのは、LD(SASS)命令が火災と忘却の命令であるということです。つまり、LD/STユニットに発行されただけです。*その結果、メモリトランザクションが発生する可能性があります。単にLD命令の "持続時間"を測定しただけであれば、その命令をLD/STユニットに発行するのにかかる時間を測定しているだけです。これは非常に短く、正確に測定できれば数サイクルです。実際にデータを取得するのにかかる時間を表すものではありません。 –
命令やコードの行(特にLD/ST命令ではありません)のメモリ帯域幅などはありません。これは、他の命令と並行して並行して実行されます。また、@ RobertCrovellaが言ったように、 'clock()'を使うことで必要なものを手に入れることができません。おそらく、もしあなたがこの値で答えようとしている質問を説明できたら? – einpoklum