编程模式:什么是不规则循环?

时间:2013-02-28 12:58:31

标签: compilation cuda

我从开普勒架构技术简报中读到动态并行 CUDA 5.0 中新增的,支持递归不规则循环编程模式中的结构

但有人能告诉我不规则循环结构是什么?

1 个答案:

答案 0 :(得分:3)

根据this book on page 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代码。如果使用正确,此功能可以允许您通过启动子内核来实现避免扭曲分歧的解决方案。