Welcome to arraycontext
’s documentation!¶
GPU arrays? Deferred-evaluation arrays? Just plain numpy
arrays? You’d like your
code to work with all of them? No problem! Comes with pre-made array context
implementations for:
arraycontext
started life as an array abstraction for use with the
meshmode
unstrucuted discretization package.
Design Guidelines¶
Here are some of the guidelines we aim to follow in arraycontext
. There
exist numerous other, related efforts, such as the Python array API standard. These
points may aid in clarifying and differentiating our objectives.
The array context is about exposing the common subset of operations available in immutable and mutable arrays. As a result, the interface does not seek to support interfaces that provide, enable, or are typically used only with in-place mutation.
For example: The equivalents of
numpy.empty()
were deprecated and will eventually be removed.Each array context offers a specific subset of of
numpy
underarraycontext.ArrayContext.np
. Functions under this namespace must be unconditionallynumpy
-compatible, that is, they may not offer an interface beyond what numpy offers. Functions that are incompatible, for example by supporting tag metadata (cf.arraycontext.ArrayContext.einsum()
) should live under theArrayContext
directly.Similarly, we strive to minimize redundancy between attributes of
ArrayContext
andarraycontext.ArrayContext.np
.For example:
ArrayContext.empty_like
was deprecated.Array containers are data structures that may contain arrays. See
arraycontext.container
. We strive to support these, where sensible, inArrayContext
andarraycontext.ArrayContext.np
.
Contents¶
- The Array Context Abstraction
- Implementations of the Array Context Abstraction
- Array context based on
numpy
- Array context based on
pyopencl.array
- Lazy/Deferred evaluation array context based on
pytato
- Array context based on
jax.numpy
numpy
coverage
- Array context based on
- Array Containers
ArrayContainer
ArrayContainerT
NotAnArrayContainerError
- Serialization/deserialization
- Context retrieval
MultiVector
support- Canonical locations for type annotations
- Containers with arithmetic
- Containers based on
dataclasses
- Traversing containers
map_array_container()
multimap_array_container()
rec_map_array_container()
rec_multimap_array_container()
map_reduce_array_container()
multimap_reduce_array_container()
rec_map_reduce_array_container()
rec_multimap_reduce_array_container()
stringify_array_container_tree()
- Traversing decorators
- Freezing and thawing
- Flattening and unflattening
- Numpy conversion
- Algebraic operations
- Other functionality
- Installation
- User-visible Changes
- Licensing
- Acknowledgments
- 🚀 Github
- 💾 Download Releases