tinygrad/docs/env_vars.md
Christopher Milan bc180a963c
deprecate <dev>=1 in favor of DEV=<dev> (#15467)
* start work on target

* add test

* update actions to use DEV

* update docs

* update readmes

* tests need that too

* update example

* update tests (comments)

* fix that test

* ruff

* mypy

* oops

* remove getenvs

* don't add Target yet

* and the test

* lint

* and docs

* more stuff

* assert

* few more fixes

* test assert
2026-03-26 03:48:03 -04:00

3.1 KiB

List of environment variables that control tinygrad behavior.

This is a list of environment variable that control the runtime behavior of tinygrad and its examples. Most of these are self-explanatory, and are usually used to set an option at runtime.

Example: DEV=CL DEBUG=4 python3 -m pytest

However you can also decorate a function to set a value only inside that function.

# in tensor.py (probably only useful if you are a tinygrad developer)
@Context(DEBUG=4)
def numpy(self) -> ...

Or use contextmanager to temporarily set a value inside some scope:

with Context(DEBUG=0):
  a = Tensor.ones(10, 10)
  a *= 2

Global Variables

The columns of this list are are: Variable, Possible Value(s) and Description.

  • A # means that the variable can take any integer value.

These control the behavior of core tinygrad even when used as a library.

Variable Possible Value(s) Description
DEBUG [1-7] enable debugging output (operations, timings, speed, generated code and more)
DEV [AMD, NV, ...] enable a specific backend
BEAM [#] number of beams in kernel beam search
DEFAULT_FLOAT [HALF, ...] specify the default float dtype (FLOAT32, HALF, BFLOAT16, FLOAT64, ...), default to FLOAT32
IMAGE [1-2] enable 2d specific optimizations
FLOAT16 [1] use float16 for images instead of float32
HCQ_VISIBLE_DEVICES [list[int]] restricts the HCQ devices that are available. The format is a comma-separated list of identifiers (indexing starts with 0).
JIT [0-2] 0=disabled, 1=jit enabled (default), 2=jit enabled, but graphs are disabled
VIZ [1] 0=disabled, 1=viz enabled
ALLOW_TF32 [1] enable TensorFloat-32 tensor cores on Ampere or newer GPUs.
WEBGPU_BACKEND [WGPUBackendType_Metal, ...] Force select a backend for WebGPU (Metal, DirectX, OpenGL, Vulkan...)
CUDA_PATH str Use CUDA_PATH/include for CUDA headers for CUDA and NV backends. If not set, TinyGrad will use /usr/local/cuda/include, /usr/include and /opt/cuda/include.

Debug breakdown

Variable Value Description
DEBUG >= 1 Enables debugging and lists devices being used
DEBUG >= 2 Provides performance metrics for operations, including timing, memory usage, bandwidth for each kernel execution
DEBUG >= 3 Outputs buffers used for each kernel (shape, dtype and strides) and the applied optimizations at a kernel level
DEBUG >= 4 Outputs the generated kernel code
DEBUG >= 5 Displays the intermediate representation of the computation UOps (AST)
DEBUG >= 6 Displays the intermediate representation of the computation UOps in a linearized manner, detailing the operation sequence
DEBUG >= 7 Outputs the assembly code generated for the target hardware