多GPU内存分配在不同的分配顺序下表现不同

时间:2013-06-13 04:49:05

标签: cuda multi-gpu

我在Windows 7 x64,Visual C ++ 10上使用4 GB RAM在GTX 690 GPU上进行了测试:

我想在两台设备上分配1.2 GB RAM。如果我从第一个设备获得ram然后从第二个设备获得ram,它将失败并返回Memory Allocation错误,但是当我第一次从设备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 ) ) ; 

贝斯茨, 拉敏

P.S。 CudaCheck函数只检查输出结果。

1 个答案:

答案 0 :(得分:1)

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