~~NOTOC~~
====== 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 [[http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/clGetDeviceInfo.html|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 . " |
| 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|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 . " |
| CL_DRIVER_VERSION | char[] | Gibt die Version des OpenCL-Software-Treibers zurück. Format: "." |
**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 =====
* [[clgetcommandqueue|clGetCommandQueue]]
* [[clgetplatforminfo|clGetPlatformInfo]]