请问大佬,ti.kernel调用的ti.func,ti.func中的for循环是否会并行执行?

测试的时候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 个赞

谢谢大佬,我就担心kernel的串行会让func丢掉并行。
非常感谢!

请问kernel的最外层for是并行的,kernel的for调用func,那func内最外层的for还是并行的吗?

这样的话,ti.func里的for不是并行执行的

1 个赞