clGetDeviceInfo

Holt spezifische Informationen zu einem OpenCL-Gerät.

Signatur

cl_int clGetDeviceInfo ( cl_device_id  device ,
                         cl_device_info  param_name ,
                         size_t  param_value_size ,
                         void  *param_value ,
                         size_t  *param_value_size_ret )

Parameter

device: ein Gerät, was von clGetDeviceIDs oder von clCreateSubDevices zurückgegeben wurde. Wenn device ein Subgerät ist, dann werden Informationen über das Subgerät zurückgeliefert.

param_name: eine Enumerations-Konstante, die die Information angibt, die man über das Gerät haben möchte. Das kann eine der folgenden Konstanten sein (hier nur eine Auswahl, komplette Liste unter Khronos.org):

Wert Rückgabetyp Beschreibung
CL_DEVICE_ADDRESS_BITS cl_uint Gibt die Größe des Adressraumes des Gerätes zurück. Zurzeit werden 32 und 64 Bit unterstützt
CL_DEVICE_AVAILABE cl_bool ist CL_TRUE wenn das Gerät verfügbar ist, ansonsten CL_FALSE
CL_DEVICE_COMPILER_AVAILABLE cl_bool ist CL_FALSE, wenn die OpenCL-Implementation keinen Compiler hat, der Programmcode für dieses Gerät übersetzen kann. Ansonsten CL_TRUE
CL_DEVICE_DOUBLE_FP_CONFIG cl_device_fp_config beschreibt die double-Precision Fließkomma-Kapazitäten des Gerätes. Ist ein Bitfeld, was folgende Werte annehmen kann: \\CL_FP_DENORM - denormierte Werte sind unterstützt
CL_FP_INF_NAN - unendlich und Not-a-Number werden unterstützt
CL_FP_ROUND_TO_NEAREST - Runden zur nächstgelegenen ganzen Zahl wird unterstützt
CL_FP_ROUND_TO_ZERO - Runden zu 0 wird unterstützt
CL_FP_ROUND_TO_INF - Runden zum positiven und negativen Unendlich wird unterstützt
CL_FP_FMA - IEEE754-2008 gesteuertes multiply-add wird unterstützt
CL_FP_SOFT_FLOAT - einfache Fließkomma-Operationen (wie Addition, Substraktion, Multiplikation) sind in Software implementiert.
Standardwert: 0
Wenn double-precision vom Gerät unterstützt wird, dann muss das Bitfeld wenigstens folgendes sein: CL_FP_FMA | CL_FP_ROUND_TO_NEAREST | CL_FP_ROUND_TO_ZERO | CL_FP_ROUND_TO_INF | CL_FP_INF_NAN | CL_FP_DENORM
CL_DEVICE_ENDIAN_LITTLE cl_bool ist CL_TRUE wenn das Gerät ein little-Endian Gerät ist, ansonsten CL_FALSE
CL_DEVICE_ERROR_CORRECTION_SUPPORT cl_bool ist CL_TRUE, wenn das Gerät eine Fehlerkorrektur für Zugriffe auf Speicher implementiert hat (global und konstanten Speicher). Wenn nicht CL_FALSE
CL_DEVICE_EXECUTION_CAPABILITIES cl_device_exec_capabilities beschreibt, die Ausführungskapazität des Gerätes. Rückgabewert ist ein Bitfeld, was folgende Werte annehmen kann:
CL_EXEC_KERNEL - Das Gerät kann OpenCL-Kernel ausführen
CL_EXEC_NATIVE_KERNEL - Das Gerät kann native Kernel ausführen
CL_DEVICE_EXTENTIONS char[] Gibt eine Liste der Extentions zurück, die vom Gerät unterstützt werden (durch Leerzeichen getrennt).
CL_DEVICE_GLOBAL_MEM_CACHE_SIZE cl_ulong Größe des Global-Speichercache in Bytes
CL_DEVICE_GLOBAL_MEM_CACHE_TYPE cl_device_mem_cache_type Arten des Zugriffs, die der Global-Speichercache unterstützt: CL_NONE, CL_READ_ONLY_CACHE und CL_READ_WRITE_CACHE
CL_DEVICE_GLOBAL_MEM_SIZE cl_ulong Größe des globalen Speichers in Bytes
CL_DEVICE_HALF_FP_CONFIG cl_device_fp_config beschreibt die Fähigkeiten des Gerätes mit half-precision Fließkommazahlen umzugehen. Siehe CL_DEVICE_DOUBLE_FP_CONFIG
CL_DEVICE_HOST_UNIFIED_MEMORY cl_bool ist CL_TRUE falls das Gerät und das Hostsystem ein einheitliches Speichersubsystem benutzen, ansonsten CL_FALSE
CL_DEVICE_LINKER_AVAILABLE cl_bool ist CL_FALSE wenn die OpenCL-Implementationen keinen Linker für das Gerät hat. Ansonsten CL_TRUE. Der Wert muss CL_TRUE sein, wenn CL_DEVICE_COMPILER_AVAILABLE CL_TRUE ist
CL_DEVICE_LOCAL_MEM_SIZE cl_ulong Größße der lokalen Speicherbereiche in Bytes. Der minimale Wert ist 32KB für Geräte die nicht CL_DEVICE_TYPE_CUSTOM sind
CL_DEVICE_LOCAL_MEM_TYPE cl_device_local_mem_type Typ des lokalen Speichers. Kann CL_LOCAL sein, was dedizierten lokalen Speicher wie SRAM andeutet, oder CL_GLOBAL. Für CL_DEVICE_TYPE_CUSTOM-Geräte kann auch CL_NONE zurückgegeben werden.
CL_DEVICE_MAX_CLOCK_FREQUENCY cl_uint maximale Taktfrequenz des Gerätes in MHz
CL_DEVICE_MAX_COMPUTE_UNITS cl_uint Die Anzahl der Recheneinheiten des OpenCL-Gerätes. Eine Arbeitsgruppe arbeitet auf einer Recheneinheit. Minimaler Wert ist 1
CL_DEVICE_MAX_CONSTANT_ARGS cl_uint Maximale Anzahl Argumenten, die mit __constant im Kernel angegeben sind. Minimaler Wert ist 8
CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE cl_ulong Maximale Größe der Speicherzuweisung für konstante Puffer. Minimaler Wert: 64 KB
CL_DEVICE_MAX_MEM_ALLOC_SIZE cl_ulong Maximale Größe der Speicherzuweisung in Bytes. Minimaler Wert: max(1/4th of CL_DEVICE_GLOBAL_MEM_SIZE, 128*1024*1024)
CL_DEVICE_MAX_WORK_GROUP_SIZE size_t Maximale Anzahl von Work-Items in einer Work-Group, die einen Kernel auf einer Recheneinheit ausführen. Minimaler Wert: 1
CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS cl_uint Maximale Dimension, die die globalen und lokalen Work-Item-IDs angibt. Minimaler Wert: 3
CL_DEVICE_MAX_WORK_ITEM_SIZES size_t[] Maximale Anzahl der Work_items, die in jeder Dimension einer Work-Group sein können. Gibt n size_t Einträge zurück, wobei n die Anzahl der Dimensionen ist (siehe CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS). Minimaler Wert (1,1,1)
CL_DEVICE_MEM_BASE_ADDR_ALIGN cl_uint der kleinste mögliche Wert ist die Größe in Bits des größten eingebauten Datentypen, der vom Gerät unterstützt wird (long16 im FULL_PROFILE, long16 oder int16 im EMBEDDED_PROFILE)
CL_DEVICE_NAME char[] Gerätename
CL_DEVICE_OPENCL_C_VERSION char[] Die OpenCL C-Version. Gibt die höchste Versionsnummer zurück, die vom Compiler für das Gerät unterstützt wird (solange das Gerät kein CL_DEVICE_TYPE_CUSTOM ist). Forat: „OpenCL C <major_version>.<minor_version> <hersteller-spezifische-informationen>“
CL_DEVICE_PARENT_DEVICE cl_device_id gibt die cl_device_id des Vatergerätes zurück, zu dem das Subgerät gehört (falls device kein Subgerät ist, wird NULL zurückgegeben).
CL_DEVICE_PLATFORM cl_platform_id Die OpenCL-Plattform zu der das Gerät gehört
CL_DEVICE_PRINTF_BUFFER_SIZE size_t Maximale Größe des internen Puffers, was die Ausgabe von printf-Aufrufen innerhalb des Kernels hält. Für FULL_PROFILE ist der minimale Wert 1MB.
CL_DEVICE_PROFILE char[] OpenCL Profil-String. Entweder FULL_PROFILE oder EMBEDDED_PROFILE. Siehe clGetPlatformInfo
CL_DEVICE_QUEUE_PROPERTIES cl_command_queue_properties beschreibt Eigenschaften, die von der Command-Queue unterstützt werden. Bitfeld, kann folgende Werte annehmen:
CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE
CL_QUEUE_PROFILING_ENABLE
CL_DEVICE_SINGLE_FP_CONFIG cl_device_fp_config gibt die Fähigkeiten des Gerätes an mit single-precision Fließkommazahlen umzugehen. Siehe CL_DEVICE_DOUBLE_FP_CONFIG
CL_DEVICE_TYPE cl_device_type gibt den OpenCL-Device-Typ zurück. Unterstützte Werte: CL_DEVICE_TYPE_CPU, CL_DEVICE_TYPE_GPU, CL_DEVICE_TYPE_ACCELERATOR, CL_DEVICE_TYPE_DEFAULT, CL_DEVICE_TYPE_CUSTOM
CL_DEVICE_VENDOR char[] Herstellername
CL_DEVICE_VENDOR_IF cl_uint eine eindeutige Hersteller-ID.
CL_DEVICE_VERSION char[] OpenCL-Version. Gibt die OpenCL-Version in folgendem Format zurück: „OpenCL <major>.<minor> <herstellerspezifische-informationen>“
CL_DRIVER_VERSION char[] Gibt die Version des OpenCL-Software-Treibers zurück. Format: „<major>.<minor>“

