Conversation
6233c2f to
7ae4f48
Compare
7ae4f48 to
276d196
Compare
|
Added a negative destination-stride regression test in commit |
Canonical upstream correctionThe Faer repository's Cargo metadata and current upstream activity identify Therefore GitHub #269/#270 should be treated only as a public implementation prototype and review artifact, not as an upstream issue/PR. The current prototype head remains This workspace has no Codeberg API token or accepted Codeberg SSH key, so I cannot create the canonical issue/PR from here. No strided-rs adoption or dependency pin will be made against this unreleased prototype. The downstream prerequisite remains open until the canonical Codeberg API request is reviewed, released, and adopted with the tests and t1/t4 evidence required by this issue. |
Summary
Add a typed write-only destination for overwrite-only matrix multiplication:
MatUninitMutoverMaybeUninit<T>storage;matmul_with_conj_uninitwith explicitPar;gemmpath withread_dst = false;MatMutonly after every logical output element has been written;The API preserves the existing initialized matmul entry points. A destination made with
from_raw_parts_mutretains the existing raw-view safety preconditions, including exclusive borrowing, valid allocation, and non-overlapping logical elements.Contract
The implementation does not read prior destination values in overwrite mode, does not use
assume_initor zero-fill an output-sized temporary, and accepts explicit parallelism rather than ambient Rayon state. On panic, the caller retainsMaybeUninit<T>storage and no initialized reference is exposed.Downstream tracking: tensor4all/strided-rs#198
Upstream request: #269
Verification
cargo test --workspace --quiet(Faer 197 passed, 2 ignored; faer-ffi 37 passed)cargo check --workspace --all-targetscargo check -p faer --no-default-features --features linalgRUSTDOCFLAGS="-D warnings" cargo doc --workspace --no-depsgit diff --check