Get Descriptions of Array Computations via Lazy Evaluation
Project description
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)
Example:
import pytato as pt import numpy as np ns = pt.Namespace() pt.SizeParameter(ns, "n") # -> prescribes shape=(), dtype=np.intp a = pt.Placeholder(ns, "a", "n,n", dtype=np.float32) # Also: pt.roll # If we can: np.roll a2a = a@(2*a) aat = a@a.T # FIXME: those names are only local...? # maybe change name of DictOfNamedArrays result = pt.DictOfNamedArrays({"a2a": a2a, "aat": aat}) prg = pt.generate_loopy(result)
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.