升级后遇到的编译问题

大家好,我的一个taichi 代码运行的很好,但是升级到0.8.7 后就出现了下面的错误。 大家有什么好的建议吗?谢谢!

[Taichi] version 0.8.7, llvm 10.0.0, commit 88d81df6, linux, python 3.8.3
[TaiGLSL] version 0.0.11
[Taichi] Starting on arch=cuda
[I 01/11/22 11:05:21.729 28463] [llvm_program.cpp:LlvmProgramImpl@83] CUDA max blocks per SM = 32
Traceback (most recent call last):
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 24, in __call__
    return method(ctx, node)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 479, in build_Attribute
    node.ptr = getattr(node.value.ptr, node.attr)
  File "/home/jianhui/.local/lib/python3.8/site-packages/taichi_glsl/vector.py", line 498, in _vector_getattr
    if ti.inside_kernel():
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/__init__.py", line 35, in __getattr__
    raise AttributeError(f"module '{__name__}' has no attribute '{attr}'")
AttributeError: module 'taichi' has no attribute 'inside_kernel'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 24, in __call__
    return method(ctx, node)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 356, in build_Call
    node.ptr = node.func.ptr(*args, **keywords)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/kernel_impl.py", line 58, in decorated
    return fun.__call__(*args)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/kernel_impl.py", line 177, in __call__
    return transform_tree(tree, ctx)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/transform.py", line 9, in transform_tree
    tree = ASTTransformer()(ctx, tree)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 27, in __call__
    raise e
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 24, in __call__
    return method(ctx, node)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 473, in build_Module
    node.body = [build_stmt(ctx, stmt) for stmt in list(node.body)]
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 473, in <listcomp>
    node.body = [build_stmt(ctx, stmt) for stmt in list(node.body)]
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 27, in __call__
    raise e
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 24, in __call__
    return method(ctx, node)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 444, in build_FunctionDef
    build_stmts(ctx, node.body)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 1062, in build_stmts
    result.append(build_stmt(ctx, stmt))
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 27, in __call__
    raise e
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 24, in __call__
    return method(ctx, node)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 927, in build_If
    node.body = build_stmts(ctx, node.body)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 1062, in build_stmts
    result.append(build_stmt(ctx, stmt))
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 27, in __call__
    raise e
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 24, in __call__
    return method(ctx, node)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 68, in build_Assign
    node.value = build_stmt(ctx, node.value)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 27, in __call__
    raise e
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 24, in __call__
    return method(ctx, node)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 484, in build_BinOp
    node.left = build_stmt(ctx, node.left)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 27, in __call__
    raise e
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 24, in __call__
    return method(ctx, node)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 484, in build_BinOp
    node.left = build_stmt(ctx, node.left)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 27, in __call__
    raise e
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 24, in __call__
    return method(ctx, node)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 484, in build_BinOp
    node.left = build_stmt(ctx, node.left)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 27, in __call__
    raise e
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 24, in __call__
    return method(ctx, node)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 484, in build_BinOp
    node.left = build_stmt(ctx, node.left)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 27, in __call__
    raise e
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 24, in __call__
    return method(ctx, node)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 484, in build_BinOp
    node.left = build_stmt(ctx, node.left)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 27, in __call__
    raise e
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 24, in __call__
    return method(ctx, node)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 484, in build_BinOp
    node.left = build_stmt(ctx, node.left)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 27, in __call__
    raise e
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 24, in __call__
    return method(ctx, node)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 484, in build_BinOp
    node.left = build_stmt(ctx, node.left)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 27, in __call__
    raise e
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 24, in __call__
    return method(ctx, node)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 484, in build_BinOp
    node.left = build_stmt(ctx, node.left)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 27, in __call__
    raise e
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 24, in __call__
    return method(ctx, node)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 484, in build_BinOp
    node.left = build_stmt(ctx, node.left)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 27, in __call__
    raise e
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 24, in __call__
    return method(ctx, node)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 484, in build_BinOp
    node.left = build_stmt(ctx, node.left)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 27, in __call__
    raise e
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 24, in __call__
    return method(ctx, node)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 322, in build_Call
    node.args = build_stmts(ctx, node.args)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 1062, in build_stmts
    result.append(build_stmt(ctx, stmt))
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 27, in __call__
    raise e
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 24, in __call__
    return method(ctx, node)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 485, in build_BinOp
    node.right = build_stmt(ctx, node.right)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 33, in __call__
    raise TaichiCompilationError(msg)
