ソフトウェア高速化
概要
一口に、ソフトウェアの高速化と言っても非常に範囲が広いです。 現在は主にCPUの機能に応じた細かい最適化手法の研究・実装をしています。
Xbyak
Xbyak はx64用JITアセンブラを実現するためのC++ライブラリです。元々は暗号やコーデックの高速化を容易にするためのツールとして開発を始めました。
2016年頃から、Intelが深層学習フレームワークの中でXbyakを採用し始め、現在はLinux Foundationの UXL (Unified Acceleration Foundation) 管轄の oneAPI/oneDNN のCPUエンジンとして採用されています。
2020年にはスーパーコンピュータ富岳用の Xbyak_aarch64 を富士通と共同開発し、その成果はoneDNNにも取り込まれています。
Intelの最新アーキテクチャへの対応を積極的に進めており、2024年10月現在はAVX-512, APX, AVX10.2を完全サポートしています。
参考
- MKL-DNNで学ぶIntel CPUの最適化手法
- 富岳版XbyakがIntelの深層学習ライブラリoneDNNにmergeされる
- 富岳のディープラーニング処理を支えるJITコンパイラ「Xbyak_aarch64」誕生秘話
高速化方法の解説ブログ
Zenn/herumiでは主に暗号技術の実装について、x64向けアセンブリ言語を用いた最適化やLLVMなどを用いた手法の紹介をしています。