关于taichi scope的几个问题

  1. 请问在taichi scope中,是否不支持string类型的变量
  2. 在taichi scope中,是否无法通过方法修改class下定义的self里的值
    例:
@taichi data_oriented
class Class:
    def __init__(self, dt):
        self.Dt = dt

    @ti.kernel
    def Adaptive(self, t):
        if self.Dt > t:
            self.Dt = t

感谢!!!

Hi @Otis

  1. 是的,Taichi scope目前还不支持string类型的变量;
  2. 在你的代码里,你可以使用 self.Dt 但是不能够赋值。如果想要赋值,可以参考我下面的代码,建立一个 shape=()的scalar field。
import taichi as ti
ti.init(arch=ti.cpu)

@ti.data_oriented
class TiArray:
	def __init__(self, n):
		self.x = ti.field(dtype=ti.i32, shape=n)
		self.y = 10
		self.Dt = ti.field(dtype=ti.i32, shape=())
	@ti.kernel
	def inc(self):
		for i in self.x:
			self.x[i] += 1
		# self.y = 20     # error
		self.Dt[None] = 30 # correct
	
	@ti.kernel
	def output(self):
		for i in self.x:
			print(self.x[i])
		print(self.y)
		print(self.Dt[None])

a = TiArray(32)
a.inc()
a.output()