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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

quadrants-1.0.2-cp312-cp312-win_amd64.whl (55.7 MB view details)

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

quadrants-1.0.2-cp310-cp310-win_amd64.whl (55.7 MB view details)

Uploaded CPython 3.10Windows x86-64

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

File metadata

  • Download URL: quadrants-1.0.2-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.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c57fa8be0a288492417ae437c124dc0f0564d76df1d5a700d620aec50386116d
MD5 7e6c17afe3081318ebf85774f27ac505
BLAKE2b-256 96dd049f63a4cad6299cbaed51fa19f897cad74cc34e152877ce5460f7a69704

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-1.0.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 21ba032a88b6c44903fc549f652a0ec1cf287b1a3e1031e276ecae731bfa9737
MD5 8daf2a54eddad8385592cf2199807474
BLAKE2b-256 e04850c679bfc7bf43e4065bd3b8a74ad2e8eb53c504751a7ec1909911c5f356

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-1.0.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 4218dfb79cec92b2e978537000c534f3ce70ac70d66d8faff2dd2bdad18ab3d0
MD5 3401c34086fe0f307633b1150df85bd2
BLAKE2b-256 1414352606f1c97679dc7045c4db1c4bea20d6022cda81dadef4fc46b192ac18

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-1.0.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 be0ba10e219d714bb882d3a569344ff0c5aa057084049634808ab2aa5eefed0b
MD5 33f29cd7ec2a6272e844484d0c18d1db
BLAKE2b-256 eacde32306e2081caee9a1c6526e2e85ac4a0fc67ff3d96261195edea19b5f63

See more details on using hashes here.

File details

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

File metadata

  • Download URL: quadrants-1.0.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 55.7 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.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 cf020b02ef6ab4acc526a02fe06c010ac9fe8c97a93e6b3c56e6010ed53a38af
MD5 b0ca7459327d0bbc1e7032f5878fbb17
BLAKE2b-256 918d58e8f91851c01fcdf427cb2b33c837d8e023c0494e9a8adcc93cd17fc767

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-1.0.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 85e6d9103efcc145c31a1c9496a906f60121346ee219908de86d7e63d787d110
MD5 89bdeea8d525321016fea6a0652f4c4e
BLAKE2b-256 571d99b5070e4624bb5aa6ed63338d246641b6262dae1efa1c0762c1371f775f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-1.0.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 e703cc8b4c6a29864f1d936c44c6e75c23b5c0da05b4b137ef71ba39c62d1b5d
MD5 43661dae834636c634209cbb8d10b3e9
BLAKE2b-256 46721bd4b6cccbd20101541c2b5a3d81538ccaad52209ac67da7ef33d32044c7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-1.0.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cb02ed33ce13d784890e097aed7d46e847341e0d5918bec61404537a9d5a1305
MD5 db83374106801dec4ff979851feb7d61
BLAKE2b-256 91aa63180297f0bcd11f1a0e83d46977747f095f8d3444b6689a642fd93475fe

See more details on using hashes here.

File details

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

File metadata

  • Download URL: quadrants-1.0.2-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.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0e9ed3ab1635b3691cf534e260736102672a47037883218669b0556a28c2b311
MD5 dbfea5feca0ac4dca8b4a01db0c49ae5
BLAKE2b-256 88edeaa7c61e234fc9e1b1d97d0408c9334162dd4572b7d14862f9349d7f4bdf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-1.0.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 978f56bfb48163e3ac97009306920165bec5da070691100541f7c7c883fcd1d3
MD5 9bf4d0a2e5bbc413ce77c1ce87efd0a8
BLAKE2b-256 106755b7778c839e60d7e737efeda7b343aa9f64b1f3fc70d6296e67590c5946

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-1.0.2-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 5ad1299917589db751c4f43256360679b1dc7917c2cd8c787603bda07f948499
MD5 711161a8a284489b10b3f4b7f0dd7f10
BLAKE2b-256 0c76cbbc52bb785d74cea3177525ac2534db49991ca0f871ade31f396478c174

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-1.0.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 51c04e8e0186d02d1cc4ba7e8c546fc6e702a646e33c249ad9330c7866535030
MD5 8d1e0968f6776460adc8385204adf3af
BLAKE2b-256 cc2a311d8ff1cf777935b1c338a7e6e0751ea91799d5e67ab4da6cc450ba2c7f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: quadrants-1.0.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 55.7 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.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 5b6e049d70cc4e16fd09bfe45bac600de628b864fdaa4771f5daf37962620455
MD5 e63be2cbf950936d61524d36a3c8fcd5
BLAKE2b-256 1a3983912164ef86640eac172054d6422f68d84f776d171d51435111b2175b7c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-1.0.2-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9070442f1d55f145e80d547fd41d4e22e57507f9c955efd6e3b6fb680d11612a
MD5 e86525647b8c5ef3a59d7699f68176ee
BLAKE2b-256 8470e9cf2944d24407f4f2588bd9909bfcf9f16a2094ddac072c09a5e5b8d02a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-1.0.2-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 b4f7d03b342316088b8a5269db7210d3b8cb085f1896e03ffc923d7c9d02349b
MD5 b5a3f12870309dee281a699d92de0332
BLAKE2b-256 b494a094e11b7784a32ada1e7d0b9db998bd935b49046f114cebc4513d5a55a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for quadrants-1.0.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 12266f19e37830ad1f8a7f56b07e0e26169dc1f93252b7626be8f37fcafee42a
MD5 7d072327e1ed8685d872344a7c13ad7c
BLAKE2b-256 768c4dcf87cb6680718b9d4a89711c45e035a95fa6386c2b7adc297e7436ee7e

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