最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

インライン化の制御

以下のような場合はインライン化を制限します。

  • 関数の過度なインライン化によって、生成コードのサイズ制限を超えている。たとえば、ステートメント coder.inline('always') が特定の関数内に含まれているとします。そして、コード内の多数の異なる場所でその関数を呼び出します。関数が呼び出されるたびにインライン化されるため、生成コードのサイズは増加します。ただし、呼び出しサイトは異なっていなければなりません。たとえば、インライン化される関数がループ内で何度呼び出されても、インライン化によってコード サイズが大きくなることはありません。

  • RAM またはスタック領域が制限されている。

インライン化を制御したり、インライン化を完全に無効にできます。コマンド ラインでインライン化を無効にするには、codegen コマンドの -O disable:inline オプションを使用します。このオプションは、すべての関数のインライン化を無効にします。

インライン化される関数のサイズの制御

MATLAB® Coder™ アプリまたはコマンド ライン インターフェイスを使用して、インライン化可能な関数の最大サイズを制御できます。関数のサイズは、実際の MATLAB 命令でもターゲット プロセッサの命令でもなく、抽象命令数に関して測定されます。必要なインライン化の動作が行われるようにこのパラメーターを使って試します。

  • アプリを使用して、[プロジェクトの設定] ダイアログ ボックスの [すべての設定] タブで、[インラインしきい値] フィールドの値を必要な最大サイズに設定します。

  • コマンド ラインで、codegen 構成オブジェクトを作成します。InlineThreshold プロパティの値を必要な最大サイズに設定します。

    cfg = coder.config('lib');
    cfg.InlineThreshold = 100;

    この構成オブジェクトを使用してコードを生成します。

インライン化後の関数のサイズの制御

MATLAB Coder アプリまたはコマンド ライン インターフェイスを使用して、インライン化後の関数の最大サイズを制御できます。関数のサイズは、実際の MATLAB 命令でもターゲット プロセッサの命令でもなく、抽象命令数に関して測定されます。必要なインライン化の動作が行われるようにこのパラメーターを使って試します。

  • アプリを使用して、[プロジェクトの設定] ダイアログ ボックスの [すべての設定] タブで、[最大インラインしきい値] フィールドの値を必要な最大サイズに設定します。

  • コマンド ラインで、codegen 構成オブジェクトを作成します。InlineThresholdMax プロパティの値を必要な最大サイズに設定します。

    cfg = coder.config('lib');
    cfg.InlineThresholdMax = 100;

    この構成オブジェクトを使用してコードを生成します。

インライン化された関数のスタック サイズ制限の制御

スタック領域の制限を指定すると、インライン化の許容量に制限がかかります。ライン外の関数の場合、関数のローカル変数のスタック領域は、関数が返ったときに解放されます。ただし、インライン化された関数の場合、関数が実行された後でも、スタック領域がローカル変数によって占有されたままになります。InlineStackLimit プロパティの値はバイト単位で測定されます。ターゲット ハードウェア設定の情報に基づいて、InlineStackLimit の特定の値で対応可能なスタック変数の数が推測されます。この推測では、レジスタに変数を配置するなど、可能な C コンパイラの最適化を除外します。

MATLAB Coder アプリまたはコマンド ライン インターフェイスを使用して、インライン化される関数のスタック サイズ制限を制御できます。

  • アプリを使用して、[プロジェクトの設定] ダイアログ ボックスの [すべての設定] タブで、[インライン スタック制限] フィールドの値を必要な最大サイズに設定します。

  • コマンド ラインで、codegen 構成オブジェクトを作成します。InlineThresholdMax プロパティの値を必要な最大サイズに設定します。

    cfg = coder.config('lib');
    cfg.InlineStackLimit = 2000;

    この構成オブジェクトを使用してコードを生成します。

参考

|

関連するトピック