Vitis™ コア開発キットでは、ホスト コードを ザイリンクス® ランタイム (XRT) API や業界標準の OpenCL™ API を使用した C または C++ 言語で記述します。XRT ネイティブ API については、 XRT サイト (https://xilinx.github.io/XRT/2020.2/html/xrt_native_apis.html) を参照してください。Vitis コア開発キットでは、https://www.khronos.org/registry/OpenCL/specs/opencl-1.2.pdf で説明される OpenCL 1.2 API がサポートされます。OpenCL への XRT 拡張については、https://xilinx.github.io/XRT/2020.2/html/opencl_extension.html を参照してください。
ヒント: このコード例では、OpenCL C 言語 API を使用しています。
通常、ホスト コードは次の 3 つのセクションに分けることができます。
- 環境の設定。
- 1 つまたは複数のカーネルの実行を含むコア コマンドの実行。
- リソースのポスト プロセスとリリース。
ヒント:
Vitis コア開発キットでは、OpenCL インストーラブル クライアント ドライバー (ICD) 拡張 (
cl_khr_icd
) がサポートされます。これにより、OpenCL を複数インプリメンテーションして、同じシステム内に共存させることができます。インストール方法の詳細は、OpenCL インストーラブル クライアント ドライバー ローダー を参照してください。注記: ホスト プログラムをマルチスレッドで実行する場合は、Vitis コア開発キットアプリケーションからの
fork()
システム呼び出しを呼び出す際に注意が必要です。fork()
は、すべてのランタイム スレッドを複製するわけではありません。このため、子プロセスを完全な Vitis コア開発キットのアプリケーションとして実行することはできません。Vitis ソフトウェア プラットフォーム アプリケーションから別のプロセスを起動する場合は、posix_spawn()
を使用することをお勧めします。