Main Content

coder.mexconfig

fiaccel で使用するコード高速化のための構成オブジェクト

説明

coder.MexConfig オブジェクトには、生成された MEX 関数で固定小数点コードを高速化する際に関数 fiaccel で使用されるすべての構成パラメーターが格納されます。このオブジェクトを使用するには、まず関数 coder.mexconfig を使用してオブジェクトを作成し、次に -config オプションを使用してこのオブジェクトを関数 fiaccel に渡します。

作成

説明

cfg = coder.mexconfig は、MEX 関数を生成する fiaccel で使用する coder.MexConfig コード生成オブジェクトを作成します。

プロパティ

すべて展開する

コンパイル時の再帰用に生成コードで許可される関数のコピー数。整数として指定します。MATLAB® コードで再帰を許可しないようにするには、CompileTimeRecursionLimit0 に設定します。コンパイル時の再帰限界値の既定値は、コンパイル時の再帰を必要とするほとんどの再帰関数に対して十分な値です。コンパイル時の再帰限界値が原因でコード生成に失敗する場合にコンパイル時の再帰が必要なときは、限界値を高くします。あるいは、コード ジェネレーターが実行時の再帰を使用するように、MATLAB コードを変更します。

定数畳み込みによって実行される命令の最大数。正の整数として指定します。

定数入力チェック モード。次の表のいずれかの値として指定します。

説明
'CheckValues'

この値が既定値です。

MEX 関数の呼び出し時に、定数入力の引数に指定する値がコード生成時に指定された値であるかどうかがチェックされます。

MEX 関数と元の MATLAB 関数を同じ引数を使用して呼び出すことができます。そのため、両方の関数に対して同じテスト ファイルを使用できます。

値のチェックによって、MEX 関数の実行速度が遅くなる可能性があります。

'IgnoreValues'

MEX 関数の呼び出し時に、定数入力の引数に指定する値を無視します。コード生成時に指定された値を使用します。

同じテスト ファイルを使用できるため、定数引数の値をチェックするというオーバーヘッドが発生しません。

'Remove'

コード ジェネレーターは、MEX 関数のシグネチャから定数入力の引数を削除します。MEX 関数の呼び出し時に、定数入力の引数の値を指定しません。

このオプションでは下位互換性が提供されます。

MEX 関数での定数入力のチェック (MATLAB Coder)を参照してください。

可変サイズ データの動的メモリ割り当て。次の値のいずれかとして指定します。

  • 'Threshold' — サイズが DynamicMemoryAllocationThreshold を超えるすべての可変サイズ配列に対して動的メモリ割り当てが有効になります。fiaccel は、この可変サイズ データのメモリをヒープで動的に割り当てます。

  • 'AllVariableSizeArrays' — すべての可変サイズ配列のメモリをヒープで動的に割り当てます。すべての制限なしの可変サイズ データには、動的メモリ割り当てを使用しなければなりません。

  • 'Off' — メモリをスタックで静的に割り当てます。

すべての制限なしの可変サイズ データには、動的メモリ割り当てを使用しなければなりません。

依存関係:

  • EnableVariableSizing により、このパラメーターが有効になります。

  • この DynamicMemoryAllocation'Threshold' に設定すると、DynamicMemoryAllocationThreshold パラメーターが有効になります。

メモ

DynamicMemoryAllocation 構成オプションは将来のリリースで削除される予定です。可変サイズの配列に対してメモリを動的に割り当てるには、EnableDynamicMemoryAllocation オプションを使用してください。しきい値を設定するには、DynamicMemoryAllocationThreshold オプションを使用します。

固定サイズの配列に対する動的メモリ割り当て。次の表のいずれかの値として指定します。

説明
true

コード ジェネレーターは、サイズ (バイト単位) が DynamicMemoryAllocationThreshold 以上である固定サイズ配列に対しては、ヒープ上でメモリを動的に割り当てます。

false

この値が既定値です。

コード ジェネレーターは、スタック上で固定サイズ配列のメモリを静的に割り当てます。

依存関係:

  • このオプションは、EnableDynamicMemoryAllocationtrue に設定すると有効になります。

固定サイズの配列に対する動的メモリ割り当ての制御 (MATLAB Coder)を参照してください。

fiaccel が可変サイズ配列のメモリをヒープで割り当てる下限のしきい値のサイズ。整数として指定します。

依存関係:

  • EnableDynamicMemoryAllocationtrue に設定すると、このパラメーターが有効になります。

fiaccel が一般的な可視化関数を外部関数として扱うかどうか。true または false として指定します。このオプションを有効にすると、fiaccelplotdisp および figure などの多くの一般的な可視化関数の呼び出しを検出します。これらの関数に対して MATLAB を呼び出します。この機能を使用すると、コードがコード生成に適するようになるまでの時間が短縮されます。また、関数 coder.extrinsic を使ってこれらの関数を外部関数として宣言する必要もなくなります。

セミコロンで終了していないコードの結果を表示するかどうか。true または false として指定します。

このプロパティを true に設定すると、最後にセミコロンがないコード命令の結果が MATLAB コマンド ウィンドウに表示されます。このプロパティを false に設定すると、コードの結果は MATLAB コマンド ウィンドウには表示されません。

生成コードで再帰関数を許可するかどうか。true または false として指定します。MATLAB コードで実行時の再帰が必要な場合にこのパラメーターが false のとき、コード生成に失敗します。

デバッグ モードで生成コードをコンパイルするかどうか。true または false として指定します。

このプロパティを true に設定すると、生成されたコードがデバッグ モードでコンパイルされます。このプロパティを false に設定すると、生成されたコードが通常のモードでコンパイルされます。

可変サイズの配列に対する動的メモリ割り当て。次の表のいずれかの値として指定します。

説明
true

