Otis
#1
- 请问在taichi scope中,是否不支持string类型的变量
- 在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
感谢!!!
YuPeng
#2
Hi @Otis
- 是的,Taichi scope目前还不支持string类型的变量;
- 在你的代码里,你可以使用
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()