Skip to main content

Global settings


  • To specify which kind of architecture (Arch) to use: ti.init(arch=ti.cuda).
  • To specify the pre-allocated memory size for CUDA: ti.init(device_memory_GB=0.5).
  • To disable the unified memory usage on CUDA: ti.init(use_unified_memory=False).
  • To specify which GPU to use for CUDA: export CUDA_VISIBLE_DEVICES=[gpuid].
  • To disable a backend (CUDA, METAL, OPENGL) on start up, e.g. CUDA: export TI_ENABLE_CUDA=0.


  • Disable advanced optimization to save compile time & possible errors: ti.init(advanced_optimization=False).
  • Disable fast math to prevent possible undefined math behavior: ti.init(fast_math=False).
  • To print preprocessed Python code: ti.init(print_preprocessed=True).
  • To show pretty Taichi-scope stack traceback: ti.init(excepthook=True).
  • To print intermediate IR generated: ti.init(print_ir=True).


  • Restart the entire Taichi system (destroy all fields and kernels): ti.reset().
  • To start program in debug mode: ti.init(debug=True) or ti debug
  • To disable importing torch on start up: export TI_ENABLE_TORCH=0.


  • Show more detailed log to level TRACE: ti.init(log_level=ti.TRACE) or ti.set_logging_level(ti.TRACE).
  • Eliminate verbose outputs: ti.init(verbose=False).


  • To trigger GDB when Taichi crashes: ti.init(gdb_trigger=True).
  • Cache compiled runtime bitcode in dev mode to save start up time: export TI_CACHE_RUNTIME_BITCODE=1.
  • To specify how many threads to run test: export TI_TEST_THREADS=4 or ti test -t4.

Specifying ti.init arguments from environment variables#

Arguments for ti.init may also be specified from environment variables. For example:

  • ti.init(arch=ti.cuda) is equivalent to export TI_ARCH=cuda.
  • ti.init(log_level=ti.TRACE) is equivalent to export TI_LOG_LEVEL=trace.
  • ti.init(debug=True) is equivalent to export TI_DEBUG=1.
  • ti.init(use_unified_memory=False) is equivalent to export TI_USE_UNIFIED_MEMORY=0.

If both ti.init argument and the corresponding environment variable are specified, then the one in the environment variable will override the one in the argument, e.g.:

  • if ti.init(arch=ti.cuda) and export TI_ARCH=opengl are specified at the same time, then Taichi will choose ti.opengl as backend.
  • if ti.init(debug=True) and export TI_DEBUG=0 are specified at the same time, then Taichi will disable debug mode.

If ti.init is called twice, then the configuation in first invocation will be completely discarded, e.g.:

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