Artikel-ID: 000077342 Inhaltstyp: Fehlerbehebung Letzte Überprüfung: 30.11.2018

Warum erhalte ich den Fehler "'clGetProfileDataDeviceIntelFPGA' wurde in diesem Bereich nicht erklärt" beim Kompilieren von OpenCL-Host-Code?

Umgebung

    Intel® Quartus® Prime Standard Edition
    Intel® Quartus® Prime Pro Edition
    Intel® FPGA SDK for OpenCL™ Pro Edition
BUILT IN - ARTICLE INTRO SECOND COMPONENT
Beschreibung

Die Bibliotheksfunktion clGetProfileDataDeviceIntelFPGA muss im Host-Code aufgerufen werden, wenn ein autorun-Kernel dynamisch profiliert wird.  Wenn diese Funktion direkt aufgerufen wird, kann die Hostcode-Kompilierung mit einem Fehler wie dem unten stehenden ausfallen.

Linux (Gcc)

Fehler: "clGetProfileDataDeviceIntelFPGA" wurde in diesem Bereich nicht erklärt

 

Windows (Microsoft Visual Studio)

Fehler: Nicht gelöstes externes Symbol clGetProfileDataDeviceIntelFPGA

 

Wenn das System den ICD-Treiber verwendet, können nicht standardmäßige Funktionen wie *IntelFPGA-Funktionen nicht direkt verwendet werden. Der OpenCL-Aufruf clGetExtensionFunctionAddress muss verwendet werden, um einen Funktionszeiger für die nicht standardmäßige Funktion zu erhalten, und dieser Pointer muss verwendet werden, um sie aufzurufen.

Lösung

Verwendung des Prototyps der Funktion in CL/ext.h

extern CL_API_ENTRY cl_int CL_API_CALL

clGetProfileDataDeviceIntelFPGA(

cl_device_id /*device_id*/,

cl_program /*programm*/,

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*/ );

Ersetzen des Funktionsanrufs

cl_int status = clGetProfileDataDeviceIntelFPGA (Gerät, Programm, false, true, false, 0, NULL, NULL, NULL);

mit Code, der den folgenden Code verwendet

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) (Gerät, Programm, false, true, false, 0, NULL, NULL, NULL);

 

 

Zugehörige Produkte

Dieser Artikel bezieht sich auf 1 Produkte

Intel® programmierbare Geräte

1

Der Inhalt dieser Seite ist eine Kombination aus menschlicher und computerbasierter Übersetzung des originalen, englischsprachigen Inhalts. Dieser Inhalt wird zum besseren Verständnis und nur zur allgemeinen Information bereitgestellt und sollte nicht als vollständig oder fehlerfrei betrachtet werden. Sollte eine Diskrepanz zwischen der englischsprachigen Version dieser Seite und der Übersetzung auftreten, gilt die englische Version. Englische Version dieser Seite anzeigen.