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-1.0.0-cp313-cp313-win_amd64.whl (55.7 MB view details)

Uploaded CPython 3.13Windows x86-64

quadrants-1.0.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-1.0.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-1.0.0-cp313-cp313-macosx_11_0_arm64.whl (30.5 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

quadrants-1.0.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-1.0.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-1.0.0-cp312-cp312-macosx_11_0_arm64.whl (30.5 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

quadrants-1.0.0-cp311-cp311-win_amd64.whl (55.7 MB view details)

Uploaded CPython 3.11Windows x86-64

quadrants-1.0.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-1.0.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-1.0.0-cp311-cp311-macosx_11_0_arm64.whl (30.5 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

quadrants-1.0.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-1.0.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-1.0.0-cp310-cp310-macosx_11_0_arm64.whl (30.5 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: quadrants-1.0.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 55.7 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.0.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 816e03753a8812a03a4e9883428a327fec1b49cb60f0b4f74facd135b04b346b
MD5 ddf9f08c1e1b82a309edd22402bc330a
BLAKE2b-256 46dd24141972b3774a7acaed1e409d255b9826fdd0aa8e6e4bafa46413e7b2ac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-1.0.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1ba80f6b0d4a8b56a0b212fe27523c729fa65f0adc710ba86afa904220e86036
MD5 31c844faeae21dc035bbd676482c385b
BLAKE2b-256 aa27eff7beecf4a77397200e15504b875aa992231ad162b3ec11ac4a3dff4c41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-1.0.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 07942cba3878d0dc627039e7505dd58b52b64372b8e1c10e967cbbf21d12948d
MD5 342a6a0128bf3bf97d1ab715d2426ee8
BLAKE2b-256 91321e1cefa75e659ff864cc10288f172fee7e0e5324113e6de68e3c00e8acbe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-1.0.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a4f5ac0c729eef39a71d5292744bac33e373ce3486d5c8b67571a0839993862c
MD5 3ddb96bdea84dd30a8071cec16cf9980
BLAKE2b-256 4a4fc69d4faa22da031335c0a0663f7985a2973035926c2b51308d892229b9eb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: quadrants-1.0.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-1.0.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 808761c7ddc75b15ecb87a0d68b21982aa1cace1f9a268065e06586b5816931b
MD5 94fb5ed220ba0672b9abcc88d9fb54d0
BLAKE2b-256 84ba2fcfce9469bc138391abe4041881cb601a54304a5ff9b274c7c0aff3add2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-1.0.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 44ae0dc718805a508240f2b31ce80f8199ecdb04357938edaccb27eeaedc965d
MD5 8289c517d6ac37cf255ac3ba770a4c4f
BLAKE2b-256 fb5e7006c0f38e3f211ac74db69c68d3691a8f892bc83de4ae894fad4c32c39f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-1.0.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 07f5974027310c04e1f5ea6b283505a30dbd769c54647a0e164c512166d2638a
MD5 45e5d21d10952f76b684ed55f500b4dd
BLAKE2b-256 5984db2c81857ba0f4593e3efcfb889353c7b338154e4d9f4ec7137822bda1cb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-1.0.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 83fe6c2f1428c4a2341afb2565b645483777c4c2127c28d983258b9d2c434863
MD5 40041e5a7b9142e4091e01ccb8fcbe3b
BLAKE2b-256 4a5de9dcf755ec0876537cff304dc6f65a6b4d9fdbe324b7233a036fdf3f293b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: quadrants-1.0.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 55.7 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.0.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 06230b9b742912f33d10fd1b7303a300ffd23d4d4a01ed84af7cdc003e9e18bb
MD5 cd0db3ac097bc80eb10b7c7fab06c4de
BLAKE2b-256 5438f4b22eff12655568cda954cbf3864e4d0cfc56eee95bd5d82ab688c5a0b0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-1.0.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d72d2a88f5769322e1bbb996f5416510e810bc6812a6603606b55d30371e310f
MD5 a083529b276ee9c6a1dcab968dce35de
BLAKE2b-256 5970f8a4176cabf4cfb584cafc6d67eacd65b7a038b178d447dd1cf77c48aa5c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-1.0.0-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 17ddefa47a870252f701b8650232cc92e2c8e8fcb4d7e2d1d6bad41d7118a835
MD5 91af86a4a938f4d1fa71e50844015928
BLAKE2b-256 8be15d2134ebee83743ac62a3ccd1093dfeae0d79350d985667dfc9121cad8ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-1.0.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 37f25db9c7e9bb49002d7417fc84451253b9ad2817914cdd55e5c475b0527487
MD5 e80c1d880c40738d839ca14a30454288
BLAKE2b-256 c56e74eabc7c1f3fa67afc9ca935476a73b856194d9ff6e1f8fa07718735c6f5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: quadrants-1.0.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-1.0.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a06ecd9c17705222c70f3976d7a1e43dd82bb721f280301cd7c1b3f39eb1b869
MD5 c17b54a088d7f341b42df136065e6228
BLAKE2b-256 36d01ddac152cd57cbfe896f2913d414d1546848ec5db101fc68659b6965fbbc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-1.0.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 68c9068b8420cf5c78df906c1c3509643ac0958bc89c54e02778190ae01d611c
MD5 43faee8338529f28d38098a1a0d4e798
BLAKE2b-256 cfa566e10b9e3a1ef0386cd2f3f911b58d09b3eba6af6d14356c22bdedcd7b85

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-1.0.0-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 0185802a74d6ae3d100264286a2175f495a9e53b8ffe9e7b41c2ce29e013317e
MD5 ad1ecb2fcf6ea6346581f5d70bd12f7f
BLAKE2b-256 8476164dabdf40503b48c8f52474314b90c7673efe9fe85942998f7efaa1a6b0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-1.0.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d77f7c5da174d98e4fddc72f54237f3522a53895f6b7006b9c33d7796d24516d
MD5 ea9e29c4840687c66a9bc64443e71e1a
BLAKE2b-256 40ef2f6f6513cb74e3796d6ab2af10c1a981af3a1a14d557d6acf58e5527fe71

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