【发布时间】:2013-12-06 04:10:35
【问题描述】:
我正在使用 nvidia 的 unroll loops 指令,但还没有看到有选择地打开它的方法。
假设我有这个......
void testUnroll()
{
#pragma optionNV(unroll all)
for (...)
...
}
void testNoUnroll()
{
for (...)
...
}
在这里,我假设两个循环最终都被展开。为了阻止这种情况,我认为解决方案将涉及在我想要影响的块之后重置指令,例如:
#pragma optionNV(unroll all)
for (...)
...
#pragma optionNV(unroll default) //??
但是我不知道将展开行为重置为初始/默认设置的关键字。 如何做到这一点?如果有人还可以指出一些有关 nvidia 编译器指令的官方文档,那就更好了。
目前,似乎只使用了程序中找到的最后一个#pragma optionNV(unroll *) 指令(例如,在最后一行抛出一个,它会覆盖它上面的所有内容)。
【问题讨论】: