MATLAB ユーザーコミュニティー

MATLAB & Simulink ユーザーコミュニティー向け日本語ブログ

Apple Silicon 対応の MATLAB(ベータ版)で遊んでみる!

※この投稿は 2022 年 5 月 5 日に The MATLAB blog (Mike Croucher) に投稿されたものの抄訳です。ベータ版の利用期限は 8 月31日まで。MathWorks アカウントだけでどなたでも利用可能です。ダウンロードはこちらからどうぞ!


Apple が新しい ARM ベースのプロセッサの最初のバージョンである M1 チップを発表したのが 2020 年 11 月。界隈では大きな話題になりました。この新しいハードウェアでいつも使っているソフトウェアを試したい!と思うのが人情ですが、小さな問題がありました。

M1 対応の MATLAB がない・・

MATLAB、Simulink、Simscape のような複雑なソフトウェアを新しい CPU アーキテクチャに移植するには、かなりの時間を要します。それこそ何十人年という単位です。もちろん Apple はこのことを理解していて、2005 年の PowerPC から Intel への移行の際に行ったように、Rosetta 2 を用意してくれていました。Intel プロセッサをターゲットにしたソフトウェアも、Rosetta 2 を介して実行できますので、各ソフトウェアベンダーは移行を管理する時間を稼ぐことができます。 MATLAB も R2020b Update 3 以降、Rosetta 2 を介して Apple Silicon Mac 上で MATLAB を使うことができます。

Apple Silicon 対応の MATLAB ベータ版提供開始!

M1 のリリース以来「Apple Silicon のネイティブ対応はいつになるのか?」という質問が数多く寄せられましたが、実はR2022a のベータ版(https://www.mathworks.com/support/apple-silicon-r2022a-beta.html)がすでに提供されています。MATLABのみ(ツールボックスや Simulink はまだない)ですしまだベータ版。本番活用にどうぞ!とはまだ言えませんが、是非試してみて、何か気が付いた点があれば、フィードバックフォーム から教えてください。

ベータ版を試してみた結果・・

M1 Pro(CPUコア10個、GPUコア16個搭載)で Apple Silicon 対応の MATLAB ベータ版を起動して、まずお決まりの bench 関数。>> bench(2) でベンチマークを 2 回実行してみました。

同じマシン上で、Rosetta 2 で動作するR2022a と比較してみます。

すべての項目で Rosetta 2 上で動作する製品版 R2022a よりも、ベータ版の方がよいパフォーマンスを示しています。 出だしは好調です。当然すべての計算において同じ結果となるとは限らないので、Rosetta 2 で動かす R2022a よりパフォーマンスが劣るものが合ったら、ぜひフィードバックしてください。

いくつか細かく見てみましょう。

ODEの大幅な処理速度向上

ベータ版では常微分方程式(ODE)を解く処理速度が特に良くなっています。実際、Apple Silicon 対応 MATLAB での ODE 計算結果は、R2022a のベンチ結果に並べられているものの中で最速です。 開発チームに確認してみました。ODE はシーケンシャルなプログラムなので、その性能は1つの CPU コアの性能に大きく依存するんだとか。「よりアグレッシブな out-of-order パイプラインは、シーケンシャルプログラムの命令レベル並列処理(Instruction level parallelism: ILP)を大幅に向上させることができます。一例として、M1では、より広いデコーダ、イシューキュー、レジスタのリネーム、より多くのALU、およびより大きな L1キャッシュが含まれています。その結果、ODEは x86 アーキテクチャと比較して、M1 上でより良いパフォーマンスを発揮します。」とのこと。

LU 分解のパフォーマンス

ベータ版での LU 分解の処理速度は悪くないのですが、びっくりするほどではありませんでした。 製品版リリースではもっと良いパフォーマンスが期待できるのか、開発チームに聞いてみました。LU 分解の性能は2つの事柄に依存します。基礎となる BLAS ライブラリの速度と、それを包む LAPACK ライブラリの速度です。BLAS と LAPACK には、いくつかの実装があり、その中から選択することができます。 x86 ハードウェアの場合、MATLAB は Intel MKL または AMD AOCL の BLAS と LAPACK を使用しています。

今回のベータ版では、BLASルーチンには最適化された OpenBLAS ライブラリを使用していますが、LAPACK の reference version を使用しています。 つまり、ベータ版の LU 分解の背後にある LAPACK コードは、まったく最適化されていない状態。ここについては現在、何が最善の方法を確認するために選択肢を探っています。

M1 が M1 pro を上回ることもある

bench 関数で使われる計算には登場していませんが、M1 pro が M1 に負ける例も少なからず見られました。 これはほとんどの場合、マルチスレッドのオーバーヘッドに関連しています。基本的に、M1 pro の追加コアをすべてうまく利用するために、MathWorks はいくつかのさらなるチューニングを行う必要がありますね。

Over to you!

ベータ版は 2022/8/31 までの限定公開中(ここから入手)です。いじめ倒して、壊して(?)結果を教えてください。コメント・フィードバックお待ちしています!

 

|
  • print
  • send email

Comments

To leave a comment, please click here to sign in to your MathWorks Account or create a new one.