初期化の際は、ホスト アプリケーションは 1 つまたは複数のザイリンクス デバイスを含むプラットフォームを特定する必要があります。次のコード部分は、ザイリンクス プラットフォームを特定する共通の方法を示しています。
cl_platform_id platform_id; // platform id
err = clGetPlatformIDs(16, platforms, &platform_count);
// Find Xilinx Platform
for (unsigned int iplat=0; iplat<platform_count; iplat++) {
err = clGetPlatformInfo(platforms[iplat],
CL_PLATFORM_VENDOR,
1000,
(void *)cl_platform_vendor,
NULL);
if (strcmp(cl_platform_vendor, "Xilinx") == 0) {
// Xilinx Platform found
platform_id = platforms[iplat];
}
}
OpenCL API 呼び出し
clGetPlatformIDs
を使用して、システムで使用可能な OpenCL プラットフォームを検索します。その後、
clGetPlatformInfo
を使用して、cl_platform_vendor
が "Xilinx"
と一致するザイリンクス デバイス ベースのプラットフォームを取得します。
推奨: 上記のコードまたはこの章で使用されているほかのホスト コード例でははっきりと示されていませんが、各 OpenCL API 呼び出しの後にエラー チェックを使用することをお勧めします。そのようにするとデバッグしやすくなり、エミュレーション フローまたはハードウェア実行中にホスト コードおよびカーネル コードをデバッグする場合に生産性が向上します。次に、
clGetPlatformIDs
コマンドのエラー チェックのコード例を示します。err = clGetPlatformIDs(16, platforms, &platform_count);
if (err != CL_SUCCESS) {
printf("Error: Failed to find an OpenCL platform!\n");
printf("Test failed\n");
exit(1);
}