プリプロセッサに関する考察事項 - 2023.2 日本語

AI エンジン ツールおよびフロー ユーザー ガイド (UG1076)

Document ID
UG1076
Release Date
2023-12-04
Version
2023.2 日本語

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 を使用します。この方法で渡すオプションは、すべてのソース コードおよびすべてのターゲット フローに適用されることに注意してください。

表 1. AI エンジン コンパイラのコマンド ライン オプション
option 説明
--Xchess=<string>

AI エンジンのコードのコンパイルに使用される CHESS コンパイラにカーネル特定のオプションを渡すために使用できます。

オプション文字列は <kernel-function>:<optionid>=<value> のように指定します。このオプション文字列は、指定したカーネル関数がマップされている AI エンジンに生成されたソース ファイルのコンパイル中に含められます。
--Xpreproc=<string>

すべてのソース コードのコンパイルでプリプロセッサ段階に一般オプションを渡します (AIE/PS/PL/x86sim)。次に例を示します。

--Xpreproc=-D<var>=<value>