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 (Ying & 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 — register-resident 16×16 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-0.8.0-cp313-cp313-win_amd64.whl (55.6 MB view details)

Uploaded CPython 3.13Windows x86-64

quadrants-0.8.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (48.1 MB view details)

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

quadrants-0.8.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl (45.0 MB view details)

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

quadrants-0.8.0-cp313-cp313-macosx_11_0_arm64.whl (30.4 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

quadrants-0.8.0-cp312-cp312-win_amd64.whl (55.6 MB view details)

Uploaded CPython 3.12Windows x86-64

quadrants-0.8.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (48.1 MB view details)

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

quadrants-0.8.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl (45.0 MB view details)

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

quadrants-0.8.0-cp312-cp312-macosx_11_0_arm64.whl (30.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

quadrants-0.8.0-cp311-cp311-win_amd64.whl (55.6 MB view details)

Uploaded CPython 3.11Windows x86-64

quadrants-0.8.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (48.1 MB view details)

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

quadrants-0.8.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl (45.0 MB view details)

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

quadrants-0.8.0-cp311-cp311-macosx_11_0_arm64.whl (30.4 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

quadrants-0.8.0-cp310-cp310-win_amd64.whl (55.6 MB view details)

Uploaded CPython 3.10Windows x86-64

quadrants-0.8.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (48.1 MB view details)

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

quadrants-0.8.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl (45.0 MB view details)

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

quadrants-0.8.0-cp310-cp310-macosx_11_0_arm64.whl (30.4 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: quadrants-0.8.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 55.6 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-0.8.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 cded00f903f2d82d573c553c3d7fe16bdd29deba1679d66f67a95139065794ee
MD5 acda5ff2d2bee6e048f43adcf5a450e2
BLAKE2b-256 254297501f41456a977e3092244f1e7327a2e313d5ab58081f86b9eb860610f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.8.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 58db773247a31ab7badb9bbdff3564b889892fa74b92b714ccd91a3f023d1c1c
MD5 d2d63c2f5a01ce4dec02b628def9f95a
BLAKE2b-256 f2ca19adad282cc3b500eb0cf08fc2ed1ea13ce697e5c31aafd06fecca182668

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.8.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 971c4bbd786a1a22412922e40865ce17821dcef0359e5ce7ac5cc9eab19d3062
MD5 dfafd94a07e08f10c78cadc1ccd3b64b
BLAKE2b-256 cfe36998c451a1c2dea218906bd206b8e82a622a449fbe8022fa6905cb1decd8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.8.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4ee69ff07aa84f5d28dd5c4f99cdbc67139dad45abedb0e7dbe7552a45017a53
MD5 873247611fc105b3640a273384e48d02
BLAKE2b-256 2ee9e19b9980713daabdd07955f673359728fe1c311bf4ec4c845f969c054536

See more details on using hashes here.

File details

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

File metadata

  • Download URL: quadrants-0.8.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 55.6 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-0.8.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 897d654ac56ab087aabe43058a4ab5970460604e3a2129f52850d32ff97b3162
MD5 e63b197e49673ffe4dddcb8662361da6
BLAKE2b-256 3cf7b6bd12453bde9a73d49a2579aa5c0ac57dbadd45acec704f704d8958429f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.8.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6ee51b7299882dd78bdc04ce2385566dbcbb59bcf0b2ce0951af7a1ddfe51a40
MD5 a55d6383a09f285a19ce6f1ff7521fc3
BLAKE2b-256 05c1f3a8de448bfdef42507d82b97264b2f5c0383067ba10ec438d13a84243fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.8.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 a979c495027d74f080563bd8bc1978fabdc23881d52b284516b3b658950034d3
MD5 0ea71b75010eb24d995d0c9312fbf504
BLAKE2b-256 cff7f1b0ad69914a336f78d6f6d2d6658875f21b5060ebf80f29e847e3d2c442

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.8.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 07e223958f51c75cabe4631b5446db0ec22fa9f9818a80c69581a8893db090dd
MD5 7597f3a2a9ea977c51dd08b52de4ee47
BLAKE2b-256 6d69728f33e16e8612de22f3e95d6291bce6f22131067c897d3b5eb7ea1706bf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: quadrants-0.8.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 55.6 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-0.8.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 cdeba06aa5f1f35453a35a407afe410d6575ebaea4707aeac1140f970cab5e16
MD5 7f1f23e4a3a0a7f5fc34ff2af7b50456
BLAKE2b-256 dc5c69ad513d44ab85f56ae6235666b0e5e7f55519eb1951e62f35837adcf9d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.8.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f0577238278f53345e34db90078491df744ead265a7ce333718288173d201474
MD5 29720c3c9db6b24c9edb98ea94af370c
BLAKE2b-256 69e3678803e8574d8bfcb6c3524faf6eecbabe85c79f8743a695fb139d8270c0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.8.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 0ca422e9a5c9869efb818778733d05b32f3f26b4fc5c972388b8d079eb52d5a2
MD5 274dc1ecff3a56d85dd6271233c79445
BLAKE2b-256 5cf283387190a07cc74b222800f9a507037e26c23dd6e096a657a08e51644e46

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.8.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d4911e2e34428afacae91c2bf577aec4e02f3fe4f60416e7030a84451c8456fd
MD5 3e5d6ddad27f6c4174a8fb22e74475ac
BLAKE2b-256 667a26dc04b9765a4cd8398c0ab0569fb9b2a25631e081e4e8a8c9f467ebac79

See more details on using hashes here.

File details

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

File metadata

  • Download URL: quadrants-0.8.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 55.6 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-0.8.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 215495882e5e5bb5e06d52ad21e33b1d58f8051b208ad6efd1c76278ee7ff995
MD5 9bba69a9284eb1a3c6b948598967098a
BLAKE2b-256 50dd0faff307e01af242b8774c414e6ea054d3447c504f4fc286d802f5a3d7c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.8.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e97b529116b4d8a97f003033cb2fdb33ef3988e82312b25379c5317578b8d706
MD5 4a6b03cda9314c1cf6455084d75e7b73
BLAKE2b-256 924a75ef2cd41c5b4e69b606c21d9472c5ea200dc549085a63f32494014f3a37

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.8.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 cd1025b161150bf18ec0dccc7a57f68da73dc31686abdb731adcb59215f3885e
MD5 8b42f5daf2747d7b67ed8df7eb2449b8
BLAKE2b-256 3d0f842bc4314b68477e79dc50f4fc1ffec7338b1512118dce230a3c5651a8dd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.8.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c1e697c7380af04e70c430574757850752d95e641906816533fb3a44048ca542
MD5 d08bc3e879ca004449bb3fc21e1924c9
BLAKE2b-256 5106ea0abf674afdab049cb6de53b4a02b8a1578460c03c887876ad168a36af1

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