sma*_*ato 11 loops cuda unroll
我有以下代码使用循环展开:
#pragma unroll
for (int i=0;i<n;i++)
{
....
}
Run Code Online (Sandbox Code Playgroud)
这里如果n是一个定义的常量,一切正常.但是,如果n是变量,则性能会大幅降低.我注意到发出并执行了大约3次指令.我想我正在寻找一种在运行时进行循环展开的方法,可能这是不可行的.
tal*_*ies 19
CUDA是一种编译语言.循环展开是编译器优化.运行时循环展开意味着某种运行时解释器或动态代码生成.这显然不可能发生.
因为编译器将用循环内容的重复替换循环,所以展开的情况执行与初始循环一样多或更多的指令是有意义的.如果展开的情况执行较少的指令,则意味着编译器预先计算部分或全部循环内容并用常量结果替换代码.
这一切都取决于循环中包含的内容.
| 归档时间: |
|
| 查看次数: |
8648 次 |
| 最近记录: |