我知道工作项的数量会影响运行时间,但是在运行内核多次使用不同数量的工作项时,我应该会得到略微不同的结果吗?感谢
答案 0 :(得分:0)
如果您获得了不同的结果,那么您的代码中就会出现错误。如果您只对全局变量norm+=element*element;
执行norm
,那么会发生一些线程同时执行此操作并且部分规范丢失。
为简单起见,当两个工作项增加相同的计数器a++
时,甚至会发生这种情况。两者都将读取a
的当前值,两者都会将其增加到a+1
,并且两者都会将a+1
写回寄存器。因此,您最终会使用a+1
而不是a+2
。你的载体会发生什么情况。