跳转至主要内容
Version: v1.1.3

全局设置

后端

  • 指定要使用哪种后端(Arch):ti.init(arch=ti.cuda)
  • 指定 CUDA 预分配内存的大小:ti.init(device_memory_GB=0.5)
  • 指定 CUDA 所使用的 GPU:export CUDA_VISIBLE_DEVICES=[gpuid]
  • To specify which GPU to use for VULKAN:
  • export TI_VISIBLE_DEVICE=[gpuid]
  • 启动时禁用某个后端(CUDA, METAL, OPENGL),例如 CUDA: export TI_ENABLE_CUDA=0
note

In case you want to use taichi cuda backend together with GGUI on a machine with multiple GPU cards, please make sure CUDA_VISIBLE_DEVICES matches TI_VISIBLE_DEVICE if any of them exists. In general, CUDA_VISIBLE_DEVICES and TI_VISIBLE_DEVICE should point to a GPU device with the same UUID. Use nvidia-smi -L to query the details of your GPU devices.

编译

  • 禁用高级优化以节省编译时间并消除可能的错误:ti.init(advanced_optimization=False)
  • 禁用 fast math 以防止可能出现的未定义数学行为:ti.init(fast_math=False)
  • 打印生成的中间表示:ti.init(print_ir=True)。 Note that compiled kernels are cached by default. To force compilation and IR emission, use ti.init(print_ir=True, offline_cache=False).

运行时

  • 重启 Taichi 运行时系统(销毁所有 field 和 kernel):ti.reset()
  • 以调试模式启动程序:ti.init(debug=True)ti debug your_script.py
  • 禁止在启动时导入 torch:export TI_ENABLE_TORCH=0
  • 禁止在启动时导入 paddle:export TI_ENABLE_PADDLE=0
  • To set a custom seed for the random number generator used by ti.random(): ti.init(random_seed=seed) where seed is an integer. For example ti.init(random_seed=int(time.time())).

日志

  • 通过输出 TRACE 级日志以显示更详尽的信息:ti.init(log_level=ti.TRACE)ti.set_logging_level(ti.TRACE)
  • 消除冗余输出:ti.init(verbose=False)

开发

  • 在 Taichi 崩溃时触发 GDB:ti.init(gdb_trigger=True)
  • 开发模式下,缓存编译过的运行时位码(runtime bitcode)以节省启动时间:export TI_CACHE_RUNTIME_BITCODE=1
  • 指定运行测试的线程数:export TI_TEST_THREADS=4python tests/run_tests.py -t4

从环境变量指定 ti.init 中的参数

ti.init 中的参数也可以从环境变量中指定。 例如:

  • ti.init(arch=ti.cuda) 相当于 export TI_ARCH=cuda
  • ti.init(log_level=ti.TRACE) 相当于 export TI_LOG_LEVEL=trace
  • ti.init(debug=True) 相当于 export TI_DEBUG=1

如果 ti.init 中的参数也同时在对应的环境变量中被指定,那么环境变量中的参数将覆盖前者,例如:

  • 如果同时指定了 ti.init(arch=ti.cuda)export TI_ARCH=opengl,那么 Taichi 将会选择 ti.opengl 作为后端。
  • 如果同时指定了 ti.init(debug=True)export TI_DEBUG=0,那么 Taichi 将会禁用调试模式。

如果调用了两次 ti.init,那么首次调用时的配置将被完全丢弃,例如:

ti.init(debug=True)
print(ti.cfg.debug) # True
ti.init()
print(ti.cfg.debug) # False

:::

本文有帮助吗?