From 16f3383bfb9b64d567231a25eed0670cda0ed573 Mon Sep 17 00:00:00 2001 From: Mathieu Poumeyrol Date: Fri, 30 Aug 2024 11:12:03 +0200 Subject: [PATCH] more fixes around einsum and opaue facts --- core/src/model/typed.rs | 2 ++ core/src/ops/einsum/eval.rs | 7 +++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/core/src/model/typed.rs b/core/src/model/typed.rs index 07923c0d16..ca11d6f339 100644 --- a/core/src/model/typed.rs +++ b/core/src/model/typed.rs @@ -184,12 +184,14 @@ impl TypedModel { "Inconsistent model, output types mismatch. Op says: {:?}, node says: {:?}. {} with inputs {:?}. {}", output_facts, node.outputs.iter().map(|o| &o.fact).collect::>(), node, input_facts, node) } + /* this is not true for regularly packed values if let Some(k) = node.op_as::() { ensure!( !k.0.datum_type().is_opaque() || k.1.is_some(), "Node {node} is missing an opaque fact" ); } + */ } for node in &self.nodes { for (ix, output) in node.outputs.iter().enumerate() { diff --git a/core/src/ops/einsum/eval.rs b/core/src/ops/einsum/eval.rs index 3f6489a30b..044c7070c2 100644 --- a/core/src/ops/einsum/eval.rs +++ b/core/src/ops/einsum/eval.rs @@ -30,13 +30,12 @@ pub fn eval_t( .iter() .map(|t| { if t.datum_type() == Opaque::datum_type() { - dbg!(t); - todo!(); + bail!("Unoptimized einsum execution with BlockQuantized input is not implemented."); } else { - t.shape() + Ok(t.shape()) } }) - .collect(); + .collect::>()?; let output_shape = output_shape(expr, &shapes); let inputs: TVec> = inputs.iter().map(|t| t.cast_to::()).collect::>()?;