gpt4 book ai didi

loops - 如果行程计数不是恒定的,为什么#pragma-unrolled循环的性能会降低?

转载 作者:行者123 更新时间:2023-12-04 01:47:50 24 4
gpt4 key购买 nike

我有以下使用循环展开的代码:

#pragma unroll
for (int i=0;i<n;i++)
{
....
}

如果n是定义的常数,则一切正常。但是,如果n是变量,则性能会大大降低。我注意到大约发出了3次指令。我想我正在寻找一种在运行时进行循环展开的方法,可能那是不可行的。

最佳答案

CUDA是一种编译语言。循环展开是编译器的优化。运行时循环展开将意味着某种类型的运行时解释器或动态代码生成。那显然是不可能的。

展开案例比幼稚的循环执行更多或更多的指令是有道理的,因为编译器将用循环内容的重复替换循环。如果展开的情况执行的指令较少,则意味着编译器正在预先计算部分或全部循环内容,并用恒定的结果替换代码。

这完全取决于循环中包含的内容。

关于loops - 如果行程计数不是恒定的,为什么#pragma-unrolled循环的性能会降低?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5495634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com