fullseye

matmul_ozaki — DRIVE ozaki op

使い方

FP64 の精度の行列積 A @ B を、正確な低精度の部分積から組む(Ozaki-I / Ozaki-II)。

scheme="ozaki1": n_slices 枚に切る(積 n(n+1)/2 回)。n_slices=None なら、誤差の保証上界が tol · (|A||B|)_ij 以下になる最少の枚数を自動で選ぶ(1〜16 枚)。届かなければ on_insufficient="raise" で ValueError、"fallback" で普通の float64 の積を返す(この場合だけ再現性の約束は外れる。return_info=True の fallback で分かる)。 scheme="ozaki2": 法の数を n_slices(2〜20)で必ず指定する(積 n 回)。自動の選択は無い。 return_info=True で (C, info)(n_slices・n_products・scheme・fallback)。

どちらの方式も、同じ入力なら内側の並べ替え・BLAS のスレッド数に依らず同じビット。CPU では DGEMM より 1〜2 桁遅い (module の docstring の使い分けを参照)。

参考(サンプルデータ・文献)

実行できる例(この op を実際に呼ぶ検証済みサンプル)

型が繋がる次の op(matrix を入力に取れる)

world_camera · lidar_scan · relative_motion · foe_from_motion · flow_from_depth_motion · ttc_truth · world_materials · mesh_signed_volume

同カテゴリ(ozaki)

matmul_reproducible · ozaki_error_bound · cross_covariance_reproducible · kabsch_reproducible · fp64_emulation_probe


Provenance: ozakimm.py — DRIVE operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.