use super::impl_id::ImplId;
use super::record::{HwStamp, MissRecord, TELEMETRY_SCHEMA_VERSION};
use super::structure_key::{FdxOperandDesc, StructureKeyProvider};
use crate::fkc::ResolvedLayout;
pub use crate::fkc::is_generic_contract;
#[derive(Debug, Clone)]
pub struct AdmittedContract {
pub impl_id: ImplId,
pub layouts: Vec<ResolvedLayout>,
}
pub fn detect_miss(
best: &AdmittedContract,
op_class: &str,
operands: &[FdxOperandDesc],
arch: &str,
provider: &dyn StructureKeyProvider,
hw: HwStamp,
) -> Option<MissRecord> {
detect_miss_precomputed(
is_generic_contract(&best.layouts),
best.impl_id.clone(),
op_class,
operands,
arch,
provider,
hw,
)
}
pub fn detect_miss_precomputed(
is_generic: bool,
fallback: ImplId,
op_class: &str,
operands: &[FdxOperandDesc],
arch: &str,
provider: &dyn StructureKeyProvider,
hw: HwStamp,
) -> Option<MissRecord> {
if !is_generic {
return None;
}
let wanted = provider.structure_key(op_class, operands, arch)?;
Some(MissRecord {
schema: TELEMETRY_SCHEMA_VERSION,
wanted,
fallback,
count: 1,
hw,
})
}
#[cfg(test)]
mod tests {
use super::*;
use crate::fkc::Tri;
use crate::telemetry::structure_key::{Contiguity, StructureKeyToken};
use fuel_ir::dispatch::OpKind;
use fuel_ir::{BackendId, DType};
fn layout(contiguous: Tri, strided: Tri) -> ResolvedLayout {
ResolvedLayout {
contiguous,
strided,
broadcast_stride0: strided,
start_offset: Tri::Rejected,
reverse_strides: Tri::Rejected,
}
}
struct CannedProvider {
token: String,
}
impl StructureKeyProvider for CannedProvider {
fn structure_key(
&self,
op_class: &str,
operands: &[FdxOperandDesc],
_arch: &str,
) -> Option<StructureKeyToken> {
let flipped = operands.iter().any(|o| o.flipped);
Some(StructureKeyToken(format!(
"{op_class}:{}:flipped={flipped}",
self.token
)))
}
}
fn impl_id(kernel_source: &str) -> ImplId {
ImplId {
backend: BackendId::Cuda,
op: OpKind::MatMul,
dtypes: vec![DType::F16, DType::F16, DType::F16],
kernel_source: kernel_source.into(),
kernel_revision_hash: 0xabc,
}
}
fn hw() -> HwStamp {
HwStamp {
compute_capability: Some((8, 9)),
hardware_sku: "NVIDIA GeForce RTX 4070".into(),
driver_version: "552.44".into(),
}
}
fn generic_layouts() -> Vec<ResolvedLayout> {
vec![layout(Tri::NotApplicable, Tri::Accepted); 2]
}
fn specialized_layouts() -> Vec<ResolvedLayout> {
vec![layout(Tri::Required, Tri::Rejected); 2]
}
fn operand() -> FdxOperandDesc {
FdxOperandDesc {
dtype: DType::F16,
contiguity: Contiguity::Contiguous,
broadcast: false,
flipped: false,
shape: vec![128, 256],
strides: vec![256, 1],
align_bytes: 256,
}
}
#[test]
fn generic_contract_classifier() {
assert!(is_generic_contract(&generic_layouts()));
assert!(!is_generic_contract(&specialized_layouts()));
assert!(!is_generic_contract(&[]), "empty is not generic");
}
#[test]
fn generic_only_match_emits_a_miss_record() {
let best = AdmittedContract {
impl_id: impl_id("baracuda-generic-strided"),
layouts: generic_layouts(),
};
let provider = CannedProvider { token: "mm".into() };
let miss = detect_miss(&best, "matmul", &[operand()], "sm_89", &provider, hw())
.expect("generic-only cell must emit a miss");
assert_eq!(miss.schema, TELEMETRY_SCHEMA_VERSION);
assert_eq!(miss.fallback, impl_id("baracuda-generic-strided"));
assert_eq!(
miss.wanted,
StructureKeyToken("matmul:mm:flipped=false".into())
);
assert_eq!(miss.count, 1);
assert_eq!(miss.hw, hw());
}
#[test]
fn tight_specialized_match_emits_no_miss() {
let best = AdmittedContract {
impl_id: impl_id("baracuda-mm-contig"),
layouts: specialized_layouts(),
};
let provider = CannedProvider { token: "mm".into() };
assert!(
detect_miss(&best, "matmul", &[operand()], "sm_89", &provider, hw()).is_none(),
"an admissible specialized contract is not a miss"
);
}
#[test]
fn unlinked_provider_yields_no_miss() {
use crate::telemetry::structure_key::NullStructureKeyProvider;
let best = AdmittedContract {
impl_id: impl_id("baracuda-generic-strided"),
layouts: generic_layouts(),
};
assert!(
detect_miss(
&best,
"matmul",
&[operand()],
"sm_89",
&NullStructureKeyProvider,
hw()
)
.is_none(),
"no structure key ⇒ no miss demand signal"
);
}
#[test]
fn flipped_operand_surfaces_in_wanted_token() {
let best = AdmittedContract {
impl_id: impl_id("baracuda-generic-strided"),
layouts: generic_layouts(),
};
let flipped = FdxOperandDesc {
flipped: true,
contiguity: Contiguity::Strided,
..operand()
};
let provider = CannedProvider { token: "mm".into() };
let miss = detect_miss(&best, "matmul", &[flipped], "sm_89", &provider, hw())
.expect("generic-only cell must emit a miss");
assert_eq!(
miss.wanted,
StructureKeyToken("matmul:mm:flipped=true".into()),
"the flip must survive to the demand token"
);
}
}