用户
 找回密码
 立即注册
jiahuili 该用户已被删除
发表于 2013-10-23 15:00:07
85393
听说CUDA中如果有if语句,会对速度有很大的影响。请问这个影响大概有多大?哪里可以找到相关的文档?
使用道具 举报 回复
发表于 2013-10-23 15:03:38
楼主您好,

这个分为三种情况:
(1)如果if (condition)本身的条件判断复杂(例如大量的整数比较),则会在3.0+上有效的拖慢速度。因为3.0+本身的整数比较能力不是很强。
(2)如果if (...) {} 导致了在warp内部(临近的32线程)分支,则会有效的降低速度。
(3)如果if (...) {}导致分支在warp的边界(即,以32 * N个线程为单位的分支),则影响不大。

一般情况下,if()内的条件不会太复杂,1点可以无视。主要看是否分支在warp的边界。
例如0-31号线程都条件成立,而32-63号线程都条件不成立,这种分支,一般无碍。

感谢您的来访。
使用道具 举报 回复 支持 反对
发表于 2013-10-24 09:46:05
玫瑰幻想 发表于 2013-10-23 15:03
楼主您好,

这个分为三种情况:

感谢回复
使用道具 举报 回复 支持 反对
发表于 2013-10-24 09:51:37
玫瑰幻想 发表于 2013-10-23 15:03
楼主您好,

这个分为三种情况:

我也受教了~
使用道具 举报 回复 支持 反对
发新帖
您需要登录后才可以回帖 登录 | 立即注册