1

例えば

int *p;
cudaMalloc(&p, sizeof(int));

約20秒かかり、私のプロセスは通常、タスクマネージャーでのメモリ使用量が650MB以上になります(ただし、常にわずかに異なる量です). GPU-Zは、GPU の専用メモリ使用量が 200MB 以上増加していることも示しています。

  • への最初の呼び出しでのみ発生しますcudaMalloc
  • その前に他の CUDA 関数を呼び出しても問題ありません。cudaGetDevice
  • 他の CUDA プロジェクトでは発生しない

私は使っている

  • Thrust、CUBLAS、cuRAND ライブラリ
  • NVCC を使用した MSVC 2010
  • Nsight 3.0
  • CUDA5.0

なぜこれが起こるのですか?何ができるでしょうか?

更新: 以下のコメントで述べたように、これは初期化に起因するようです (呼び出しcudaFree(0)も同じ効果があります)。ただし、なぜこれほど遅いのかについては、おそらく実行時エラーに関係している可能性があります。初期化行がヒットすると、次のエラーが 30 回発生します。

First-chance exception at 0x74f0b727 in ...: Microsoft C++ exception: cudaError_enum at memory location 0x003ff9c4..
First-chance exception at 0x74f0b727 in ...: Microsoft C++ exception: cudaError_enum at memory location 0x003ff9c4..
First-chance exception at 0x74f0b727 in ...: Microsoft C++ exception: cudaError_enum at memory location 0x003ff9c4..
etc...

これは、孤独な呼び出しのように、何も割り当てていないときにも発生しますcudaFree(0);-理由はわかりません...

4

0 に答える 0