MATLABのパフォーマンス

MATLABコードのパフォーマンスを最適化

MATLABのさらなる高速化

R2015aで導入された MATLAB®実行エンジンは、准时制コンパイルを使用してすべての MATLABコードを高速化します。准时制コンパイルは、お使いの MATLABコード向けおよび特定のハードウェア向けに最適化されたネイティブ マシン レベルのコードを生成します。実行エンジンのアーキテクチャは、組み込み関数のより高速な呼び出しや、より高速なインデックス演算など、各リリースでさらなる最適化が可能です。また、MATLABの主要な関数の多くは、パフォーマンス向上のため暗黙的にマルチスレッド化されます。

MATLABのパフォーマンスは、実際のユーザーワークフローを表すユニット操作と完全なアプリケーションの両方をカバーする一連のベンチマークを使用して測定されます。これらのベンチマークを、MATLABのリリースサイクル中に、さまざまなハードウェアやオペレーティング システム上で複数回実行し、新しい最適化の妥当性確認、パフォーマンス低下の検出と対処、オペレーティング システム固有の問題の特定などを行います。

パフォーマンス改善の具体的な内容については、MATLABリリースノートをご参照ください。MATLAB R2019b以降、リリースノートのパフォーマンスの項には、以前の MATLABバージョンとの比較による改善された実行時間の測定値が記載されています。


MATLABパフォーマンス テスト スイートでの高速化の平均値。

MATLABプロファイラーを使用して、コードのボトルネックを特定。

MATLABコードのパフォーマンス向上

コードのパフォーマンスを向上させるための最初の手順は、ボトルネックを特定することです。たとえば、以下を行うことができます。

  • 抽搐toc、および时间などの関数でコードの実行時間を測定
  • MATLABプロファイラーを使用して、プログラムのどの部分の実行に最も時間がかかるかを確認
  • MATLABコードアナライザーを使用して、パフォーマンスを向上させるための提案を追加

コードのボトルネックを特定すれば、既知のプログラミング手法でコードを高速化できる場合が多くあります。その中でも特によく使われる手法が、配列の事前割り当てとベクトル化です。事前割り当てにより、動的なメモリの割り当てを回避することで、パフォーマンスを向上させることができます。ベクトル化により、単一のコマンドでベクトルのすべての要素を操作することで、ループを回避することができます。これらの手法を組み合わせることで、コードを大幅に高速化することができます。

必要に応じ、お使いのアプリケーションの計算負荷の高い部分をコンパイル言語で記述することにより、パフォーマンスを向上させることができます。MATLABでは、墨西哥関数を使用することで、高性能な C、C++、FORTRAN语言のコードを MATLABの組み込み関数と同様に呼び出すことができます。MATLAB编码器™ を使用すると、MATLABコードを自動的に 墨西哥ファイルに変換することができ、実行速度が格段に向上します。


並列計算の使用でハードウェアを有効活用

ハードウェアのリソースのすべてに明示的にアクセスする並列計算を使用して、計算量の多い問題やデータ集約型の問題を解くことができます。MATLABの分かりやすさと使いやすさによって、複数のプロセス、複数のスレッド、GPUのすべてに拡張するための機能を活用することができます。1.台のマシンで開発と実行ができ、再コーディングをする必要なく計算クラスターやクラウドに実行を拡張することができます。


並列計算を使用して、すべてのハードウェアリソースを明示的に使用。