-
Notifications
You must be signed in to change notification settings - Fork 33
[Doc] Update README #617
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Doc] Update README #617
Changes from all commits
e6479a7
e414cae
2cd2317
7974bae
affbd1f
cd0ebaa
520aaea
043c58d
128bb24
0ccb588
64d14cd
c78babf
9d97afc
61c59e0
73affbf
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -25,59 +25,47 @@ This project is now fully independent and does not aim to maintain backward comp | |
|
|
||
| While the repository still resembles upstream in structure, major changes include: | ||
|
|
||
| ### Modernized infrastructure | ||
| ### Platform support | ||
|
|
||
| * Revamped CI | ||
| * Support for Python 3.10–3.13 | ||
| * Support for macOS up to 15 | ||
| * Significantly improved reliability (≥90% CI success on correct code) | ||
| * LLVM 22, ARM (aarch64) support | ||
|
|
||
| ### Structural improvements | ||
|
|
||
| * Added `dataclasses.dataclass` structs: | ||
| ### CI | ||
|
|
||
| * Work with both ndarrays and fields | ||
| * Can be passed into child `ti.func` functions | ||
| * Can be nested | ||
| * No kernel runtime overhead (kernels see only underlying arrays) | ||
| * Kernel-level [code coverage](https://genesis-embodied-ai.github.io/quadrants/user_guide/kernel_coverage.html) — 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 | ||
|
|
||
| ### Removed components | ||
| ### Structural improvements | ||
|
|
||
| To focus the compiler and reduce maintenance burden, we removed: | ||
| * `dataclasses.dataclass` structs — work with ndarrays and fields, nestable, passable to `qd.func`, zero kernel-runtime overhead | ||
| * [`qd.Tensor`](https://genesis-embodied-ai.github.io/quadrants/user_guide/tensor.html) — unified API over fields and ndarrays with per-tensor layout control, pickle support, and a `backend=` switch | ||
| * [`BufferView`](https://genesis-embodied-ai.github.io/quadrants/user_guide/buffer_view.html) — safe sub-range ndarray access with bounds checking in debug mode | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In my view we can consider adstack as being added in Quadrants, given how helpless was the original implementation.
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. can you propose a bullet point please
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. * [`AutoDiff with dynamic loops`](https://genesis-embodied-ai.github.io/quadrants/user_guide/autodiff.html#autodiff-with-dynamic-loops) — computes the gradient of any kernel transparently using reverse-mode differentiation and runtime-based memory allocation.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Actually I don't think it is a "### Structural improvements". Keeping the "### Autodiff" section is probably better.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. So you can keep your description, mine, or a mix of both. |
||
|
|
||
| * GUI / GGUI | ||
| * C-API | ||
| * AOT | ||
| * DX11 / DX12 | ||
| * iOS / Android | ||
| * OpenGL / GLES | ||
| * argpack | ||
| * CLI | ||
| ### Removed components | ||
|
|
||
| ### Performance improvements | ||
| To focus the compiler and reduce maintenance burden, we removed: GUI/GGUI, C-API, AOT, DX11/DX12, iOS/Android, OpenGL/GLES, argpack, CLI. | ||
|
|
||
| #### Reduced launch latency | ||
| ### Performance | ||
|
|
||
| * Release 4.0.0 improved non-batched ndarray CPU performance by **4.5×** in Genesis benchmarks. | ||
| * Release 3.2.0 improved ndarray performance from **11× slower than fields** to **1.8× slower** (on a 5090 GPU, Genesis benchmark). | ||
| * **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) | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We also compile faster now :p
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. could you write a proposed bullet point please
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. * **Faster compilation** — cold compilation of kernels is about 35% faster when `debug=False` |
||
| * **[Fastcache](https://genesis-embodied-ai.github.io/quadrants/user_guide/fastcache.html)** — 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](https://genesis-embodied-ai.github.io/quadrants/user_guide/graph.html)** — `@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](https://genesis-embodied-ai.github.io/quadrants/user_guide/perf_dispatch.html)** — auto-benchmarks multiple kernel implementations and selects the fastest at runtime | ||
| * **[Zero-copy interop](https://genesis-embodied-ai.github.io/quadrants/user_guide/interop.html)** — `to_torch(copy=False)` / `to_numpy(copy=False)` via DLPack on CUDA, CPU, AMDGPU, and Metal; direct torch tensor pass-through into kernels | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
This bullet states that both Useful? React with 👍 / 👎. |
||
|
|
||
| #### Reduced warm-cache latency | ||
| ### SIMT primitives | ||
|
|
||
| On Genesis simulator (Linux + NVIDIA 5090): | ||
| * **[Tile16x16](https://genesis-embodied-ai.github.io/quadrants/user_guide/tile16.html)** — 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](https://genesis-embodied-ai.github.io/quadrants/user_guide/subgroup.html)** — cross-platform `shuffle`, `shuffle_down`, `reduce_add`, `reduce_all_add` across CUDA, AMDGPU, Metal and Vulkan | ||
|
|
||
| * `single_franka_envs.py` cache load time reduced from **7.2s → 0.3s** | ||
| ### Autodiff | ||
|
|
||
| #### Zero-copy Torch interop | ||
| * [**Autodiff with dynamic loops**](https://genesis-embodied-ai.github.io/quadrants/user_guide/autodiff.html#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` | ||
|
|
||
| * Added `to_dlpack` | ||
| * Enables zero-copy memory sharing between PyTorch and Quadrants | ||
| * Avoids kernel-based accessors | ||
| * Significantly improves performance | ||
|
|
||
| ### Compiler upgrades | ||
| ### Debugging & development | ||
|
|
||
| * Upgraded to LLVM 22 | ||
| * Enabled ARM support | ||
| * **[Python backend](https://genesis-embodied-ai.github.io/quadrants/user_guide/python_backend.html)** — `qd.init(qd.python)` interprets kernels as plain Python so they can be stepped through in a standard Python debugger | ||
|
|
||
| --- | ||
|
|
||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How is 'LLVM 22' a platform?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What section do you feel we should put it under? (or what name to give this one?)