CUDA核函数的设计

请教一个核函数的问题:

在核函数中,是否可以使用goto语句?

比如下面的情况:

global void Kernel( )
{
// 语句1

if ( 判断条件 )
goto HERE;

// 语句2

HERE: ;

// 语句3
}

上述代码中:语句2部分,只有当满足一定条件时,才执行,可否利用goto语句这样实现?

楼主您好,可以使用goto的。

但回到您这个目的,您可以简单的使用取反条件的if:

建议将原本的:

if ( 判断条件 ) goto HERE;
// 语句2
HERE: ;

改成:
if (!判断条件)
{
//语句2
}

这是等价的,但更清晰点。

楼主觉得呢?

是的,版主。但是,语句2 部分由二十多行,这样CUDA好像就不能进行分支预测。是这样的吗?

楼主您杞人忧天了。。。。想多了。。。
该怎么写就怎么写。
先写出来再说!

(这2种一样的,别乱想,放心吧)
(请直接按照2#给出的最清晰的写法实现您的算法)

嗯,版主,好的,我先把程序走通再说:lol。谢谢版主的指导!