カーネル シグネチャ - 2021.1 Japanese

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

Document ID
UG1393
Release Date
2022-03-29
Version
2021.1 Japanese

C/C++ カーネルでは、カーネルは Vitis コンパイラのコマンド ラインで v++ --kernel オプションを使用すると識別されます。ただし、OpenCL コードの場合は、__kernel キーワードでカーネルが識別されます。1 つの .cl ファイル内で複数のカーネルを定義でき、Vitis コンパイラは --kernel オプションでどのカーネルをコンパイルするか指定している場合を除き、カーネルをすべてコンパイルします。

__kernel __attribute__ ((reqd_work_group_size(1, 1, 1)))
void apply_watermark(__global const TYPE * __restrict input, 
   __global TYPE * __restrict output, int width, int height) {
{
   ...
}
ヒント: 上記のカーネル関数 apply_watermark の完全なコードは、Vitis Accel Examples GitHub リポジトリの Global Memory Two Banks (CL) にあります。

上記の例の場合、ウォーターマーク カーネルに inputoutput という 2 つのポインター タイプの引数と、widthheight という 2 つのスカラー タイプの int 引数が含まれています。

C/C++ カーネルではこれらの引数に HLS INTERFACE プラグマを使用する必要がありますが、OpenCL カーネルでは Vitis コンパイラおよび Vitis HLS でカーネル引数が認識され、必要に応じてポインター引数は m_axi インターフェイスに、スカラー引数は s_axilite インターフェイスにコンパイルされます。