https://github.com/inducer/pytato
Lazily evaluated arrays in Python
https://github.com/inducer/pytato
array arraylang code-generation code-transformation dag data-flow-graph numpy
Last synced: 4 months ago
JSON representation
Lazily evaluated arrays in Python
- Host: GitHub
- URL: https://github.com/inducer/pytato
- Owner: inducer
- License: other
- Created: 2020-10-13T15:56:01.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2025-08-27T16:59:30.000Z (5 months ago)
- Last Synced: 2025-09-08T11:58:08.735Z (4 months ago)
- Topics: array, arraylang, code-generation, code-transformation, dag, data-flow-graph, numpy
- Language: Python
- Homepage:
- Size: 2.43 MB
- Stars: 12
- Watchers: 5
- Forks: 16
- Open Issues: 86
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
Pytato: Get Descriptions of Array Computations via Lazy Evaluation
==================================================================
.. image:: https://gitlab.tiker.net/inducer/pytato/badges/main/pipeline.svg
:alt: Gitlab Build Status
:target: https://gitlab.tiker.net/inducer/pytato/commits/main
.. image:: https://github.com/inducer/pytato/actions/workflows/ci.yml/badge.svg
:alt: Github Build Status
:target: https://github.com/inducer/pytato/actions/workflows/ci.yml
.. image:: https://badge.fury.io/py/pytato.png
:alt: Python Package Index Release Page
:target: https://pypi.org/project/pytato/
Imagine TensorFlow, but aimed at HPC. Produces a data flow graph, where the
edges carry arrays and the nodes are (give or take) static-control programs
that compute array outputs from inputs, possibly (but not necessarily)
expressed in `Loopy `__. A core assumption is
that the graph represents a computation that's being repeated often enough that
it is worthwhile to do expensive processing on it (code generation, fusion,
OpenCL compilation, etc).
* `Documentation `__ (read how things work, see an example)
* `Github `__ (get latest source code, file bugs)
Pytato is licensed to you under the MIT/X Consortium license. See
the `documentation `__
for further details.
Numpy compatibility
-------------------
Pytato is written to pose no particular restrictions on the version of numpy
used for execution. To use mypy-based type checking on Pytato itself or
packages using Pytato, numpy 1.20 or newer is required, due to the
typing-based changes to numpy in that release.
Furthermore, pytato now uses type promotion rules based on those in
`numpy `__ that should result in the same
data types as the currently installed version of numpy.