【发布时间】:2012-07-26 18:36:19
【问题描述】:
在 CUDA 4.x 上第一次调用 cudaMalloc 已经不是什么秘密了
速度可能慢得离谱(被报告了好几次),这似乎是 CUDA 驱动程序中的一个错误。
最近,我注意到奇怪的行为:cudaMalloc 的运行时间
直接取决于我链接到我的程序的第 3 方 CUDA 库的数量
(请注意,我不使用这些库,只需将我的程序与它们链接)
我使用以下程序运行了一些测试:
int main() {
cudaSetDevice(0);
unsigned int *ptr = 0;
cudaMalloc((void **)&ptr, 2000000 * sizeof(unsigned int));
cudaFree(ptr);
return 1;
}
结果如下:
链接:-lcudart -lnpp -lcufft -lcublas -lcusparse -lcurand 运行时间:5.852449
链接:-lcudart -lnpp -lcufft -lcublas 运行时间:1.425120
关联:-lcudart -lnpp -lcufft 运行时间:0.905424
关联:-lcudart 运行时间:0.394558
根据'gdb',时间确实进入了我的cudaMalloc,所以它不是由一些引起的 库初始化例程..
我想知道是否有人对此有合理的解释?
【问题讨论】: