用户
 找回密码
 立即注册
jaredlu_CUDA 该用户已被删除
发表于 2013-9-27 15:36:53
62274
请教一个核函数的问题:

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

比如下面的情况:

__global__ void Kernel(  )
{
     // 语句1

     if ( 判断条件 )
       goto HERE;

     // 语句2

HERE: ;

     // 语句3
}

上述代码中:语句2部分,只有当满足一定条件时,才执行,可否利用goto语句这样实现?
使用道具 举报 回复
发表于 2013-9-27 15:43:14
楼主您好,可以使用goto的。

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

建议将原本的:

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

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

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

楼主觉得呢?
使用道具 举报 回复 支持 反对
发表于 2013-9-27 15:46:14
是的,版主。但是,语句2 部分由二十多行,这样CUDA好像就不能进行分支预测。是这样的吗?
使用道具 举报 回复 支持 反对
发表于 2013-9-27 15:47:48
jaredlu_CUDA 发表于 2013-9-27 15:46
是的,版主。但是,语句2 部分由二十多行,这样CUDA好像就不能进行分支预测。是这样的吗? ...

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

(这2种一样的,别乱想,放心吧)
(请直接按照2#给出的最清晰的写法实现您的算法)
使用道具 举报 回复 支持 反对
发表于 2013-9-27 15:49:47
横扫千军 发表于 2013-9-27 15:47
楼主您杞人忧天了。。。。想多了。。。
该怎么写就怎么写。
先写出来再说!

嗯,版主,好的,我先把程序走通再说。谢谢版主的指导!
使用道具 举报 回复 支持 反对
发新帖
您需要登录后才可以回帖 登录 | 立即注册