Skip to main content

The Quadrants Programming Language

Project description

What is Quadrants?

Quadrants is a high-performance multi-platform compiler for physics simulation being continuously developed by Genesis AI.

It is designed for large-scale physics simulation and robotics workloads. It compiles Python code into highly optimized parallel kernels that run on:

  • NVIDIA GPUs (CUDA)
  • Vulkan-compatible GPUs (SPIR-V)
  • Apple Metal GPUs
  • AMD GPUs (ROCm HIP)
  • x86 and ARM64 CPUs

The origin

The quadrants project was originally forked from Taichi in June 2025. As the original Taichi is no longer being maintained and the codebase evolved into a fully independent compiler with its own direction and long-term roadmap, we decided to give it a name that reflects both its roots and its new identity. The name Quadrants is inspired by the Chinese saying:

太极生两仪,两仪生四象

The Supreme Polarity (Taichi) gives rise to the Two Modes (Yin & Yang), which in turn give rise to the Four Forms (Quadrants).

Quadrants captures the idea of progression originated from taichi — built on the same foundation, evolving in its own direction while acknowledging its roots. This project is now fully independent and does not aim to maintain backward compatibility with upstream Taichi.

How Quadrants differs from upstream Taichi

While the repository still resembles upstream in structure, major changes include:

Platform support

  • LLVM 22, ARM (aarch64) support

CI

  • Kernel-level code coverage — device-side branch coverage in standard coverage.py format, integrated with pytest-cov
  • AI-driven checks for line wrapping, deleted comments, test coverage, and feature factorization

Structural improvements

  • dataclasses.dataclass structs — work with ndarrays and fields, nestable, passable to qd.func, zero kernel-runtime overhead
  • qd.Tensor — unified API over fields and ndarrays with per-tensor layout control, pickle support, and a backend= switch
  • BufferView — safe sub-range ndarray access with bounds checking in debug mode

Removed components

To focus the compiler and reduce maintenance burden, we removed: GUI/GGUI, C-API, AOT, DX11/DX12, iOS/Android, OpenGL/GLES, argpack, CLI.

Performance

  • Reduced launch latency — ndarray CPU performance improved 4.5×; ndarray GPU performance went from 11× slower than fields to ~30% slower (5090 GPU, Genesis benchmark)
  • Fastcache — opt-in source-level cache (@qd.kernel(fastcache=True)) that bypasses front-end AST parsing; reduces warm-cache kernel load from 7.2 s → 0.3 s on Genesis benchmarks
  • GPU Graphs@qd.kernel(graph=True) captures kernel sequences into a graph; qd.graph_do_while runs GPU-side iteration loops (hardware conditional nodes on CUDA SM 9.0+)
  • perf_dispatch — auto-benchmarks multiple kernel implementations and selects the fastest at runtime
  • Zero-copy interopto_torch(copy=False) / to_numpy(copy=False) via DLPack on CUDA, CPU, AMDGPU, and Metal; direct torch tensor pass-through into kernels

SIMT primitives

  • Tile16x16 / Tile32x32 — register-resident 16×16 and 32×32 matrix tiles with Cholesky, triangular solve, and rank-1 updates; 5× faster than shared-memory baselines on blocked linear algebra
  • Subgroup ops — cross-platform shuffle, shuffle_down, reduce_add, reduce_all_add across CUDA, AMDGPU, Metal and Vulkan

Autodiff

  • Autodiff with dynamic loops — computes the gradient of any kernel transparently using reverse-mode differentiation and runtime-based memory allocation
  • Forward-mode AD, custom gradients (@qd.ad.grad_replaced), qd.ad.Tape

Debugging & development

  • Python backendqd.init(qd.python) interprets kernels as plain Python so they can be stepped through in a standard Python debugger

Installation

Prerequisites

  • Python 3.10-3.13
  • Mac OS 14, 15, Windows, or Ubuntu 22.04-24.04 or compatible
  • ROCm 5.2 or newer for AMD GPU support

Procedure

pip install quadrants

(For how to build from source, see our CI build scripts, e.g. linux build scripts )

Documentation

Something is broken!

Acknowledgements

