为什么这个cuda程序会冻结我的显示?

时间:2015-08-07 12:55:02

标签: c++ cuda nvidia

我是CUDA的新手,我只是想制作一个利用了很多GPU的程序。唯一的问题是我也在使用该卡进行显示,这冻结了我的屏幕并要求我重新启动。

__global__ void cuda_burn(int* sum)
{
    int x = 0;
    for(int i = 0; i < 1000000000; i++)
    {
        x += i;
    }
    atomicAdd(sum, x);
}

我最初像cuda_burn<<<1024, 1024>>>(sum_d);一样启动了它,它杀死了我的显示器。这对我来说很有意义,因为我有足够的块和线程来充分利用我的gpu,没有时间用于图形。

接下来我尝试像这样cuda_burn<<<1, 1024>>>(sum_d);启动它我认为因为我只使用一个块,所以它无法充分利用GPU资源而不会冻结我的显示器。不幸的是它仍然存在。为什么呢?

还有什么奇怪的是鼠标不会冻结?

还有一种更好的解冻显示方式而不是重启吗?

1 个答案:

答案 0 :(得分:4)

目前,CUDA和显示任务无法同时运行。在CUDA内核运行时,无论使用GPU多少或多少,显示任务都将被“冻结”。