研究
ソフトウェア⾼速化
ハードウェアの性能を限界まで使いたい
ソフトウェアの⾼速化、特にアセンブリ⾔語レベルでのCPUに密着した最適化に興味があります。
プログラミング⾔語やコンパイラ‧ハードウェアの進展に伴い、そういった細かい最適化をする機会は減っていますが、ブラウザの暗号通信、⽣成AIの中⼼部分などではまだまだ必要な場⾯があります。
Xbyak
Xbyakと呼ばれるJITアセンブラを開発しています。
C++は速度が必要な場面で使われることが多いプログラミング言語ですが、実行バイナリはコンパイル時に確定しています。
Xbyakを使うと実行時に状況に応じた最適なコードを生成し、実行できるプログラミング手法を支援します。
高機能暗号でしばしば使われるペアリングと呼ばれる数学の関数をXbyakを使って実装することで何度か世界最速性能を達成しています。
また、CPUのエミュレータや主にIntel CPU向けAIフレームワークoneDNNなどの実行エンジンで利用されることが増えています。
これは、AIフレームワークでは実行時に決まったパラメータに応じた最適化や、実行するCPUに応じて最新命令セットを活用する場面が多いからです。
発売前のCPUの命令セットに対応することもあり、GitHub上でIntelの開発者からしばしば機能追加の依頼を受けています。
CPUに応じたアセンブリ言語の詳細な知識が必要なため、活用するためのハードルは高いですがうまくはまるとよいパフォーマンスを得られます。
対応CPUの拡大
Intel CPU向けだったoneDNNをスーパーコンピューター富岳でも動かそうというプロジェクトの中で、富岳のCPU(A64FXというARMv8.2-AベースのCPU)向けのXbyak_aarch64の開発に関わりました。
またRISC-V用Xbyak_riscvも開発し、少しずつですが利用され始めています。