この値が既定値です。

コード ジェネレーターは、サイズ (バイト単位) が DynamicMemoryAllocationThreshold 以上である可変サイズ配列に対しては、ヒープ上でメモリを動的に割り当てます。

falseコード ジェネレーターは、スタック上で可変サイズ配列のメモリを静的に割り当てます。

生成コードで暗黙的な拡張機能を有効にするかどうか。true または false として指定します。

このプロパティを true に設定すると、生成コードで暗黙的な拡張が有効になります。暗黙的な拡張を適用するためにコード ジェネレーターで生成コードに変更が加えられます。基本的な演算で互換性のある配列サイズを参照してください。このプロパティを false に設定すると、生成コードは暗黙的な拡張のルールに従いません。

可変サイズの配列のサポートを有効にするかどうか。true または false として指定します。

このプロパティを true に設定すると、可変サイズ配列のサポートと DynamicMemoryAllocation プロパティが有効になります。このプロパティを false に設定すると、可変サイズ配列はサポートされません。

外部関数は、生成されたコードによって MATLAB ソフトウェアに送信され実行される、MATLAB パス上の関数です。fiaccel では、外部関数のコードのコンパイルや生成は行われません。このプロパティを true に設定すると、fiaccel では MATLAB 関数呼び出しのコードが生成されますが、関数の内部コードは生成されません。このプロパティを false に設定すると、fiaccel では外部関数が無視され、MATLAB 関数呼び出しのコードは生成されません。外部関数によって fiaccel の出力に影響が生じると、コンパイラ エラーが発生します。

ExtrinsicCalls は、fiaccel によって作成された MEX 関数が MATLAB 関数 randrandi および randn を使用して乱数を生成する方法に影響を与えます。外部呼び出しが有効の場合、生成された MEX 関数は MATLAB グローバル乱数ストリームを使用して乱数を生成します。外部呼び出しが有効でない場合は、fiaccel によって作成された MEX 関数は、内蔵の乱数発生器を使用します。

外部呼び出しを無効にした場合、生成された MEX 関数は、errorassert ステートメントからのランタイム メッセージを MATLAB コードに表示できません。MEX 関数はエラー メッセージを表示できないことを報告します。エラー メッセージを表示するには、外部関数呼び出しを有効にして再度 MEX 関数を生成します。

HTML コード生成レポートを作成するかどうか。true または false として指定します。

MATLAB グローバル ワークスペースとの MEX 関数のグローバル データの同期。次の値のいずれかとして指定します。

  • SyncAlways — MEX 関数の入口と出口およびすべての外部呼び出しでグローバル データが同期され、MATLAB と生成された MEX 関数の間で最大の一貫性が確保されます。外部呼び出しがグローバル データに影響を与えない場合は、このオプションを coder.extrinsic -sync:off オプションと共に使用してこれらの呼び出しの同期化をオフにすると、パフォーマンスが最大になります。

  • SyncAtEntryAndExits — MEX 関数の入口と出口でのみグローバル データが同期されます。コードに外部呼び出しが含まれていてもグローバル データに影響を与えるものが少ない場合は、このオプションを coder.extrinsic -sync:on オプションと共に使用してこれらの呼び出しの同期化をオンにすると、パフォーマンスが最大になります。

  • NoSync — 同期が行われません。同期化を無効にする前に、MEX 関数と MATLAB のグローバル データの間に相互作用がないことを確認してください。相互作用があると、MATLAB と MEX 関数の間に不整合が生じる可能性があります。

データ型: char

インライン関数のスタック サイズの制限。正の整数として指定します。

インライン化される関数の最大サイズ。正の整数として指定します。

インライン化後の関数の最大サイズ。正の整数として指定します。

このプロパティを true に設定すると、MATLAB に対して生成されたコードにおけるすべてのメモリ整合性違反が検出されます。違反が検出されると、実行が停止し、診断メッセージが表示されます。このプロパティを false に設定すると、メモリ整合性のチェックとランタイム スタックの両方が無効になります。

コード生成が完了した際に HTML コード生成レポートを自動的に開くかどうか。true または false として指定します。このプロパティは、GenerateReport プロパティを true に設定した場合にのみ適用されます。

生成コードと MATLAB コードの潜在的な動作の相違をレポートするかどうか。true または false として指定します。ReportPotentialDifferences プロパティを true に設定すると、コード生成レポートに潜在的な相違を一覧表示するタブが表示されます。潜在的な相違とは、特定の状況にある場合にのみ実行時に生じる違いです。

応答性チェックを有効にするかどうか。true または false として指定します。

整数オーバーフローで飽和させるかどうか。true または false として指定します。オーバーフローは、データ型が表現できる最小値または最大値のいずれかに飽和します。このプロパティを true に設定すると、オーバーフローが飽和されます。このプロパティを false に設定すると、オーバーフローはデータ型で表現できる適切な値にラップされます。

アプリケーションごとの最大スタック使用量 (バイト単位)。正の整数として指定します。使用できるスタック サイズより小さい制限値を設定します。そうしないと、ランタイム スタック オーバーフローが発生する可能性があります。オーバーフローは fiaccel ではなく C コンパイラによって検出され、報告されます。

すべて折りたたむ

この例では、関数 coder.mexconfig を使用して coder.MexConfig 構成オブジェクトを作成する方法を示します。オブジェクトで実行時チェックを無効にするように設定します。

cfg = coder.mexconfig;

整合性チェック、外部呼び出し、および応答性チェックをオフにします。

cfg.IntegrityChecks = false;
cfg.ExtrinsicCalls = false;
cfg.ResponsivenessChecks = false;

関数 fiaccel を使用して、ファイル foo.m の MEX 関数を生成します。

fiaccel -config cfg foo

バージョン履歴

R2011a で導入

すべて展開する