2

我从 Kepler 架构技术简报中了解到, CUDA 5.0中新添加的动态并行性支持编程模式中的递归不规则循环结构

但是谁能告诉我什么是不规则循环结构

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 回答