新建field变量报错

使用Taichi时新建标量以及利用kernel加速都可以正常运行,但是新建field出现错误,新建代码如下

import taichi as ti
ti.init(arch=ti.cpu)
f_1d = ti.field(ti.i32, shape=9)

然后程序报错

[E 11/17/22 20:12:27.477 20581490] [llvm_context.cpp:add_struct_module@528] Assertion failure: std::this_thread::get_id() == main_thread_id_

运行后端是macos catalina 10.15.7,python版本是3.7.7

请问大家有没有遇到这个问题?该如何解决?

这代码没有问题呀。你要不要重新安装一下taichi?

试过了,还是相同的报错。现在taichi的版本是1.2.2

啊,是的,我这也能复现,这是个 bug。不过我用现在的 master 分支 build 的 taichi 是可正常跑的。
你试试把你现在用的taichi 卸载了安装这个:

pip install -i https://pypi.taichi.graphics/simple/ taichi-nightly

我还没装这个,只是pip install taichi,就发现前面的代码可以正常运行了,但是如果用下面的代码就会继续报这个错误同时pycharm控制台的程序会退出

ti.init(arch=ti.cpu)
f_1d = ti.field(ti.i32, shape=9)
for i in range(9):
    f_1d[i] = i
f_1d_2 = ti.field(ti.i32, shape=9) #不加这一句上面的可以正常运行

Taichi语言比较喜欢你能够先把用到的数据结构(field等)定义好,然后再对这些数据结构进行初始化等操作。

如果你不想这样,可以使用FieldBuilder,临时创建field,可参考:Fields (advanced) | Taichi Docs

您好,我发现问题在于,如果我同时定义两个及以上的filed结构,如:

f_1d = ti.field(ti.i32, shape=9)
f_1d_2 = ti.field(ti.i32, shape=9)

进程会直接结束,退出代码为-1073741819,但是只定义一个就能正常运行。我在macOS和win10两个系统运行都是同样的结果。

Hi @xuanzhuedmund. 你尝试安装下面的版本,看看还会遇到这个问题吗:

pip install -i https://pypi.taichi.graphics/simple/ taichi-nightly

你好,我刚刚试过,还是相同的报错,同时我也尝试使用ti.root以及FieldsBuilder去创建field,结果也是不变的,会 Assertion failure: std::this_thread::get_id() == main_thread_id_
下图是完整的报错信息和运行代码

我这暂时复现不了你的问题 :frowning: taichi v1.3.0 刚刚发布了,你试试看问题还在不?

问题依旧 :cry:

在这里我也出现了同样的问题,你只需要在前面添加一行代码即可

ti.init(arch=ti.gpu)

你好,我换成gpu还是有问题,还是说这一句应该放在其他位置?

@xuanzhuedmund 这看起来像是环境问题,能提供下电脑的运行环境,python版本之类的信息么?
如果还是能复现的话求一个完整的可复现代码?

您好,我的运行后端是macos catalina 10.15.7,python版本是3.7.7,IDE是pycharm2021,taichi版本1.3.0,LLVM版本为10.0.0,taichi所需的相关依赖包都是pypi里的最新版本。请问还需要什么信息?

@xuanzhuedmund hmmm 因为我们CI里面有macOS 10.15的机器,所以基本可以确定1.3的wheel在10.15 是能跑且过了所有测试的~ 感觉有两个思路值得尝试:

  1. 打开Mac的console app,你的python segfault的时候会跳出一条新的log,可以看看那里有没有啥新的信息
  2. 可以尝试用conda 重新创建一个全新的python 环境安装taichi 再跑下试试~