Skip to main content

What is Quadrants Typing?

A typing layer for the quadrants, plus PEP 561 type stubs for the quadrants package itself. Installing this one package gives quadrants users both:

  • quadrants_typing — generic Vec, Mat, NDArray, dimension, and dtype types for annotating quadrants kernels. Import it under the conventional alias:

    import quadrants_typing as qdt
    import quadrants as qd
    
    @qd.kernel
    def add(
        x: qdt.NDArray[qd.i32, qdt.Dim1], 
        y: qdt.NDArray[qd.i32, qdt.Dim1],
    ) -> None:
        for i in range(x.shape[0]):
            x[i] = y[i]
    
  • Automatic quadrants stubs — type checkers (pyright, mypy) discover the bundled quadrants-stubs package via PEP 561 with no configuration, so import quadrants is fully typed.

Quadrants Replacements

Type annotations replaces directly some quadrants functions, mostly from qd.types. Here is a full table:

  • N,R,C in {1,2,3,4,5,6,7,8}
  • dtype n {qd.u8, qd.u16, qd.u32, ... etc.}
Description qdt version qd version Example
Concrete tensor type qdt.NDArray[qd.<dtype>, Dim<N>] qd.types.NDArray[qd.<dtype>, <N>] qdt.NDArray[qd.i32, Dim3]
Templated tensor type qdt.NDArray[T, DimAny] qd.types.ndarray(dtype=None, ndim=None) def f[T: (qd.i32, qd.f32)](arr: qdt.NDArray[T, DimAny])
Vector type qdt.Vec[qd.<dtype>, Dim<N>] qd.types.vector(<N>, qd.<dtype>) qdt.Vec[qd.f32, Dim3]
Matrix type qdt.Mat[qd.<dtype>, Dim<R>, Dim<C>] qd.types.matrix(<R>, <C>, qd.<dtype>) qdt.Mat[qd.f32, Dim3, Dim4]
Compile-time value qdt.Template[T] qd.template() qdt.Template[bool]

If you would like to construct tensors with a rank greater than 8, or vectors and matrices with any dimension longer than 8, you can. See weird_hacks example for how to create the annotation, or use qd.types.vector or qd.types.matrix if you only need a constructor (e.g. for a local array).

Examples

Runnable, annotated example programs live in examples/. Run one by name:

pixi run example init_ndarray

How Finished is This?

Not at all! There's lots of work still to be done :P. Please help!

Omissions

Names present in quadrants that we intentionally do not stub in qdt, with the reason / recommended alternative:

Intentional

  • qd.types.struct: use dataclasses.dataclass
  • qd.types.NDArray: superseded by qdt.NDArray[qd.<dtype>, Dim<N>]
  • qd.types.ndarray: superseded by qdt.NDArray[T, DimAny]
  • qd.types.Template: superseded by qdt.Template[T]
  • qd.template: superseded by qdt.Template[T]

Todo

  • qd.types.ref: todo(real_func)
  • qd.types.quant.* (int, float, fixed): todo(field)
  • qd.types.sparse_matrix_builder: todo(sparse_matrix)
  • quadrants.lang.simt.grid, .tile_slicing: todo(simt) — simt.block, .warp, .subgroup (incl. its reductions/sorting re-exports) are stubbed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quadrants_typing-0.2.3.tar.gz (19.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

quadrants_typing-0.2.3-py3-none-any.whl (27.8 kB view details)

Uploaded Python 3

File details

Details for the file quadrants_typing-0.2.3.tar.gz.

File metadata

  • Download URL: quadrants_typing-0.2.3.tar.gz
  • Upload date:
  • Size: 19.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for quadrants_typing-0.2.3.tar.gz
Algorithm Hash digest
SHA256 671171ac596fbfc23b4bfac9cffd90c6b9dcdbf7447a9795e61cc8979d9848ab
MD5 10f0a72273004f3feb9f0c6c7db170fa
BLAKE2b-256 dea48e1566222a61d7e0756ab5c8c3d522deda9ebef1eab23119e775d01a9b92

See more details on using hashes here.

Provenance

The following attestation bundles were made for quadrants_typing-0.2.3.tar.gz:

Publisher: publish.yml on D0liphin/quadrants-typing

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file quadrants_typing-0.2.3-py3-none-any.whl.

File metadata

File hashes

Hashes for quadrants_typing-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 9d1ccca26c7014f25cb2795c0b5aeb40b58d240634c5940b0b31b998771e8857
MD5 6769147061df477e1f673f5d6bd64c59
BLAKE2b-256 c18f4bca58f0e44675366ebd2f5776e9373b9b4f5ab3596dc3d91217c9ba94b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for quadrants_typing-0.2.3-py3-none-any.whl:

Publisher: publish.yml on D0liphin/quadrants-typing

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.2.4

2 files

This release

0.2.3 This release

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page