听说CUDA中如果有if语句,会对速度有很大的影响。请问这个影响大概有多大?哪里可以找到相关的文档?
楼主您好,
这个分为三种情况:
(1)如果if (condition)本身的条件判断复杂(例如大量的整数比较),则会在3.0+上有效的拖慢速度。因为3.0+本身的整数比较能力不是很强。
(2)如果if (…) {} 导致了在warp内部(临近的32线程)分支,则会有效的降低速度。
(3)如果if (…) {}导致分支在warp的边界(即,以32 * N个线程为单位的分支),则影响不大。
一般情况下,if()内的条件不会太复杂,1点可以无视。主要看是否分支在warp的边界。
例如0-31号线程都条件成立,而32-63号线程都条件不成立,这种分支,一般无碍。
感谢您的来访。
感谢回复
我也受教了~