常见问题

Q:pip 安装 Taichi 时,报错 package not found

A: 你的 Python 版本是否 >= 3.6 并且是 64 位?请参阅 Troubleshooting

Q: 我们有提供像 ti.pi 之类的常量吗?

A: 没有,但你可以使用 math.pinumpy.pi 代替。Taichi能够在 JIT 期间处理这些常量,因此内核不会承担运行时成本。

Q: 如何 强制 串行执行最外层的循环,即 不并行化

A: 试试这个技巧:

  1. for _ in range(1): # 我是最外层循化!
  2. for i in range(100): # 这一层循化不会被并行化
  3. ...

Q: 怎样才能最方便地将图像/纹理加载到 Taichi 张量中?

A: 只需使用 tensor.from_numpy(ti.imread('filename.png')) 即可。

Q: Taichi能否像 matplotlib 那样和 其他 Python 包 合作呢?

A: 可以,只要那个包提供 numpy 接口,请参阅 Interacting with other Python packages

Q: 我们可以添加一些诸如 ti.smoothstepti.vec3 之类的便捷函数吗 ?

A: 不必要,因为我们在扩展库 Taichi GLSL 中已经进行了提供,请使用以下命令安装:

  1. python -m pip install taichi_glsl

Q: 如何不用自己编写光线跟踪,就能 渲染出 3D 结果

A: 你可以使用 Export PLY files 导出模型,接着就可以在 Houdini 或 Blender 中查看了。

或者使用扩展库 Taichi THREE 来渲染图像并实时更新到 GUI。

Q: 如何声明具有 动态长度 的张量?

A: 你想要的可能是 dynamic SNode,这是一种稀疏张量,详见 Working with dynamic SNodes

或者简单地分配足够大的稠密张量,再分配一个 0D 张量 tensor_len[None] 用于记录长度。不过事实上,由于维护稀疏信息的成本开销, dynamic SNode 可能比后者慢。

Q: 用户能否在不规则拓扑(例如曲线或四面体网格)而不是常规网格上迭代?

A: 这些结构必须使用 Taichi 中的 1D 数组表示。接着你就可以通过 for i in xfor i in range(n) 迭代遍历它们了。

但是,在编译时,Taichi 编译器几乎无法对其优化。不过你仍可以通过调整数据布局,获得不同的运行缓存行为和性能数据。