【发布时间】:2013-02-28 14:54:53
【问题描述】:
我发现this 的帖子非常有用,我想澄清一下关于编译器优化的一些事情。假设我们有这个功能(和原来的帖子一样):
template<int action>
__global__ void kernel()
{
switch(action) {
case 1:
// First code
break;
case 2:
// Second code
break;
}
}
即使我在编译时调用模板变量未知的函数,编译器是否会在消除无法访问的代码的意义上进行优化——比如创建两个单独的函数?例如:
kernel<argv[1][0]>();
【问题讨论】:
-
那是行不通的。根据定义,模板参数值必须在编译时知道。