2014-01-19 51 views

回答

2

唯一的内核直接退出是通过assertion这真的是用于调试的目的,并具有显着的副作用。

有没有其他办法可以从内核中做到这一点 - 必须使用另一种方法,如变量,所有线程都轮询,或者一些其他编程机制来告诉所有的线程退出。

+0

确定。我希望为此提供一些“魔术”功能。我知道一些共享变量就足够了,但是对于排序调度呢?据我了解,线程被分组为由线程处理器执行的warps。我可以想象,当结果已经被发现时,一些线程仍然在等待运行。我唯一最好的猜测是把这个共享变量的条件放入内核的开始。 –

+1

@GrzegorzSzpetkowski:看一下经纱投票指令,它们给你一个经线宽的'any'或'all'操作,你可以使用它来提前退出warp级别的代码(以及两级具有小共享内存的代码数组可以通过一些指令让你在早期退出块级。 – talonmies