x86sim
をターゲットとして AI エンジン コンパイラを実行する際、--Xchess
オプションは無視されます。これは、x86sim
フローではカーネル特定のコンパイル オプションはサポートされないということです。
これについて次の例で説明します。C コードでコンパイル時間を変更するには、#ifndef
などのプリプロセッサ指示子を使用するのが一般的な方法です。これらのプリプロセッサ指示子を制御するには、コマンド ライン コンパイラ オプションを使用して #defines
を渡すのが便利です。次のコード ブロック例には、プリプロセッサ指示子によって、2 つの異なる動作があります。
void example_kernel()
{
#ifdef SIM
printf("Simulation Mode\n");
#else
printf("Default Mode\n");
#endif
}
AI エンジン コンパイラでハードウェア (hw
) をターゲットとする際にコンパイル時に SIM マクロを定義するには、次を使用します。
aiecompiler -target=hw -Xchess="example_kernel:-DSIM"
コンパイル ターゲットが x86sim
に設定されている場合は -Xchess
引数は無視されるので、x86 シミュレータには SIM は定義されず、カーネルの出力はデフォルト モードになります。
x86 シミュレータでプリプロセッサ オプションを指定する必要がある場合は、-Xchess
の代わりに aiecompiler -target=x86sim
--Xpreproc
を使用します。この方法で渡すオプションは、すべてのソース コードおよびすべてのターゲット フローに適用されることに注意してください。
option | 説明 |
---|---|
--Xchess=<string>
|
各 AI エンジンのコードのコンパイルに使用される CHESS コンパイラにカーネル特定のオプションを渡すために使用できます。 オプション文字列は<kernel-function>:<optionid>=<value> のように指定します。このオプション文字列は、指定したカーネル関数がマップされている AI エンジンに生成されたソース ファイルのコンパイル中に含められます。 |
--Xpreproc=<string>
|
すべてのソース コードのコンパイルでプリプロセッサ段階に一般オプションを渡します ( --Xpreproc=-D<var>=<value>
|