import taichi as ti
ti.init()
pos = ti.ndarray(dtype=ti.math.vec2, shape=(100))
@ti.kernel
def test():
pos[2][1] = 1.0
test()
报错
(base) PS C:\dev\tiPBD> & C:/Users/cl-w/miniconda3/python.exe c:/Users/cl-w/Desktop/err.py
[Taichi] version 1.4.1, llvm 15.0.1, commit e67c674e, win, python 3.10.9
[Taichi] Starting on arch=x64
Traceback (most recent call last):
File "c:\Users\cl-w\Desktop\err.py", line 7, in <module>
test()
File "C:\Users\cl-w\miniconda3\lib\site-packages\taichi\lang\kernel_impl.py", line 976, in wrapped
raise type(e)('\n' + str(e)) from None
taichi.lang.exception.TaichiCompilationError:
File "c:\Users\cl-w\Desktop\err.py", line 6, in test:
pos[2][1] = 1.0
^^^^^^
Traceback (most recent call last):
File "C:\Users\cl-w\miniconda3\lib\site-packages\taichi\lang\ast\ast_transformer_utils.py", line 25, in __call__
return method(ctx, node)
File "C:\Users\cl-w\miniconda3\lib\site-packages\taichi\lang\ast\ast_transformer.py",
line 238, in build_Subscript
node.ptr = impl.subscript(ctx.ast_builder, node.value.ptr,
File "C:\Users\cl-w\miniconda3\lib\site-packages\taichi\lang\util.py", line 300, in wrapped
return func(*args, **kwargs)
File "C:\Users\cl-w\miniconda3\lib\site-packages\taichi\lang\impl.py", line 142, in subscript
return value.__getitem__(_indices)
File "C:\Users\cl-w\miniconda3\lib\site-packages\taichi\lang\util.py", line 308, in wrapped
assert in_python_scope(), \
AssertionError: __getitem__ cannot be called in Taichi-scope
而换成vector field就可以通过
import taichi as ti
ti.init()
pos = ti.Vector.field(2, dtype=ti.f32, shape=(100))
@ti.kernel
def test():
pos[2][1] = 1.0
test()