偶在用cuda编写一个计算程序时候,想实现一个功能:当一个线程满足一定条件时,使得整个kernel结束。
请问各位达人如何实现?
[ 本帖最后由 aben321321 于 2010-3-10 20:18 编辑 ]
偶在用cuda编写一个计算程序时候,想实现一个功能:当一个线程满足一定条件时,使得整个kernel结束。
请问各位达人如何实现?
[ 本帖最后由 aben321321 于 2010-3-10 20:18 编辑 ]
关注~~~~
不能马上使整个kernel立即完成,不过可以让线程达到条件后,kernel执行很短一段时间就结束
具体做法是设一个标志位flag = 0,线程达到条件后对这个标志位置1(使用原子操作)
kernel函数加一个if(flag == 0)条件才执行
这样,只要线程置flag后,之后的所有block都走向空分支,基本不用什么时间就结束。
可以肯定的说:不能!