ソフトウェア エミュレーション フローでは、OpenCL カーネルに対して追加のランタイム チェックを実行できます。追加のチェックには、次のものがあります。
-
OpenCL カーネルがインターフェイス バッファーに対して範囲外アクセスを実行するか (
fsanitize=address
)。 - カーネルが初期化されていないローカル メモリにアクセスするか (
fsanitize=memory
)。
--advanced オプション に説明されているように、--advanced
コンパイラ オプションでイネーブルにする Vitis コンパイラ オプションがあり、次のコマンド構文を使用して指定できます。
--advanced.param compiler.fsanitize=address,memory
これらのオプションをイネーブルにすると、エミュレーションを実行したときにエミュレーション診断メッセージを含むデバッグ ログが <project_dir>/Emulation-SW/<proj_name>-Default>/emulation_debug.log に出力されます。
fsanitize
指示子も設定ファイルで次のように指定できます。
[advanced]
#param=<param_type>:<param_name>.<value>
param=compiler.fsanitize=address,memory
そして、この設定ファイルを v++
コマンド ラインで指定します。
v++ -l –t sw_emu --config ./advanced.cfg -o bin_kernel.xclbin
--config
オプションの詳細は、Vitis コンパイラのコンフィギュレーション ファイル を参照してください。