TinyChain-Inc / TinyChain-Inc/ha-ndarray

[Fusion][F1] Define deferred execution IR and explicit materialization boundaries

Open
#46 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
3
Forks
2
PR merge metrics
No merged PRs in 30d

Description

Objective

Introduce a backend-neutral, typed execution IR for deferred Array expressions without performing automatic fusion yet.

Scope

Operation nodes, inputs/dependencies, shape/dtype/layout metadata, device placement, pure-versus-materializing classification, graph validation, deterministic identity and explicit evaluation/materialization. Preserve eager observable behavior where the public API requires it.

Acceptance criteria

  • IR schema/version and supported-node inventory are documented.
  • Graph identity is deterministic for equivalent supported expressions.
  • Cycles, invalid shapes/dtypes, unsupported operations and cross-device edges fail before dispatch.
  • Aliasing, externally visible reads, transfers, reductions and mutation establish explicit materialization boundaries.
  • IR and direct execution pass the same result/error/property fixtures.
  • IR construction alone does not execute kernels or retain unbounded input data.

Parent: #37

Tembo execution contract

automation:
  eligible: true
  executor_profile: tembo
  readiness: blocked
  primary_repository: TinyChain-Inc/ha-ndarray
  base_branch: main
  writable_scope:
    - src/ir/**
    - src/array.rs
    - src/ops.rs
    - tests/ir/**
    - docs/**
  prerequisites:
    - "#42"
    - "#43"
  concurrency_group: array-execution-ir
  required_commands:
    - "cargo fmt --all -- --check"
    - "cargo test --no-default-features --features cubecl"
    - "cargo test --all-features"
  evidence:
    cpu_conformance: required
    accelerator_conformance: not-required
    actual_browser: not-required
    benchmark_report: not-required
    exact_hardware_and_driver_identity: not-required
  external_actions: none
  draft_pr_only: true
  completion_authority: human
  budget:
    size: large
    max_revisions: 3
    max_wall_minutes: 180

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with prerequisites #42 and #43, then inspect src/ir/, src/array.rs, src/ops.rs, tests/ir/, and the existing docs. Define the documented IR schema and supported nodes, then cover validation, deterministic identity, materialization boundaries, and parity fixtures without executing during construction. Run cargo fmt --all -- --check, cargo test --no-default-features --features cubecl, and cargo test --all-features.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
compilers
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.