opengl 了解循环级并行性

6yoyoihd  于 2023-04-20  发布在  其他
关注(0)|答案(1)|浏览(160)

我只是偶然发现了“循环级并行”这个术语,并试图理解它。
比如说,我有一个算法,它计算出一些近似值,每次迭代都会变得更好。如果我写这样的代码,编译器就不知道迭代的次数,因此这个循环会“慢”:

while (ErrTol_not_met)
{
    // Do iteration step
}

如果我这样写代码,会更快吗?

for (int n = 0; n < N; n++)
{
    // Do iteration step
}

当然,第一个循环总是满足误差容限,而第二个循环,取决于N,可能有时满足容限,有时做不必要的计算,我只是想从原理上理解这一点。
我对“循环级并行”的理解是否正确?有什么特别的地方需要知道吗?OpenGL是如何处理的?如果我重写一些循环,会有什么样的加速?在什么情况下/什么样的循环会有相关性?

xyhw6mcr

xyhw6mcr1#

主要区别在于,如果N是统一值或在编译时已知,则for循环可以由编译器展开。

相关问题