記事 ID: 000077342 コンテンツタイプ: トラブルシューティング 最終改訂日: 2021/08/27

OpenCL ホストコードをコンパイルするときに、「clGetProfileDataDeviceIntelFPGA」がこのスコープで宣言されていませんでした」というエラーが表示されるのはなぜですか?

環境

    インテル® Quartus® Prime 開発ソフトウェア・スタンダード・エディション
    インテル® Quartus® Prime 開発ソフトウェア・プロ・エディション
    インテル® FPGA SDK for OpenCL™ プロ・エディション
BUILT IN - ARTICLE INTRO SECOND COMPONENT
詳細

自動実行カーネルを動的にプロファイリングする際には、ホストコードでライブラリー関数 clGetProfileDataDeviceIntelFPGA を呼び出す必要があります。 この関数が直接呼び出されると、ホストコードのコンパイルに失敗し、以下のようなエラーが発生する可能性があります。

Linux (gcc)

エラー: 'clGetProfileDataDeviceIntelFPGA' がこのスコープで宣言されていません

 

Windows (Microsoft Visual Studio)

エラー: 未解決の外部シンボル clGetProfileDataDeviceIntelFPGA

 

システムが ICD ドライバーを使用している場合、*IntelFPGA 関数などの標準以外の機能を直接使用することはできません。OpenCL 呼び出し clGetExtensionFunctionAddress は、非標準関数の関数ポインターを取得するために使用する必要があり、そのポインターを使用して呼び出す必要があります。

解決方法

関数のプロトタイプを使用 (CL/ext.h)

エクスターン・CL_API_ENTRY cl_int CL_API_CALL

clGetProfileDataDeviceIntelFPGA(

cl_device_id /*device_id*/、

cl_program /*program*/、

cl_bool /*read_enqueue_kernels*/、

cl_bool /*read_auto_enqueued*/、

cl_bool /*clear_counters_after_readback*/、

size_t /*param_value_size*/、

void * /*param_value*/、

size_t * /*param_value_size_ret*/、

cl_int * /*errcode_ret*/ );

ファンクションコールを置き換える

cl_intステータス = clGetProfileDataDeviceIntelFPGA (デバイス、プログラム、false、true、false、0、NULL、NULL);

以下の構文を使用したコード付き

cl_int (*get_profile_fn)(cl_device_id、cl_program、cl_bool、cl_bool、cl_bool、size_t、void*、size_t*、cl_int*);

get_profile_fn = (cl_int * (cl_device_id、cl_program、cl_bool、cl_bool、cl_bool、size_t、void*、size_t*、cl_int*))clGetExtensionFunctionAddress("clGetProfileDataDeviceIntelFPGA");

cl_int status = (cl_int)(*get_profile_fn) (デバイス、プログラム、false、true、false、0、NULL、NULL);

 

 

関連製品

本記事の適用対象: 1 製品

インテル® プログラマブル・デバイス

1

このページのコンテンツは、元の英語のコンテンツを人力翻訳および機械翻訳したものが混在しています。この内容は参考情報および一般的な情報を提供するためものであり、情報の正確さと完全性を保証するものではありません。インテルは不正確な翻訳があった場合でもいかなる責任を負いません。このページの英語版と翻訳の間に矛盾がある場合は、英語版に準拠します。 このページの英語版をご覧ください。