taichi.lang.exception.TaichiCompilationError: On line 521 of file "/home/jianhui/Work/ti_FEM/Single_Phase/fem_N_Savonius.py":
        out =  (sample1(field, I + D.xxx) * x.x * x.y * x.z +
                                   ^^^^^
AttributeError: module 'taichi' has no attribute 'inside_kernel'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/jianhui/Work/ti_FEM/Single_Phase/fem_N_Savonius.py", line 720, in <module>
    update_angular_velo()
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/kernel_impl.py", line 703, in wrapped
    return primal(*args, **kwargs)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/kernel_impl.py", line 631, in __call__
    key = self.ensure_compiled(*args)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/kernel_impl.py", line 617, in ensure_compiled
    self.materialize(key=key, args=args, arg_features=arg_features)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/kernel_impl.py", line 463, in materialize
    taichi_kernel = _ti_core.create_kernel(taichi_ast_generator,
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/kernel_impl.py", line 458, in taichi_ast_generator
    transform_tree(tree, ctx)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/transform.py", line 9, in transform_tree
    tree = ASTTransformer()(ctx, tree)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 27, in __call__
    raise e
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 24, in __call__
    return method(ctx, node)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 473, in build_Module
    node.body = [build_stmt(ctx, stmt) for stmt in list(node.body)]
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 473, in <listcomp>
    node.body = [build_stmt(ctx, stmt) for stmt in list(node.body)]
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 27, in __call__
    raise e
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 24, in __call__
    return method(ctx, node)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 444, in build_FunctionDef
    build_stmts(ctx, node.body)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 1062, in build_stmts
    result.append(build_stmt(ctx, stmt))
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 27, in __call__
    raise e
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 24, in __call__
    return method(ctx, node)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 873, in build_For
    return ASTTransformer.build_struct_for(ctx,
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 795, in build_struct_for
    node.body = build_stmts(ctx, node.body)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 1062, in build_stmts
    result.append(build_stmt(ctx, stmt))
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 27, in __call__
    raise e
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 24, in __call__
    return method(ctx, node)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer.py", line 68, in build_Assign
    node.value = build_stmt(ctx, node.value)
  File "/home/jianhui/anaconda3/lib/python3.8/site-packages/taichi/lang/ast/ast_transformer_utils.py", line 33, in __call__
    raise TaichiCompilationError(msg)
taichi.lang.exception.TaichiCompilationError: On line 473 of file "/home/jianhui/Work/ti_FEM/Single_Phase/fem_N_Savonius.py":
        particles_v[i] = quatratic_trilinear(veloc, particles[i])
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
On line 521 of file "/home/jianhui/Work/ti_FEM/Single_Phase/fem_N_Savonius.py":
        out =  (sample1(field, I + D.xxx) * x.x * x.y * x.z +
                                   ^^^^^
AttributeError: module 'taichi' has no attribute 'inside_kernel'

太极0.8.6之后就不支持taichi_glsl了,要自己写那些函数

1 个赞

由于Taichi v0.8.7做了AST重构,然后taichi_glsl没有在被维护的状态,因此出现了不兼容的问题;我们在今年上半年会逐步重新搭建Taichi的周边组件,taichi_glsl的相关功能在之后也会被支持 :grinning:

2 个赞

太好啦,由于我们的代码里面使用了很多glsl的函数,如果重写的话工作量太大了,之后会重新支持对我们来说太棒啦! :+1:

2 个赞