使用ndarray后好像gpu利用率下降了

对于一个变量,需要在python scope和taichi scope中更新,因此使用一个

var=np.zeros(1)

来实现这一功能。
然而发现当某些kernel中需要使用到这一变量时,与传入类型为int相比,传入类型为ti.types.ndarray会大大降低gpu利用率,从约90%降低到60%

@ti.kernel
def function(var: ti.types.ndarray(), other_vars: ti.template()):
    for i in range(var[0]):
       other_function()

这个是很正常的,两方面:

  1. Ndarray存储在内存/显存上面,而int类型大概率会被优化成一个local variable存在寄存器里,所以存取效率不同
  2. 对于编译器来说Ndarray是一个纯黑盒,优化空间比较小。而int类型则适配更多种优化策略