~~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]]