param_value: Zeiger auf ein Speicherstück wo die Ergebniswerte zurückgeschrieben werden sollen. Wenn NULL, wird der Parameter ignoriert.

param_value_size: gibt die Größe des Speicherblocks param_value in Bytes an. Muss größer als sizeof(Datentyp), der oben angegeben ist.

param_value_size_ret: Gibt die tatsächliche Größe der zurückgeschriebenen Daten zurück. Wenn NULL, wird der Parameter ignoriert.

Hinweise

Hinsichtlich CL_DEVICE_PROFILE: Wenn das Plattform Profil FULL_PROFILE ist, dann werden sowohl FULL_PROFILE-Geräte als auch EMBEDDED_PROFILE-Geräte unterstützt. Dann muss ein Compiler für alle Geräte verfügbar sein (dh. CL_DEVICE_COMPILER_AVAILABLE ist CL_TRUE). Wenn das Plattform-Profile EMBEDDED_PROFILE ist, dann werden nur EMBEDDED_PROFILE-Geräte unterstützt.

Rückgabewert

Zurückgegeben wird ein Fehlercode:

Wert Beschreibung
CL_SUCCESS Die Funktion wurde erfolgreich ausgeführt
CL_INVALID_DEVICE device ist kein gültiges Gerät
CL_INVALID_VALUE param_name ist kein unterstützter Wert
CL_OUT_OF_RESOURCES Es ist ein Fehler beim Reservieren von Speicher aufgetreten, der für die OpenCL-Implementation auf dem Gerät gebraucht wird.
CL_OUT_OF_HOST_MEMORY Es ist ein Fehler beim Reservieren von Speicher aufgetreten, der für die OpenCL-Implementation auf dem Hostprozressor gebraucht wird.

Siehe auch