Scalable Matrix Extension (SME)の研究の今後の展望について技術的ポエムを書いてみました.
MEシリーズ
- Apple Silicon M4はM3シリーズからScalable Matrix Extension (SME)命令などが足されている
- SME日記その1: Apple Silicon M4に搭載されたScalable Matrix Extension(SME)のベクトル長(SVL)を取得する
- SME日記その2: Apple Silicon M4にはCVTW命令は備わっていない?
- SME日記その3: Apple Silicon M4にどの命令が実装されているかをsysctl hwの実行結果とドキュメントから推測する
- SME日記その4 Streaming SVE modeでCNTWを実行してみる.
- SME日記その5 Streaming SVE modeでCNTWを実行してみる Part 2
- SME日記その6 Streaming SVE modeでsvcntw()とsvcntsw()を実行してみる
- SME日記その7 svcntw()とRDSVL命令の実行結果の関係性を考察する
- SME日記その8 __arm_new("za")について調べる
- SME日記その9 OpenBLASのSME対応状況について調べる
- SME日記その10 Streaming SVE modeでCNTWを実行してみる(再考)
- SME日記その11 OpenBLASのSSCALでSMEが使われているかを検証してみる Part.1
- SME日記その12 OpenBLASのSSCALでSMEが使われているかを検証してみる Part.2
- SME日記その13 OpenBLASのSSCALでSMEが使われているかを検証してみる Part.3
- SME日記その14 AppleBLASのSSCALでSMEが使われているかを検証してみる Part.1
- SME日記その15 AppleBLASのSGEMMでSMEが使われているかを検証してみる Part.1
Scalable Matrix Extension (SME)について
Scalable Matrix Extension (SME)は,ARM A-Profile の拡張命令で,Apple Silicon M4に搭載された新しい命令セットです.その名の通り,CPUによる高速な行列・ベクトル演算をサポートします.
Apple Accelerate Frameworkを超えるものを作る
Apple Accelerate Frameworkというものがあります.
もちろんAppleもSMEをフル活用した上でApple Accelerate Frameworkを構築しているとは思うのですが,コード最適化の研究者としては,それをさらに上回るものを作ってみたいという欲に駆られています.
特に以前,下記について論文を書いたので,CORDICによる三角関数の高速化には是非とも挑戦したいです.
三角関数については,Apple Accelerate Frameworkでは,vForceというのでサポートされています.
その中でもこれらの関数ですよね.
行列の乗算とかにも興味あります.
中でも次の関数ですよね.
NxバックエンドEMLXに貢献する
このような知見を生かして,Apple Silicon向け機械学習ライブラリMLXやApple Silicon向けNxバックエンドEMLXに貢献したいですね.
EMLXについては, @RyoWakabayashi さんが紹介記事を書いています.