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 を for に変更するなど、いくつかのことを試しましたが、何も機能しないようです。

そのようなスレッドを使用することは不可能だと思い始めています。それは本当ですか、そうでない場合、前提条件は何ですか? 前もって感謝します。

4

1 に答える 1

2

CUDA のすべてのバージョンとすべての CUDA デバイスでループを実行できる必要があります。無限ループをプログラムしていないことを確認してください。そうしないと、計算時間がリレーに長くかかるだけです。

于 2013-01-10T15:20:52.363 に答える