0

我已经在 Windows 7 x64、Visual C++ 10 和 4 GB RAM 的 GTX 690 GPU 上对此进行了测试:

我想在两台设备上分别分配 1.2 GB RAM。如果我从第一个设备然后第二个设备获取 ram,它会失败并返回内存分配错误,但是当我首先从设备 1 和设备 0 获取它时,它没有问题。谁能告诉我为什么?

此代码失败:

void    * pM1 , * pM2 ;

CudaCheck( cudaSetDevice( 0 ) ) ;
CudaCheck( cudaMalloc( & pM1 , 1200000000 ) ) ;
CudaCheck( cudaSetDevice( 1 ) ) ;
CudaCheck( cudaMalloc( & pM2 , 1200000000 ) ) ; 

此代码有效:

void    * pM1 , * pM2 ;

CudaCheck( cudaSetDevice( 1 ) ) ;
CudaCheck( cudaMalloc( & pM1 , 1200000000 ) ) ;
CudaCheck( cudaSetDevice( 0 ) ) ;
CudaCheck( cudaMalloc( & pM2 , 1200000000 ) ) ; 

最好的,拉敏

PS CudaCheck 函数只检查输出结果。

4

1 回答 1

1

问题解决了。问题是由于 SLI 处于活动状态。我禁用了它,现在它运行顺利。

于 2013-06-15T09:37:07.260 回答