例如
int *p;
cudaMalloc(&p, sizeof(int));
将花费大约20秒,我的进程通常会在任务管理器的内存使用量中获得650MB +(但总量稍微不同)。 GPU-Z也表示我的GPU上专用内存使用量增加了200MB +。
cudaMalloc
cudaGetDevice
我正在使用
为什么会这样?可以做些什么?
更新
正如下面的评论中所提到的,这似乎源于初始化(调用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);
的单独调用 - 不知道为什么......