use super::*;
use crate::registry::BackendSupport;
use crate::registry::Support;
const VERIFIED: BackendSupport = BackendSupport {
cpu: Support::Verified,
metal: Support::Verified,
cuda: Support::Untested,
};
const VERIFIED_ON_THE_T4: BackendSupport = BackendSupport {
cuda: Support::Verified,
..VERIFIED
};
const VERIFIED_BF16: BackendSupport = BackendSupport {
cpu: Support::Unsupported,
metal: Support::Verified,
cuda: Support::Untested,
};
const UNSUPPORTED_EVERYWHERE: BackendSupport = BackendSupport {
cpu: Support::Unsupported,
metal: Support::Unsupported,
cuda: Support::Unsupported,
};
#[test]
fn the_golden_run_outcome_is_recorded_accurately() {
let descriptor = lookup("BAAI/bge-m3").unwrap();
assert_eq!(descriptor.backends.cpu, crate::registry::Support::Verified);
assert_eq!(
descriptor.backends.metal,
crate::registry::Support::Verified
);
assert_eq!(descriptor.backends.cuda, crate::registry::Support::Verified);
assert_eq!(descriptor.dtype_backends.f32, VERIFIED_ON_THE_T4);
assert_eq!(
descriptor.dtype_backends.f16, UNSUPPORTED_EVERYWHERE,
"F16 misses the row-content tolerance on both the processor and the accelerator"
);
assert_eq!(
descriptor.dtype_backends.bf16, UNSUPPORTED_EVERYWHERE,
"BF16 misses the row-content tolerance on the accelerator; the processor refuses it unconditionally"
);
}
#[test]
fn both_stanford_colbert_entries_pass_every_dtype_on_both_devices() {
for id in [
"colbert-ir/colbertv2.0",
"answerdotai/answerai-colbert-small-v1",
] {
let descriptor = lookup(id).unwrap();
assert_eq!(
descriptor.backends.cpu,
crate::registry::Support::Verified,
"{id}"
);
assert_eq!(
descriptor.backends.metal,
crate::registry::Support::Verified,
"{id}"
);
assert_eq!(
descriptor.backends.cuda,
crate::registry::Support::Verified,
"{id}"
);
assert_eq!(
descriptor.dtype_backends.f32, VERIFIED_ON_THE_T4,
"{id} f32"
);
assert_eq!(
descriptor.dtype_backends.f16, VERIFIED_ON_THE_T4,
"{id} f16"
);
assert_eq!(descriptor.dtype_backends.bf16, VERIFIED_BF16, "{id} bf16");
}
}
#[test]
fn jina_colbert_v2_passes_every_dtype_on_both_devices() {
let descriptor = lookup("jinaai/jina-colbert-v2").unwrap();
assert_eq!(descriptor.backends.cpu, crate::registry::Support::Verified);
assert_eq!(
descriptor.backends.metal,
crate::registry::Support::Verified
);
assert_eq!(descriptor.backends.cuda, crate::registry::Support::Untested);
assert_eq!(descriptor.dtype_backends.f32, VERIFIED);
assert_eq!(descriptor.dtype_backends.f16, VERIFIED);
assert_eq!(descriptor.dtype_backends.bf16, VERIFIED_BF16);
}
#[test]
fn every_registered_multi_vector_entry_has_already_flipped_past_pending() {
for d in all() {
assert_ne!(
d.backends.cpu,
crate::registry::Support::Pending,
"{}",
d.id
);
assert_ne!(
d.backends.metal,
crate::registry::Support::Pending,
"{}",
d.id
);
assert_ne!(
d.backends.cuda,
crate::registry::Support::Pending,
"{}",
d.id
);
for row in [
d.dtype_backends.f32,
d.dtype_backends.f16,
d.dtype_backends.bf16,
] {
for status in [row.cpu, row.metal, row.cuda] {
assert_ne!(status, crate::registry::Support::Pending, "{}", d.id);
}
}
}
}