2

CUDA 5.0で新たに追加された動的並列処理がプログラミング パターンの再帰不規則なループ構造をサポートすることを Kepler アーキテクチャの技術概要から読みました。

しかし、不規則なループ構造とは何か誰か教えてもらえますか?

4

1 に答える 1

3

146ページのこの本によると(具体的にはカーネルの実装に対処しています)、

通常のループの反復回数は決まっていますが、不規則なループの反復回数は特定の条件によって異なります。

また、ここにいくつかの例を示します。

通常ループ

for (int i=0; i < 10; i++)
{
    //...;
}

イレギュラーループ

while (i < 0)
{
    if (con) 
       {i--;}
    else
        //...;
        i++;
}

もう一つのイレギュラーループ

while (true)
{
    if (cond1) 
        {break;}
    else
    {
        //...;
        if (cond2)
            {break;}
    }
}

明確にするために、カーネル内の不規則なループのサポートは常に存在しています。代わりに、CUDA 5.0では、動的並列処理機能を使用して、再帰的または不規則にループするアルゴリズムをより厳密に模倣する GPU コードを記述できるようになったことを示唆しています。この機能を正しく使用すると、子カーネルを起動することでワープ発散を回避するソリューションを実装できる可能性があります。

于 2013-02-28T15:01:16.593 に答える