0

gst_inst_128bit 命令を試してみたい。同じプログラムで、nvvp は多くの gst_inst_128bit コマンドを実行します。nsight のプロファイラでは、4 回の gst_inst_32bit 命令が取得されます。それらは同じプログラムである必要があります。この状況はどのように発生する可能性がありますか?

実験は、Linux、CUDA 5.0、GTX 580 で試行されました。プログラムは、カーネル関数で 1 つの配列から別の配列にデータをコピーするだけです。

cudaMalloc((void**)&dev_a, NUM * sizeof(float));
cudaMalloc((void**)&dev_b, NUM * sizeof(float));
kernel<<<grid,block>>>((uint4 *)dev_a, (uint4 *)dev_b);

カーネル:

__global__ void kernel(uint4 *a, uint4 *b){
        unsigned int id = blockIdx.x * THREAD_NUM + threadIdx.x;
        for(unsigned int i = 0;i < LOOP/4;i++){
                b[id + i * GRID_NUM * THREAD_NUM] = a[id + i * GRID_NUM * THREAD_NUM];
        }
        return;
4

1 に答える 1

1

Nsight EE の Profiler と Linux のスタンドアロン Visual Profiler は、同じコードベースに基づいています。確認してください:

  1. 同じ実行可能ファイルを使用しています。
  2. 環境変数の値 (LD_LIIBRARY_PATH など) に違いはありません。

Nsight EE の起動 UI は少し混乱する可能性があることに注意してください。デバッグ ビルドのデバッグ後に [プロファイル] をクリックすると、デバッグ実行可能ファイルのプロファイリングが実際に実行され、セットアップ可能なすべてのカスタム起動設定 (コマンド ライン引数、作業フォルダーなど) を保持しようとします。メイン メニューから [ Run ] -> [ Profile Configurations... ] をクリックして、アプリケーションのプロファイリング時に Nsight が使用する設定を確認します。

于 2013-01-11T17:21:47.513 に答える