ti.data_oriented不支持ndarray?

版本:1.6.0 window10

import taichi as ti
import numpy as np
ti.init()

@ti.data_oriented
class TestClass:
    def __init__(self):
        self.a = ti.ndarray(ti.i32, shape=10000)
    
    @ti.kernel
    def test_kernel(self):
        for i in range(10000):
            self.a[i] = i

    def test(self):
        self.test_kernel()

test = TestClass()
test.test()

以上代码会报错

发生异常: TaichiCompilationError

File "C:\Codes\learn-flip\1.py", line 13, in test_kernel:
            self.a[i] = i
            ^^^^^^^^^
Traceback (most recent call last):
  File "C:\Users\cl-w\miniconda3\lib\site-packages\taichi\lang\ast\ast_transformer_utils.py", line 27, in __call__
    return method(ctx, node)
  File "C:\Users\cl-w\miniconda3\lib\site-packages\taichi\lang\ast\ast_transformer.py", line 233, in build_Subscript
    node.ptr = impl.subscript(ctx.ast_builder, node.value.ptr, *node.slice.ptr)
  File "C:\Users\cl-w\miniconda3\lib\site-packages\taichi\lang\util.py", line 312, in wrapped
    return func(*args, **kwargs)
  File "C:\Users\cl-w\miniconda3\lib\site-packages\taichi\lang\impl.py", line 194, in subscript
    return value.__getitem__(_indices)
  File "C:\Users\cl-w\miniconda3\lib\site-packages\taichi\lang\util.py", line 320, in wrapped
    assert in_python_scope(), f"{func.__name__} cannot be called in Taichi-scope"
AssertionError: __getitem__ cannot be called in Taichi-scope
AssertionError: __getitem__ cannot be called in Taichi-scope

During handling of the above exception, another exception occurred:

taichi.lang.exception.TaichiCompilationError: File "C:\Codes\learn-flip\1.py", line 13, in test_kernel:
            self.a[i] = i
            ^^^^^^^^^
Traceback (most recent call last):
  File "C:\Users\cl-w\miniconda3\lib\site-packages\taichi\lang\ast\ast_transformer_utils.py", line 27, in __call__
    return method(ctx, node)
  File "C:\Users\cl-w\miniconda3\lib\site-packages\taichi\lang\ast\ast_transformer.py", line 233, in build_Subscript
    node.ptr = impl.subscript(ctx.ast_builder, node.value.ptr, *node.slice.ptr)
  File "C:\Users\cl-w\miniconda3\lib\site-packages\taichi\lang\util.py", line 312, in wrapped
    return func(*args, **kwargs)
  File "C:\Users\cl-w\miniconda3\lib\site-packages\taichi\lang\impl.py", line 194, in subscript
    return value.__getitem__(_indices)
  File "C:\Users\cl-w\miniconda3\lib\site-packages\taichi\lang\util.py", line 320, in wrapped
    assert in_python_scope(), f"{func.__name__} cannot be called in Taichi-scope"
AssertionError: __getitem__ cannot be called in Taichi-scope


During handling of the above exception, another exception occurred:

  File "C:\Codes\learn-flip\1.py", line 16, in test
    self.test_kernel()
  File "C:\Codes\learn-flip\1.py", line 19, in <module>
    test.test()
taichi.lang.exception.TaichiCompilationError: 
File "C:\Codes\learn-flip\1.py", line 13, in test_kernel:
            self.a[i] = i
            ^^^^^^^^^
Traceback (most recent call last):
  File "C:\Users\cl-w\miniconda3\lib\site-packages\taichi\lang\ast\ast_transformer_utils.py", line 27, in __call__
    return method(ctx, node)
  File "C:\Users\cl-w\miniconda3\lib\site-packages\taichi\lang\ast\ast_transformer.py", line 233, in build_Subscript
    node.ptr = impl.subscript(ctx.ast_builder, node.value.ptr, *node.slice.ptr)
  File "C:\Users\cl-w\miniconda3\lib\site-packages\taichi\lang\util.py", line 312, in wrapped
    return func(*args, **kwargs)
  File "C:\Users\cl-w\miniconda3\lib\site-packages\taichi\lang\impl.py", line 194, in subscript
    return value.__getitem__(_indices)
  File "C:\Users\cl-w\miniconda3\lib\site-packages\taichi\lang\util.py", line 320, in wrapped
    assert in_python_scope(), f"{func.__name__} cannot be called in Taichi-scope"
AssertionError: __getitem__ cannot be called in Taichi-scope

仅仅将
self.a = ti.ndarray(ti.i32, shape=10000)
改为
self.a = ti.field(ti.i32, shape=10000)
就没有报错

这个确实还不支持