The Tapestry Plan

This post develops part of this document:

The Tapestry Plan

Overview

I’m developing out a project in defining the bottom-up sharding and scheduling of grid-scale tensor expression languages; its name is “Tapestry”, for the way expression value flow graphs weave between execution contexts.

I am of the opinion that this is a project which requires no new computer science; just the careful and methodical application of pieces from a number of sub-fields.

As there are many projects exploring how to take existing evaluation environments and back-fit sharding machinery too them, and as those projects are continuing to make reasonable progress, I feel that there’s no short-term urgency to solve this; so I’m taking the pure-language design route.

  • We don’t have users, and won’t have them till the whole stack works. We won’t have to worry about maintaining semantics or operational decisions when problems are encountered with them.

  • We will have some trouble acquiring people to help; everything is going to appear very abstract until the functional machinery is in-place.

Stages

Tapestry will be built out in the following stages of work, which correspond to a series of technical embeddings going deeper into the stack, and will remain as rewrite layers.

  • Tensor Valued Block Operation Graph Language
  • Block Operation Index Projection Sharding Graph Language
  • Block Operation Substitution Rewrite Graph Language
  • Block Operation Fusion Rewrite Graph Language
  • Block Operation Rewrite Sharding Optimizer
    • Configurable Execution Cost Model
    • Pareto-Front Stochastic Search Optimizer
  • Block Shard Operational Embedding
  • Block Shard Grid Host
    • Shard Scheduling
    • Shard Metric Instrumentation

When this stack is semantically complete, even in a preview form; we can begin to preview applications written in the block operation graph language.

From this stage onward, development will bifurcate:

  • Applications and extensions written above the block operation language; and
  • Optimization research and operational implementation work done below the block operation language.

The goal is:

Provide an existence proof that a provably shardable formal language is possible (we can prove that it can be made fast); then make it easy to program for to get more help; then make it fast.