Quadrants stands on the shoulders of the original Taichi project, built with care and vision by many contributors over the years. For the full list of contributors and credits, see the original Taichi repository.

We are grateful for that foundation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

quadrants-1.1.0-cp313-cp313-win_amd64.whl (27.9 MB view details)

Uploaded CPython 3.13Windows x86-64

quadrants-1.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (40.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

quadrants-1.1.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl (38.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ ARM64manylinux: glibc 2.34+ ARM64

quadrants-1.1.0-cp313-cp313-macosx_11_0_arm64.whl (26.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

quadrants-1.1.0-cp312-cp312-win_amd64.whl (27.9 MB view details)

Uploaded CPython 3.12Windows x86-64

quadrants-1.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (40.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

quadrants-1.1.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl (38.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ ARM64manylinux: glibc 2.34+ ARM64

quadrants-1.1.0-cp312-cp312-macosx_11_0_arm64.whl (26.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

quadrants-1.1.0-cp311-cp311-win_amd64.whl (27.9 MB view details)

Uploaded CPython 3.11Windows x86-64

quadrants-1.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (40.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

quadrants-1.1.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl (38.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ ARM64manylinux: glibc 2.34+ ARM64

quadrants-1.1.0-cp311-cp311-macosx_11_0_arm64.whl (26.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

quadrants-1.1.0-cp310-cp310-win_amd64.whl (27.9 MB view details)

Uploaded CPython 3.10Windows x86-64

quadrants-1.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (40.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

quadrants-1.1.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl (38.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ ARM64manylinux: glibc 2.34+ ARM64

quadrants-1.1.0-cp310-cp310-macosx_11_0_arm64.whl (26.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file quadrants-1.1.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: quadrants-1.1.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 27.9 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for quadrants-1.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 3e98192c63ead5706faf35cbd65f4bfa3aff1f913de94dad904fcbd193ab669e
MD5 5fa7a8b25c8ff97cbb278dbc8acadfd7
BLAKE2b-256 b02978c0f6bfcedb8d27df4fda57d2d88e243349e06382cfd8be24bd7027cb9f

See more details on using hashes here.

File details

Details for the file quadrants-1.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for quadrants-1.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 751fe954348506a73e59846925c7fdd9c25a14ca2aa603e5ff2a159c0b67870e
MD5 712fca6f02416af5bf6396dac9801920
BLAKE2b-256 95969b97a0305de263e27edb3ec35ec9ba0fc5d243c22afb089421eaceb42896

See more details on using hashes here.

File details

Details for the file quadrants-1.1.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for quadrants-1.1.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 d2620e5b7bf2ed755e8f7b53fa6f2b77d53de09596e7ce57f72e9db90a43d737
MD5 059c63ba38431ee9c73860ce66fcc534
BLAKE2b-256 f723b9911046f4eb5ed2148feec07879789c5c1e67e3bebd9ea0336b4813e984

See more details on using hashes here.

File details

Details for the file quadrants-1.1.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for quadrants-1.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 90f8009ca1d3e6780f1351957d6e37b5510702cf6161ce117194ea99b454a160
MD5 cdba4674aa123d465a4a3b7504b65340
BLAKE2b-256 2c1f4c67cb89bcd7c484c9f8df6b7ad2ccbc3c080f92508911c36f2c4d6de1be

See more details on using hashes here.

File details

Details for the file quadrants-1.1.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: quadrants-1.1.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 27.9 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for quadrants-1.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 3ce3a8d0e4470f6e67243b2927c631a24f9b4db968806def3a57f81c2939fab8
MD5 9a7fa2e1f93fac7cd3142fd291b2590a
BLAKE2b-256 fcaae1a97cb259709f3d84cbde66b93c68197d4912a6aab85b88c3218a317376

See more details on using hashes here.

File details

Details for the file quadrants-1.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for quadrants-1.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 965ce425ac6083f5a9a5c0c60883e18e0450b36ed98e6e6dd9c756aeb370c2b4
MD5 4371b362794b9453f845d0d02f9ed103
BLAKE2b-256 2c334c7e02c913e4b84d64d984ecec0a2cc18fb8163a892d51d722819490a35e

See more details on using hashes here.

File details

Details for the file quadrants-1.1.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for quadrants-1.1.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 d27ce04e70f0149b285f8403213b3d03d70e27d37628df118927e50899b79960
MD5 e9cabffa9566c666a9fd8e943eabe49d
BLAKE2b-256 e115d3aa5f4cfec10d7f0bb217c90a361687f6de8b00b19b799b1a65a184e8dc

See more details on using hashes here.

File details

Details for the file quadrants-1.1.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for quadrants-1.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 abffdd82cca9c446fc270b6389b6bdffdfb56902396383ef88c1c1747f3017b9
MD5 a1dc16a2733ab2bfded0c6b12c8a737a
BLAKE2b-256 725fc71be175c09f83f51ae04064fb7c3e96675405fbc9b311cf61f441795ea5

See more details on using hashes here.

File details

Details for the file quadrants-1.1.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: quadrants-1.1.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 27.9 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for quadrants-1.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b154877762df2417abcfb7ef29a94b012c0291dd70df9626136a155259102661
MD5 d1c8c285bfb914520ac8823ac55a59f0
BLAKE2b-256 b52b9280c9b397d54ab70726c318dc122f9c4899469afe6bbc7f7c168f5bf2c9

See more details on using hashes here.

File details

Details for the file quadrants-1.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for quadrants-1.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2be6cd8f2344dbc13fb354b01646b9ffd9905fdc1e679353f9ca78587dc9af88
MD5 602251f0dfb76cc89d0e57e78715deed
BLAKE2b-256 138897e46143b1dfd81e9a4da1d82dd4e344451ab15b4c3b15998b1f2d29c99b

See more details on using hashes here.

File details

Details for the file quadrants-1.1.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for quadrants-1.1.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 411d8fc6674a5c68899bcaf009fbfee874864608b7c70ea874ad8564942178f9
MD5 8a9a4588088b557400afebb46a32fa76
BLAKE2b-256 9587ad2906d7ce3741f3614d38b54abd13cb29b0d4316112c0ddf8497e69e343

See more details on using hashes here.

File details

Details for the file quadrants-1.1.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for quadrants-1.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1b101154c8203839e243a50cc0db659fb877a4e12ef5569f890c97259bb01b84
MD5 7812e9fe1473ec6dace4cfdaf4fdd4ef
BLAKE2b-256 30e49941d150f5ad4db407770375811e4d4147f971bfb410d47792ac7294a62e

See more details on using hashes here.

File details

Details for the file quadrants-1.1.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: quadrants-1.1.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 27.9 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.10.20

File hashes

Hashes for quadrants-1.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 fed285e4d28928063781f7c1b5d23ae29590e932c89d976db34f5cc8544ed24a
MD5 aec6e0697a7b6f6a63727233442492d8
BLAKE2b-256 008cfbd1a4b3912f68089db7d31d355a25c2744569c30580ba19bc1dc0280cfa

See more details on using hashes here.

File details

Details for the file quadrants-1.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for quadrants-1.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a6c750d10155f34fdce654e6ea45a0119238a49ef335dd88e4d57be0a04cbf80
MD5 bbe279febe356106175a7c147ccec24a
BLAKE2b-256 4672839b7ef269516b034183ddbc5fbd09158b9da891d1e22f99f883c246acd0

See more details on using hashes here.

File details

Details for the file quadrants-1.1.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for quadrants-1.1.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 cc5b7173835269a522ee2cd1cd2a0de40675dc36d0f2a8ae452ecbada0b9edf1
MD5 0fc129f03f27db78850b53ba98c1018c
BLAKE2b-256 147cd7b2f3632912261a34431ce19ae8c6ee83bfcbbd564de53d7443d1902ba2

See more details on using hashes here.

File details

Details for the file quadrants-1.1.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for quadrants-1.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0776491497e2b8154b67e7c55f39f21864167572f879359775b6375bbb1a4c75
MD5 05ead16bba1641d32cb8a27a906db5e4
BLAKE2b-256 2e0c076c23120af36386ad719db7f918a881560a636cee6414d8c15e500f1361

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page