我刚接触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资源,也不会冻结我的显示器。不幸的是它仍然冻结了。为什么?另外奇怪的是鼠标没有冻结?
此外,有比重新启动更好的解决方法吗?