INT8の演算器で高精度の行列積、無理だと思ってた?「GEMMul8」

GEMMul8(ジェミュレート)
INT8・FP8 の低精度行列演算器で、高精度の行列積などを模擬する GPU 向けライブラリ
GitHub
公開
正式公開 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 の変更になっています。