INT8の演算器で高精度の行列積、無理だと思ってた?「GEMMul8」
- 公開
- 正式公開 2025-03-28
- 作り手
- RIKEN R-CCS(チーム)
- 対応
- Linux(NVIDIA CUDA/AMD HIP の GPU)
- 価格
- 無料(MIT ライセンス)
- 評価
- GitHub のスター 102(2026-10-22)
どんなアプリか
GEMMul8 is a library for emulating GEMM using low-precision matrix engines, including INT8 and FP8.
RIKEN R-CCS、GitHub の README
GEMMul8 は、INT8 や FP8 といった低精度の行列演算器を使って GEMM(一般の行列積)を模擬するライブラリです。現在の版では、この仕組みを対称行列・エルミート行列・三角行列の演算や、三角方程式の求解にも広げています。
土台は中国剰余定理を使う尾崎スキーム II です。法の数(num_moduli)を増やすほど精度が上がり、そのぶん計算時間が増えます。
対応する各ルーチンで INT8 と FP8 のどちらの方式を使うか選べます。低精度の演算器を使いながら、ビット単位で再現できる結果が得られる設計だと README は説明しています。
使い方は2通りあります。ソースコードから gemmul8::gemm などの関数を直接呼ぶ方法と、LD_PRELOAD を使って既存の BLAS の呼び出しを横取りする「Hook Mode」です。
README には、精度の目安となる num_moduli の設定表が載っています。ただしこれは出発点であり、精度を保証するものではないと明記されています。
料金とデータの置き場所
GitHub で MIT ライセンスのもと公開されています。
入れる前に
動かすには Linux、GNU Make 3.81 以降、C++20 に対応した C++ コンパイラが必要です。
NVIDIA の GPU では CUDA Toolkit 12.9 以降、AMD の GPU では ROCm 7.0 以降が求められます。
Hopper 世代の GPU では、FP8 方式の模擬には対応していないと README に注意書きがあります。
v3.2.0 以前から移る場合は注意が必要です。TRSM のブロックサイズの設定がハンドルごとの指定に変わり、互換性のない API の変更になっています。