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

Uploaded CPython 3.13Windows x86-64

quadrants-0.7.6-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (48.0 MB view details)

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

quadrants-0.7.6-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl (44.9 MB view details)

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

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

quadrants-0.7.6-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (48.0 MB view details)

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

quadrants-0.7.6-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl (44.9 MB view details)

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

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

quadrants-0.7.6-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (48.0 MB view details)

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

quadrants-0.7.6-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl (44.9 MB view details)

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

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

quadrants-0.7.6-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (48.0 MB view details)

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

quadrants-0.7.6-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl (44.9 MB view details)

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

quadrants-0.7.6-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.7.6-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: quadrants-0.7.6-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.7.6-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 076fbb60604abf097985eae45a41f30d1865f2ed4fd1e0d57efd747ab3a10a9f
MD5 97e8678e432cd8b57c26bb3cc521bf89
BLAKE2b-256 999569ae6cc70d017689599a1cd9011fbec1e04fd94ebc3308b44220ceaaa53b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.7.6-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 929f1b2d6f3275d089e08786474491e8412a03890f28abf2a8558cca4f85f396
MD5 e76f4390dacb9cc37bfe269a63079a4a
BLAKE2b-256 e3bd898bb9e929ac83b08975e6fb95a130fd98ccf575a5aad7fd35f9bb3597a3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.7.6-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 c8ccb84f2944d4ef2c1160ddd39e8a98f98c4a6f9a686fb3d1acdd8014791445
MD5 6d836f88dfbf1dcd342bf952cca8d6ea
BLAKE2b-256 369e535ce9e2dfede2d78b103d4475337d54a0be3256eba77c8b9e5200fe21ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.7.6-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 faa3104ab036432e129a284085b162939021c4cf2c687b9d4bd8ee7209099246
MD5 1f247119d9573a88805791e4d4ce2d13
BLAKE2b-256 778d2874b69983caa793527cc327cf83fadccb87a1dc9bca1c32eacaa62ceea5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: quadrants-0.7.6-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.7.6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 5bf9003dd041e48962cddddc797a04b75f2650c5faa172dfaa8e2cd97fcc07fc
MD5 49656df8eaf987ecf24c6f8ef805644d
BLAKE2b-256 836bcd41571ef7ef94a02c6a6faa97c29cd96a9b274533317eab9587d3512bb9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.7.6-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2457c89c336e8e2d0ceda4ea7494133192229953cbde772b52c634b577bccbf6
MD5 d031492cbb37b62750ab8e72a00fd23a
BLAKE2b-256 e68513299959444babd2ac26acad8d798d78c0b56a507086fc9fb27f6da3e511

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.7.6-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 2e5e1b79257caacf4cac874e8f12a4b50f6cf7daa0918eee4c6aae098aeea31b
MD5 d70a928c25c31ccf40fae82932e32032
BLAKE2b-256 9c470d0d0a8205aa3465945c2c5a84ceecd4109700c3a8c0f1a8323fb28782b4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.7.6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0369f9f7d8b85d928648dba6f9f89bf99f62745272c365261348e9a24173db00
MD5 04f4abd42631c97ddee5abc6ee4e8659
BLAKE2b-256 37f112a8c0108616b587916d2ddcf226499bc3194c665ab7d6c584887a547825

See more details on using hashes here.

File details

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

File metadata

  • Download URL: quadrants-0.7.6-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.7.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 03adde01df67354f31f1b0bfe2d743d3169106779a2278f3e095a2be74fad327
MD5 07495dbcce699a14702419eabc3d11f1
BLAKE2b-256 510e3391bd9e3d7e40bc32ff7602340715a7de12ea5214d0bc3ebdb7d8d87551

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.7.6-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 accf352988e4695538e24b622cc61db88083026c051f53bab933c2114806afca
MD5 0da35994e137a19fc2187c915885620e
BLAKE2b-256 3a142f954cda5c2960806bb9ae8f69429173d2b7859cdf0f8e2c796fce17287c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.7.6-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 4d6682c74bd9414de5bc5f76cd58cf51934ccee3a465b03c5e4b7596cd35fb02
MD5 bbac410339b8660806bd7c1957bee918
BLAKE2b-256 7b8bbf84b330bfbd2551be65072925d2a2ca1410e17ad60bfedb744c711ee952

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.7.6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 97e4657548572fcbd0be11ab6c2f5941b63e7cd6972191fbe0db2dd87a0a9fdc
MD5 8c6fe4463a8a4d4c37d41f1a3c0d7a52
BLAKE2b-256 49c6f1ef1b0a8d312579a3a768a63d1b76d2dac73a970cc755b392195e35c5e1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: quadrants-0.7.6-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.7.6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 cc15a7319fddc2a8551784905eb67ec88d9a1b52fad599f1b8f43c152de92f54
MD5 a8751009c018a860a40eb070b26d1a45
BLAKE2b-256 8e519a7ffa77ca41f5e162b8e234732242393ffd02e9117508baa56317933659

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.7.6-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 50b03447e93ebb6e55f7cafb6829c98af5a973e0b69c34498b15ded6bc5c4f44
MD5 39510e031df45c9540f6ef3593689b57
BLAKE2b-256 7ed04d4fd4435860a21becdb14025bfb2ed2b8da1f52f8e7d3a1814603930a76

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.7.6-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 6e772f084dff90f210282e9d7afcc6ff3cd956dfe8227aca9968a1c2a1f47f4f
MD5 0c7266d2ccba5db55805b291ec7ae2bb
BLAKE2b-256 24e9c278506b13dc2196e1c788d162908c1018eb18a42de75236d65c0d0bb767

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.7.6-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0f86dc6acc3abe295a1f5260d452d3137638cc73f2fa8ad71e1609a8ab1add18
MD5 6149d8a3fb898cbaeef63546ce5cec35
BLAKE2b-256 07d004a9afb6395b5e34caceb10801302937fbf13fe39ada9c46bed2ff71264e

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