Titan Z上的两个GPU似乎都使用相同的全局内存?

时间:2016-01-25 18:32:03

标签: c++ memory cuda

我正在开发一个使用Titan Z上的两个GPU的程序,当分配的内存总量小于6 GB(即每张卡上<3GB)时,它可以正常工作。

然而,当我使用超过6 GB时,任何CUDA启动之间都会有非常长的停顿,无论每个GPU上分配多少内存,如果组合数量大于6 GB,性能将降至零,因为摊位。

在检查cudaMemGetInfo()可用的内存量时,我发现两个GPU的数量相同。测试代码如下

for(int j=0; j<gnum; j++)
{
    cudaSetDevice(j);
    cudaMemGetInfo(&freeMemory, &totalMemory);
    printf("Device memory = %lli \n", totalMemory);
    printf("Available memory = %lli \n", freeMemory);
}
for(int i=0; i<gnum; i++)
{
    cudaSetDevice(i);
    cudaMalloc(&d[i], 1024*1024*1024);
    for(int j=0; j<gnum; j++)
    {
        cudaSetDevice(j);
        cudaMemGetInfo(&freeMemory, &totalMemory);
        printf("Device memory = %lli \n", totalMemory);
        printf("Available memory = %lli \n", freeMemory);
    }
}

我得到了

Device memory = 644250944
GPU 0 Available memory = 5272363008
Device memory = 644250944
GPU 1 Available memory = 5195358208
GPU 0 Available memory = 4121616384
GPU 1 Available memory = 4121616384
GPU 0 Available memory = 3047874560
GPU 1 Available memory = 3047874560

因此看起来两个GPU都使用相同的6GB内存而不是每个6GB内存上的一个。我正在使用Windows 8.1 64位并使用WDDM,如果这有所不同。

0 个答案:

没有答案