测试的时候ti.func中的range循环不是串行的,表现为输出的序列不是顺序。
但是在官方教学中:“ 并行执行所有位于 kernel 最外层作用域的 for
循环。”
请问kernel调用ti.func,这个func不在这个kernel域中吗?
ti.func你可以认为和ti.kernel规则相同,里面最外层的for循环会被并行。如果你想要显示的串行行为,可以在for前面加ti.loop_config(serialize=True)
,或者用for i in ti.static(range(...))
将loop展开
1 Like
谢谢大佬,我就担心kernel的串行会让func丢掉并行。
非常感谢!
请问kernel的最外层for是并行的,kernel的for调用func,那func内最外层的for还是并行的吗?
这样的话,ti.func里的for不是并行执行的