0

这是一个非常笼统的问题,如果有人对此有任何经验,那就太好了。

每次(在内核中)我都想在 while 循环中使用线程,例如:

tidx = threadIdx.x + blockIdx.x * blockDim.x;
tidy = threadIdx.y + blockIdx.y * blockDim.y;

while(i<70) {
    if (tidx<640 && tidy<480){
        //calculations to get a desired array
    }
}

我的程序冻结。

我尝试了几件事,例如更改 while to for 但似乎没有任何效果。

我开始认为不可能使用这样的线程。这是真的吗?如果不是,先决条件是什么?先感谢您。

4

1 回答 1

2

所有版本的 CUDA 和所有 CUDA 设备都应该能够执行循环。确保您没有编写无限循环,否则计算时间只需要很长时间。

于 2013-01-10T15:20:52.363 回答