4

を使用して、GPUにいくつかのfloat配列(かなり大きい、つまり9,000,000要素)を割り当てていますcudaMalloc((void**)&(storage->data), size * sizeof(float))。プログラムの最後に、を使用してこのメ​​モリを解放しますcudaFree(storage->data);

問題は、最初の割り当て解除が非常に遅く、約10秒であるのに対し、他の割り当て解除はほぼ瞬時に行われることです。

私の質問は次のとおりです:この違いを引き起こす可能性があるのは何ですか?GPUの割り当て解除メモリは通常それほど遅いですか?

4

2 に答える 2

3

NVIDIAフォーラムで指摘されているように、cudaFreeではなく、タイミングの調整方法に問題があることはほぼ間違いありません。

于 2010-01-29T13:16:57.867 に答える
1

それほど遅くないはずです。cuda2.2を搭載したLinuxでは、ほんの一瞬です。ホストとデバイスのプロファイラーを実行して、なぜ遅いのかを正確に確認しようとしましたか?いくつの個別の割り当てを実行しますか?これにはいくらかのペナルティがありますが、それほど大きくはありません。

于 2010-01-28T23:22:05.183 に答える