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

Uploaded CPython 3.13Windows x86-64

quadrants-0.7.7-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.7-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.7-cp313-cp313-macosx_11_0_arm64.whl (30.4 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

quadrants-0.7.7-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.7-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.7-cp312-cp312-macosx_11_0_arm64.whl (30.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

quadrants-0.7.7-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.7-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.7-cp311-cp311-macosx_11_0_arm64.whl (30.4 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

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

File metadata

  • Download URL: quadrants-0.7.7-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.7-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a671b859b42cf09cd23a76ee039fb57e61ec35141b96230a8cd0d49672d82865
MD5 4e71aa40f14f7607e9baaa16884068c8
BLAKE2b-256 7d85f64b797ab900911a7b5450f94b5e06952a49f8a1d97afed6a244be1abb61

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.7.7-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e734b3be284dbcc3aa9e37a224aaee67333650c528e7d4af77aab35b2b8e5765
MD5 f5779baf4386ff62628511af3bf8e541
BLAKE2b-256 5686d83d2bd41216957401fca5ea756d368d34d28d8ada2407e08ada173cbf94

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.7.7-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 0ce32f16af2f8a5d06494f319d66c463d4b9041e1175f6311e4205081fbbe132
MD5 8fa2d29db0307fac7c05ce28c2efaa92
BLAKE2b-256 6d77124d911aacd6567f61e70d9abb6c13be43efefe0dad0e6141d384a0cf269

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.7.7-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9c33e0b860227604d5bd5be961a3766933394d67bea77750651d7fd00ac2b85d
MD5 db8842ae9eab7180180b5467929e455a
BLAKE2b-256 8a7321c4f56928acf299f3e5575f5f93db64ec79d5164157e0c8757a7ead170d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: quadrants-0.7.7-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.7-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ca88d42c2a128941025a794dd91fa872047a77762ca5fac7472ed2cf42c330d9
MD5 cfeab0473068606ba2be904d01246361
BLAKE2b-256 73cef924fa55df4d58df823ba5d94042210c0663670673951c474173c67587b9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.7.7-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 df783ed614ad17ce0e3b724d5da46bd15865b13ba2b08b86a94307bc6c84d522
MD5 4828d7229d4dc398a28d91fb58a76092
BLAKE2b-256 db70c10e9484f3db3463cc7e85c9f9e19375fc76e5e2c5d8601dca258de32f73

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.7.7-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 10a132283d13dc953ef478870bd7da04976dcbc344090a441fca8cbca1ee55fd
MD5 d83fee9343265e1809971db77206c37e
BLAKE2b-256 d0d6d17dcfd597bbdc9a9568ef6341859ddd5460eb6ac504da0d9bd186495708

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.7.7-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2061fbc2b74b2902edbb78970a1fee496a1ede952558fd52303568bbf8b195dd
MD5 f1ccef92c2a09759021943fe81de674e
BLAKE2b-256 a16a937eede4e732f5f385d3123213df03ad8cfd92899c8e1141f688516c7576

See more details on using hashes here.

File details

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

File metadata

  • Download URL: quadrants-0.7.7-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.7-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 36e4ef280af65ca9047546c897ec7aaa50e035eea2420c3913ccce5263c1bf19
MD5 564f5fbefec04c662aa7d9c03020792f
BLAKE2b-256 aa789edcd3da6bde5676286b791c12ebd816242b09a21429a3d24ab524a511df

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.7.7-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 aec2545576f82ed69f6b17f3015a16e1d925fe2893da40ccbee63713ff53b919
MD5 472758d056b2534b4987e898e13b997e
BLAKE2b-256 065271dc9cae37dd873bc733f793101742187b279c56f625ea4c344f24e18c80

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.7.7-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 bea6f6f598082c1226ba67ceddf7444e3806964214ab6837f244471ab2078c78
MD5 2e769400c445789ae4eb5311a13f9214
BLAKE2b-256 09d14ac7a0958d471217670e258dfddffd180249589fad3917aa774a5e9108bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.7.7-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a8f340cf826d97e0389255ec71dd009d2f78da96e10833be90793908f23e84dc
MD5 099ad141aaaff6a29d65eee279db43b2
BLAKE2b-256 a32a2e61c0182ee942cc09acfd2af8b9da6e4cac26eabd1acd5bd002dbe9bd11

See more details on using hashes here.

File details

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

File metadata

  • Download URL: quadrants-0.7.7-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.7-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8e3c85c543dbccdb781454523e74c1f622a0580ff1744d0d1c18afddc25a3d08
MD5 3b0b73ee801094185f78586d71c42d76
BLAKE2b-256 137970056fe376c1c4932313504f230b1c4b5d8c162e9a47415f8cd3d5ee83bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.7.7-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bc3ead90ffc63ec50323502a7382b82787731729fb8e35079d8e730bccd387e9
MD5 63194e397f45bbe595757edc0ac836ad
BLAKE2b-256 2ae45bd80d6fafe597c40aa75d8ad27ecb14921d09a9608b5129c271cc59223d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.7.7-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 2c62b10a51f4084949a935ec4d06a528c13388d20c033f484734516afd53222d
MD5 523c4b46abf580c787d06bb1412574e2
BLAKE2b-256 4d5c1aff0965a33f21e9f7c90be7f6249d7817188c27c6c8dd90791b7ecf9eef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-0.7.7-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 959f2cc621ffde2d2eedcc87399d1a887b2109bd6219a39481865790cf03803c
MD5 b1e01ea87ba3b9a480efd0ef1d8889c6
BLAKE2b-256 b42aa228521518589fa11dd33410588eeda62613425c6dc964aba4f4a5b8ccc4

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