| <?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN" |
| "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd"> |
| |
| <refentry> |
| <refentryinfo> |
| <keywordset><keyword>clGetDeviceInfo</keyword></keywordset> |
| </refentryinfo> |
| <refmeta> |
| <refentrytitle>clGetDeviceInfo</refentrytitle> |
| <refmiscinfo> |
| <copyright> |
| <year>2007-2011</year> |
| <holder>The Khronos Group Inc. |
| Permission is hereby granted, free of charge, to any person obtaining a |
| copy of this software and/or associated documentation files (the |
| "Materials"), to deal in the Materials without restriction, including |
| without limitation the rights to use, copy, modify, merge, publish, |
| distribute, sublicense, and/or sell copies of the Materials, and to |
| permit persons to whom the Materials are furnished to do so, subject to |
| the condition that this copyright notice and permission notice shall be included |
| in all copies or substantial portions of the Materials.</holder> |
| </copyright> |
| </refmiscinfo> |
| <manvolnum>3</manvolnum> |
| </refmeta> |
| |
| <!-- ================================ SYNOPSIS --> |
| |
| <refnamediv id="clGetDeviceInfo"> |
| <refname>clGetDeviceInfo</refname> |
| <refpurpose>Get information about an OpenCL device.</refpurpose> |
| </refnamediv> |
| <refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title> |
| <funcsynopsis> |
| <funcprototype> |
| <funcdef> |
| <link xlink:href="scalarDataTypes.html">cl_int</link> |
| <function>clGetDeviceInfo</function> |
| </funcdef> |
| |
| <paramdef> |
| <link xlink:href="abstractDataTypes.html">cl_device_id</link> |
| <parameter>device</parameter> |
| </paramdef> |
| |
| <paramdef> |
| <link xlink:href="enums.html#cl_device_info">cl_device_info</link> |
| <parameter>param_name</parameter> |
| </paramdef> |
| |
| <paramdef> |
| <link xlink:href="scalarDataTypes.html">size_t</link> |
| <parameter>param_value_size</parameter> |
| </paramdef> |
| |
| <paramdef> |
| <link xlink:href="scalarDataTypes.html">void</link> |
| <parameter>*param_value</parameter> |
| </paramdef> |
| |
| <paramdef> |
| <link xlink:href="scalarDataTypes.html">size_t</link> |
| <parameter>*param_value_size_ret</parameter> |
| </paramdef> |
| </funcprototype> |
| </funcsynopsis> |
| </refsynopsisdiv> |
| |
| <!-- ================================ PARAMETERS --> |
| |
| <refsect1 xmlns:xlink="http://www.w3.org/1999/xlink" id="parameters"><title>Parameters</title> |
| <variablelist> |
| <varlistentry> |
| <term><varname>device</varname></term> |
| <listitem> |
| <para> |
| May be a device returned by |
| <citerefentry><refentrytitle>clGetDeviceIDs</refentrytitle></citerefentry> |
| or a sub-device created by |
| <citerefentry><refentrytitle>clCreateSubDevices</refentrytitle></citerefentry>. |
| If <varname>device</varname> is a sub-device, the specific information for |
| the sub-device will be returned. The information that can be queried using |
| <function>clGetDeviceInfo</function> is specified in the table below. |
| </para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>param_value</varname></term> |
| <listitem> |
| <para> |
| A pointer to memory location where appropriate values for a given |
| <varname>param_name</varname> as specified in the table below will be |
| returned. If <varname>param_value</varname> is NULL, it is ignored. |
| </para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>param_value_size</varname></term> <listitem> |
| <para> |
| Specifies the size in bytes of memory pointed to by |
| <varname>param_value</varname>. This size in bytes must be ≥ size of |
| return type specified in the table below. |
| </para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>param_value_size_ret</varname></term> <listitem> |
| <para> |
| Returns the actual size in bytes of data being queried by |
| <varname>param_value</varname>. If <varname>param_value_size_ret</varname> |
| is NULL, it is ignored. |
| </para> |
| </listitem> |
| </varlistentry> |
| |
| <varlistentry> |
| <term><varname>param_name</varname></term> <listitem> |
| <para> |
| An enumeration constant that identifies the device information being queried. It |
| can be one of the values as specified in the table below. |
| </para> |
| </listitem> |
| </varlistentry> |
| |
| <!-- ================================ PARAMETER TABLE (OPTIONAL) --> |
| |
| <varlistentry> |
| <term></term> |
| <listitem> |
| <!-- table 4.3 --> |
| <informaltable frame="all"> |
| <tgroup cols="2" align="left" colsep="1" rowsep="1"> |
| <colspec colname="col1" colnum="1" /> |
| <colspec colname="col2" colnum="2" /> |
| <colspec colname="col3" colnum="3" /> |
| <thead> |
| <row> |
| <entry>cl_device_info</entry> |
| <entry>Return Type</entry> |
| <entry>Description</entry> |
| </row> |
| </thead> |
| |
| <tbody> |
| <row> |
| <entry><constant>CL_DEVICE_ADDRESS_BITS</constant></entry> |
| <entry>cl_uint</entry> |
| <entry> |
| The default compute device address space size specified as an unsigned |
| integer value in bits. Currently supported values are 32 or 64 bits. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_AVAILABLE</constant></entry> |
| <entry>cl_bool</entry> |
| <entry> |
| Is <constant>CL_TRUE</constant> if the device is available and |
| <constant>CL_FALSE</constant> if the device is not available. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_BUILT_IN_KERNELS</constant></entry> |
| <entry>char[]</entry> |
| <entry> |
| A semi-colon separated list of built-in kernels supported by the device. |
| An empty string is returned if no built-in kernels are supported by |
| the device. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_COMPILER_AVAILABLE</constant></entry> |
| <entry>cl_bool</entry> |
| <entry> |
| Is <constant>CL_FALSE</constant> if the implementation does |
| not have a compiler available to compile the program source. |
| Is <constant>CL_TRUE</constant> if the compiler is available. This can |
| be <constant>CL_FALSE</constant> for the embedded platform profile only. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_DOUBLE_FP_CONFIG</constant></entry> |
| <entry><para>cl_device_-</para><para>fp_config</para></entry> |
| <entry> |
| Describes double precision floating-point capability of the |
| OpenCL device. This is a bit-field that describes one or more of the following values: |
| <itemizedlist mark="disc"> |
| <listitem><constant>CL_FP_DENORM</constant> - denorms are supported.</listitem> |
| <listitem><constant>CL_FP_INF_NAN</constant> - INF and NaNs are supported.</listitem> |
| <listitem><constant>CL_FP_ROUND_TO_NEAREST</constant> - round to nearest even rounding mode supported.</listitem> |
| <listitem><constant>CL_FP_ROUND_TO_ZERO</constant> - round to zero rounding mode supported.</listitem> |
| <listitem><constant>CL_FP_ROUND_TO_INF</constant> - |
| round to positive and negative infinity rounding modes supported.</listitem> |
| <listitem><constant>CL_FP_FMA</constant> - IEEE754-2008 fused multiply-add is supported. </listitem> |
| <listitem><constant>CL_FP_SOFT_FLOAT</constant> - Basic floating-point operations (such as |
| addition, subtraction, multiplication) are implemented in software.</listitem> |
| </itemizedlist> |
| |
| <para> |
| Double precision is an optional feature so the mandated minimum double |
| precision floating-point capability is 0. |
| </para> |
| |
| <para> |
| If double precision is supported by the device, then the minimum double |
| precision floatingpoint capability must be: <constant>CL_FP_FMA</constant> |
| | <constant>CL_FP_ROUND_TO_NEAREST</constant> |
| | <constant>CL_FP_ROUND_TO_ZERO</constant> |
| | <constant>CL_FP_ROUND_TO_INF</constant> | |
| <constant>CL_FP_INF_NAN</constant> | <constant>CL_FP_DENORM</constant>. |
| </para> |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_ENDIAN_LITTLE</constant></entry> |
| <entry>cl_bool</entry> |
| <entry> |
| Is <constant>CL_TRUE</constant> if the OpenCL device is a little endian |
| device and <constant>CL_FALSE</constant> otherwise. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_ERROR_CORRECTION_SUPPORT</constant></entry> |
| <entry>Return type: cl_bool</entry> |
| <entry> |
| Is <constant>CL_TRUE</constant> if the device implements error correction |
| for all accesses to compute device memory (global and constant). |
| Is <constant>CL_FALSE</constant> if the device does not implement such |
| error correction. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_EXECUTION_CAPABILITIES</constant></entry> |
| <entry> <para>cl_device_-</para><para>exec_capabilities</para> </entry> |
| <entry> |
| Describes the execution capabilities of the device. This is |
| a bit-field that describes one or more of the following values: |
| <para><constant>CL_EXEC_KERNEL</constant> - The OpenCL device can execute |
| OpenCL kernels.</para> <para><constant>CL_EXEC_NATIVE_KERNEL</constant> |
| - The OpenCL device can execute native kernels.</para> <para>The mandated |
| minimum capability is <constant>CL_EXEC_KERNEL</constant>.</para> |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_EXTENSIONS</constant></entry> |
| <entry>char[]</entry> |
| <entry> |
| Returns a space separated list of extension names (the extension names themselves do |
| not contain any spaces) supported by the device. The list of extension names returned |
| can be vendor supported extension names and one or more of the following Khronos |
| approved extension names: |
| |
| <para> |
| <literallayout> |
| <citerefentry><refentrytitle>cl_khr_int64_base_atomics</refentrytitle></citerefentry> |
| <citerefentry><refentrytitle>cl_khr_int64_extended_atomics</refentrytitle></citerefentry> |
| <citerefentry><refentrytitle>cl_khr_fp16</refentrytitle></citerefentry> |
| <citerefentry><refentrytitle>cl_khr_gl_sharing</refentrytitle></citerefentry> |
| <citerefentry><refentrytitle>cl_khr_gl_event</refentrytitle></citerefentry> |
| <citerefentry><refentrytitle>cl_khr_d3d10_sharing</refentrytitle></citerefentry> |
| <citerefentry><refentrytitle>cl_khr_dx9_media_sharing</refentrytitle></citerefentry> |
| <citerefentry><refentrytitle>cl_khr_d3d11_sharing</refentrytitle></citerefentry> |
| </literallayout> |
| </para> |
| </entry> |
| |
| <entry> |
| The following approved Khronos extension names must be returned by all device that support OpenCL C 1.2: |
| <para> |
| <literallayout> |
| cl_khr_global_int32_base_atomics |
| cl_khr_global_int32_extended_atomics |
| cl_khr_local_int32_base_atomics |
| cl_khr_local_int32_extended_atomics |
| cl_khr_byte_addressable_store |
| cl_khr_fp64 |
| (for backward compatibility if double precision is supported) |
| </literallayout> |
| </para> |
| |
| <para> |
| Please refer to the OpenCL 1.2 Extension Specification for a detailed description of these extensions. |
| </para> |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_GLOBAL_MEM_CACHE_SIZE</constant></entry> |
| <entry>cl_ulong</entry> |
| <entry>Size of global memory cache in bytes.</entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_GLOBAL_MEM_CACHE_TYPE</constant></entry> |
| <entry> <para>cl_device_mem-</para><para>_cache_type</para> </entry> |
| <entry> |
| Type of global memory cache supported. Valid values are: |
| <constant>CL_NONE</constant>, <constant>CL_READ_ONLY_CACHE</constant>, |
| and <constant>CL_READ_WRITE_CACHE</constant>. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE</constant></entry> |
| <entry>cl_uint</entry> |
| <entry>Size of global memory cache line in bytes.</entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_GLOBAL_MEM_SIZE</constant></entry> |
| <entry>cl_ulong</entry> |
| <entry>Size of global device memory in bytes.</entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_HALF_FP_CONFIG</constant></entry> |
| <entry><para>cl_device_-</para><para>fp_config</para></entry> |
| <entry> |
| Describes the OPTIONAL half precision floating-point capability of the |
| OpenCL device. This is a bit-field that describes one or more of the following values: |
| |
| <itemizedlist mark="disc"> |
| <listitem><constant>CL_FP_DENORM</constant> - denorms are supported.</listitem> |
| <listitem><constant>CL_FP_INF_NAN</constant> - INF and NaNs are supported.</listitem> |
| <listitem><constant>CL_FP_ROUND_TO_NEAREST</constant> - round to nearest even rounding mode supported.</listitem> |
| <listitem><constant>CL_FP_ROUND_TO_ZERO</constant> - round to zero rounding mode supported.</listitem> |
| <listitem><constant>CL_FP_ROUND_TO_INF</constant> - round |
| to +ve and -ve infinity rounding modes supported.</listitem> |
| <listitem><constant>CL_FP_FMA</constant> - IEEE754-2008 fused multiply-add is supported. </listitem> |
| <listitem> |
| <constant>CL_FP_SOFT_FLOAT</constant> - Basic floating-point operations |
| (such as addition, subtraction, multiplication) are implemented in software.</listitem> |
| </itemizedlist> |
| |
| <para> |
| The required minimum half precision floating-point capability as |
| implemented by this extension is <constant>CL_FP_ROUND_TO_ZERO</constant> |
| or <constant>CL_FP_ROUND_TO_INF</constant> | |
| <constant>CL_FP_INF_NAN</constant>. |
| </para> |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_HOST_UNIFIED_MEMORY</constant></entry> |
| <entry>cl_bool</entry> |
| <entry> |
| Is <constant>CL_TRUE</constant> if the device and the host have a unified |
| memory subsystem and is <constant>CL_FALSE</constant> otherwise. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_IMAGE_SUPPORT</constant></entry> |
| <entry>cl_bool</entry> |
| <entry> |
| Is <constant>CL_TRUE</constant> if images are supported by the OpenCL |
| device and <constant>CL_FALSE</constant> otherwise. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_IMAGE2D_MAX_HEIGHT</constant></entry> |
| <entry>size_t</entry> |
| <entry> |
| Max height of 2D image in pixels. The minimum value is 8192 if |
| <constant>CL_DEVICE_IMAGE_SUPPORT</constant> is <constant>CL_TRUE</constant>. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_IMAGE2D_MAX_WIDTH</constant></entry> |
| <entry>size_t</entry> |
| <entry> |
| Max width of 2D image or 1D image not created from a buffer object in pixels. |
| The minimum value is 8192 if <constant>CL_DEVICE_IMAGE_SUPPORT</constant> |
| is <constant>CL_TRUE</constant>. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_IMAGE3D_MAX_DEPTH</constant></entry> |
| <entry>size_t</entry> |
| <entry> |
| Max depth of 3D image in pixels. The minimum value is 2048 if |
| <constant>CL_DEVICE_IMAGE_SUPPORT</constant> is <constant>CL_TRUE</constant>.</entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_IMAGE3D_MAX_HEIGHT</constant></entry> |
| <entry>size_t</entry> |
| <entry> |
| Max height of 3D image in pixels. The minimum value is 2048 if |
| <constant>CL_DEVICE_IMAGE_SUPPORT</constant> is <constant>CL_TRUE</constant>. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_IMAGE3D_MAX_WIDTH</constant></entry> |
| <entry>size_t</entry> |
| <entry> |
| Max width of 3D image in pixels. The minimum value is 2048 if |
| <constant>CL_DEVICE_IMAGE_SUPPORT</constant> is <constant>CL_TRUE</constant>. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_IMAGE_MAX_BUFFER_SIZE</constant></entry> |
| <entry>size_t</entry> |
| <entry> |
| Max number of pixels for a 1D image created from a buffer object. |
| The minimum value is 65536 if <constant>CL_DEVICE_IMAGE_SUPPORT</constant> |
| is <constant>CL_TRUE</constant>. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_IMAGE_MAX_ARRAY_SIZE</constant></entry> |
| <entry>size_t</entry> |
| <entry> |
| Max number of images in a 1D or 2D image array. The minimum value is 2048 if |
| <constant>CL_DEVICE_IMAGE_SUPPORT</constant> is <constant>CL_TRUE</constant> |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_LINKER_AVAILABLE</constant></entry> |
| <entry>cl_bool</entry> |
| <entry> |
| Is <constant>CL_FALSE</constant> if the implementation does not |
| have a linker available. Is <constant>CL_TRUE</constant> if the |
| linker is available. This can be <constant>CL_FALSE for the embedded |
| platform profile only. This must be <constant>CL_TRUE</constant> if |
| <constant>CL_DEVICE_COMPILER_AVAILABLE</constant> is CL_TRUE</constant> |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_LOCAL_MEM_SIZE</constant></entry> |
| <entry>cl_ulong</entry> |
| <entry> |
| Size of local memory arena in bytes. The minimum value is 32 KB for |
| devices that are not of type <constant>CL_DEVICE_TYPE_CUSTOM</constant>. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_LOCAL_MEM_TYPE</constant></entry> |
| <entry> <para>cl_device_-</para><para>local_mem_type</para></entry> |
| <entry> |
| Type of local memory supported. This can be set to |
| <constant>CL_LOCAL</constant> implying dedicated local memory storage |
| such as SRAM, or <constant>CL_GLOBAL</constant>. For custom devices, |
| <constant>CL_NONE</constant> can also be returned indicating no local |
| memory support. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_MAX_CLOCK_FREQUENCY</constant></entry> |
| <entry>cl_uint</entry> |
| <entry>Maximum configured clock frequency of the device in MHz.</entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_MAX_COMPUTE_UNITS</constant></entry> |
| <entry>cl_uint</entry> |
| <entry> |
| The number of parallel compute units on the OpenCL device. A work-group executes |
| on a single compute unit. The minimum value is 1. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_MAX_CONSTANT_ARGS</constant></entry> |
| <entry>cl_uint</entry> |
| <entry> |
| Max number of arguments declared with the <citerefentry |
| href="constant"><refentrytitle>__constant</refentrytitle></citerefentry> |
| qualifier in a kernel. The minimum value is 8 for devices that are not |
| of type <constant>CL_DEVICE_TYPE_CUSTOM</constant>. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE</constant></entry> |
| <entry>cl_ulong</entry> |
| <entry> |
| Max size in bytes of a constant buffer allocation. The |
| minimum value is 64 KB for devices that are not of type |
| <constant>CL_DEVICE_TYPE_CUSTOM</constant>. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_MAX_MEM_ALLOC_SIZE</constant></entry> |
| <entry>cl_ulong</entry> |
| <entry> |
| Max size of memory object allocation in bytes. The minimum value is max (1/4th |
| of <constant>CL_DEVICE_GLOBAL_MEM_SIZE</constant>, 128*1024*1024) for devices |
| that are not of type <constant>CL_DEVICE_TYPE_CUSTOM</constant>. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_MAX_PARAMETER_SIZE</constant></entry> |
| <entry>size_t</entry> |
| <entry> |
| Max size in bytes of the arguments that can be passed to a |
| kernel. The minimum value is 1024 for devices that are not of type |
| <constant>CL_DEVICE_TYPE_CUSTOM</constant>. For this minimum value, |
| only a maximum of 128 arguments can be passed to a kernel. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_MAX_READ_IMAGE_ARGS</constant></entry> |
| <entry>cl_uint</entry> |
| <entry> |
| Max number of simultaneous image objects that can be read by a kernel. The |
| minimum value is 128 if <constant>CL_DEVICE_IMAGE_SUPPORT</constant> |
| is <constant>CL_TRUE</constant>. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_MAX_SAMPLERS</constant></entry> |
| <entry>cl_uint</entry> |
| <entry> |
| Maximum number of samplers that can be used in a kernel. The minimum |
| value is 16 if <constant>CL_DEVICE_IMAGE_SUPPORT</constant> |
| is <constant>CL_TRUE</constant>. (Also see |
| <citerefentry><refentrytitle>sampler_t</refentrytitle></citerefentry>.) |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_MAX_WORK_GROUP_SIZE</constant></entry> |
| <entry>size_t</entry> |
| <entry> |
| Maximum number of work-items in a work-group executing a kernel on a |
| single compute unit, using the data parallel execution model. (Refer to |
| <citerefentry><refentrytitle>clEnqueueNDRangeKernel</refentrytitle></citerefentry>). |
| The minimum value is 1. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS</constant></entry> |
| <entry>cl_uint</entry> |
| <entry> |
| Maximum dimensions that specify the global and local |
| work-item IDs used by the data parallel execution model. (Refer to |
| <citerefentry><refentrytitle>clEnqueueNDRangeKernel</refentrytitle></citerefentry>). |
| The minimum value is 3 for devices that are not of type |
| <constant>CL_DEVICE_TYPE_CUSTOM</constant>. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_MAX_WORK_ITEM_SIZES</constant></entry> |
| <entry>size_t[]</entry> |
| <entry> |
| <para> |
| Maximum number of work-items that can be |
| specified in each dimension of the work-group to |
| <citerefentry><refentrytitle>clEnqueueNDRangeKernel</refentrytitle></citerefentry>. |
| </para> |
| |
| <para> |
| Returns <varname>n</varname> size_t entries, where |
| <varname>n</varname> is the value returned by the query for |
| <constant>CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS</constant>. |
| </para> |
| |
| <para> |
| The minimum value is (1, 1, 1) for devices that are not of type |
| <constant>CL_DEVICE_TYPE_CUSTOM</constant>. |
| </para> |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_MAX_WRITE_IMAGE_ARGS</constant></entry> |
| <entry>cl_uint</entry> |
| <entry> |
| Max number of simultaneous image objects that can |
| be written to by a kernel. The minimum value is 8 if |
| <constant>CL_DEVICE_IMAGE_SUPPORT</constant> is <constant>CL_TRUE</constant>. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_MEM_BASE_ADDR_ALIGN</constant></entry> |
| <entry>cl_uint</entry> |
| <entry> |
| The minimum value is the size (in bits) of the largest OpenCL built-in |
| data type supported by the device (<type>long16</type> in FULL profile, |
| <type>long16</type> or <type>int16</type> in EMBEDDED profile) for devices |
| that are not of type <constant>CL_DEVICE_TYPE_CUSTOM</constant>. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE</constant></entry> |
| <entry>cl_uint</entry> |
| <entry> |
| Deprecated in OpenCL 1.2. The smallest alignment in bytes which can be |
| used for any data type. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_NAME</constant></entry> |
| <entry>char[]</entry> |
| <entry>Device name string.</entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR</constant> |
| <para><constant>CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT</constant></para> |
| <para><constant>CL_DEVICE_NATIVE_VECTOR_WIDTH_INT</constant></para> |
| <para><constant>CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG</constant></para> |
| <para><constant>CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT</constant></para> |
| <para><constant>CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE</constant></para> |
| <para><constant>CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF</constant></para></entry> |
| <entry>cl_uint</entry> |
| <entry> |
| <para> |
| Returns the native ISA vector width. The vector width is defined as |
| the number of scalar elements that can be stored in the vector. |
| </para> |
| |
| <para> |
| If double precision is not supported, |
| <constant>CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE</constant> must return 0. |
| </para> |
| |
| <para> |
| If the |
| <citerefentry><refentrytitle>cl_khr_fp16</refentrytitle></citerefentry> |
| extension is not supported, |
| <constant>CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF</constant> must return 0. |
| </para> |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_OPENCL_C_VERSION</constant></entry> |
| <entry>char[]</entry> |
| <entry> |
| <para> |
| OpenCL C version string. Returns the highest OpenCL C version |
| supported by the compiler for this device that is not of type |
| <constant>CL_DEVICE_TYPE_CUSTOM</constant>. This version string has |
| the following format: |
| </para> |
| |
| <para> |
| <varname> |
| OpenCL<space>C<space><major_version.minor_version><space><vendor-specific |
| information> </varname> |
| </para> |
| |
| <para> |
| The <varname>major_version.minor_version</varname> value returned must |
| be 1.2 if <constant>CL_DEVICE_VERSION</constant> is OpenCL 1.2. |
| </para> |
| |
| <para> |
| The <varname>major_version.minor_version</varname> value returned must |
| be 1.1 if <constant>CL_DEVICE_VERSION</constant> is OpenCL 1.1. |
| </para> |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_PARENT_DEVICE</constant></entry> |
| <entry>cl_device_id</entry> |
| <entry> |
| Returns the cl_device_id of the parent device to which this sub-device |
| belongs. If device is a root-level device, a NULL value is returned. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_PARTITION_MAX_SUB_DEVICES</constant></entry> |
| <entry>cl_uint</entry> |
| <entry> |
| Returns the maximum number of sub-devices that can be created |
| when a device is partitioned. The value returned cannot exceed |
| <constant>CL_DEVICE_MAX_COMPUTE_UNITS</constant>. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_PARTITION_PROPERTIES</constant></entry> |
| <entry><para>cl_device_partit-</para><para>ion_property[]</para></entry> |
| <entry> |
| Returns the list of partition types supported by device. This is an array of |
| <varname>cl_device_partition_property</varname> values drawn from the following list: |
| <itemizedlist mark="disc"> |
| <listitem><constant>CL_DEVICE_PARTITION_EQUALLY</constant></listitem> |
| <listitem><constant>CL_DEVICE_PARTITION_BY_COUNTS</constant></listitem> |
| <listitem><constant>CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN</constant></listitem> |
| </itemizedlist> |
| If the device does not support any partition types, a value of 0 will be returned. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_PARTITION_AFFINITY_DOMAIN</constant></entry> |
| <entry><para>cl_device_aff-</para><para>inity_domain</para></entry> |
| <entry> |
| Returns the list of supported affinity domains for partitioning the device using |
| <constant>CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN</constant>. |
| This is a bit-field that describes one or more of the following values: |
| <itemizedlist mark="disc"> |
| <listitem><constant>CL_DEVICE_AFFINITY_DOMAIN_NUMA</constant></listitem> |
| <listitem><constant>CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE</constant></listitem> |
| <listitem><constant>CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE</constant></listitem> |
| <listitem><constant>CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE</constant></listitem> |
| <listitem><constant>CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE</constant></listitem> |
| <listitem><constant>CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE</constant></listitem> |
| </itemizedlist> |
| If the device does not support any affinity domains, a value of 0 will be returned. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_PARTITION_TYPE</constant></entry> |
| <entry><para>cl_device_part-</para><para>ition_property[]</para></entry> |
| <entry> |
| Returns the properties argument specified in |
| <citerefentry><refentrytitle>clCreateSubDevices</refentrytitle></citerefentry> |
| if <varname>device</varname> is a subdevice. Otherwise the implementation |
| may either return a <varname>param_value_size_ret</varname> of 0 i.e. there |
| is no partition type associated with <varname>device</varname> or can |
| return a property value of 0 (where 0 is used to terminate the partition |
| property list) in the memory that <varname>param_value</varname> points to. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_PLATFORM</constant></entry> |
| <entry><link xlink:href="abstractDataTypes.html">cl_platform_id</link></entry> |
| <entry>The platform associated with this device.</entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR</constant> |
| <para><constant>CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT</constant></para> |
| <para><constant>CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT</constant></para> |
| <para><constant>CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG</constant></para> |
| <para><constant>CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT</constant></para> |
| <para><constant>CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE</constant></para> |
| <para><constant>CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF</constant></para></entry> |
| <entry>cl_uint</entry> |
| <entry> |
| <para> |
| Preferred native vector width size for built-in scalar types that can |
| be put into vectors. The vector width is defined as the number of scalar |
| elements that can be stored in the vector. |
| </para> |
| |
| <para> |
| If double precision is not supported, |
| <constant>CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE</constant> must return 0. |
| </para> |
| |
| <para> |
| If the |
| <citerefentry><refentrytitle>cl_khr_fp16</refentrytitle></citerefentry> |
| extension is not supported, |
| <constant>CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF</constant> must return 0. |
| </para> |
| |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_PRINTF_BUFFER_SIZE</constant></entry> |
| <entry>size_t</entry> |
| <entry> |
| Maximum size of the internal buffer that holds the output of <citerefentry |
| href="printfFunction"><refentrytitle>printf</refentrytitle></citerefentry> |
| calls from a kernel. The minimum value for the FULL profile is 1 MB. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_PREFERRED_INTEROP_USER_SYNC</constant></entry> |
| <entry>cl_bool</entry> |
| <entry> |
| Is <constant>CL_TRUE</constant> if the device's preference is for the user |
| to be responsible for synchronization, when sharing memory objects between |
| OpenCL and other APIs such as DirectX, <constant>CL_FALSE</constant> if the |
| device / implementation has a performant path for performing synchronization |
| of memory object shared between OpenCL and other APIs such as DirectX |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_PROFILE</constant></entry> |
| <entry>char[]</entry> |
| <entry> |
| <para> |
| OpenCL profile string. Returns the profile name supported by the device |
| (see note). The profile name returned can be one of the following strings: |
| </para> |
| |
| <para> |
| FULL_PROFILE - if the device supports the OpenCL specification |
| (functionality defined as part of the core specification and does not |
| require any extensions to be supported). |
| </para> |
| |
| <para> |
| EMBEDDED_PROFILE - if the device supports the OpenCL embedded profile. |
| </para> |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_PROFILING_TIMER_RESOLUTION</constant></entry> |
| <entry>size_t</entry> |
| <entry>Describes the resolution of device timer. This is measured in nanoseconds.</entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_QUEUE_PROPERTIES</constant></entry> |
| <entry> |
| <para>cl_command_-</para> |
| <para>queue_properties</para> |
| </entry> |
| |
| <entry> |
| <para> |
| Describes the command-queue properties supported by the device. This is |
| a bit-field that describes one or more of the following values: |
| </para> |
| |
| <para><constant>CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE</constant></para> |
| <para><constant>CL_QUEUE_PROFILING_ENABLE</constant></para> |
| <para> |
| These properties are described in the table for |
| <citerefentry><refentrytitle>clCreateCommandQueue</refentrytitle></citerefentry>. |
| The mandated minimum capability is |
| <constant>CL_QUEUE_PROFILING_ENABLE</constant>. |
| </para> |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_REFERENCE_COUNT</constant></entry> |
| <entry>cl_uint</entry> |
| <entry> |
| Returns the device reference count. If the device is a root-level device, |
| a reference count of one is returned. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_SINGLE_FP_CONFIG</constant></entry> |
| <entry><para>cl_device_-</para><para>fp_config</para></entry> |
| <entry> |
| <para> |
| Describes single precision floating-point capability of the device. This |
| is a bit-field that describes one or more of the following values: |
| </para> |
| |
| <para><constant>CL_FP_DENORM</constant> - denorms are supported</para> |
| <para><constant>CL_FP_INF_NAN</constant> - INF and quiet NaNs are supported</para> |
| <para><constant>CL_FP_ROUND_TO_NEAREST</constant> - round to nearest even rounding mode supported</para> |
| <para><constant>CL_FP_ROUND_TO_ZERO</constant> - round to zero rounding mode supported</para> |
| <para><constant>CL_FP_ROUND_TO_INF</constant> - round to +ve and -ve infinity rounding modes supported</para> |
| <para><constant>CL_FP_FMA</constant> - IEEE754-2008 fused multiply-add is supported</para> |
| |
| <para> |
| <constant>CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT</constant> - divide and |
| sqrt are correctly rounded as defined by the IEEE754 specification. |
| </para> |
| |
| <para> |
| <constant>CL_FP_SOFT_FLOAT</constant> - Basic floating-point operations |
| (such as addition, subtraction, multiplication) are implemented in |
| software. |
| </para> |
| |
| <para> |
| The mandated minimum floating-point capability for devices that |
| are not of type <constant>CL_DEVICE_TYPE_CUSTOM</constant> |
| is <constant>CL_FP_ROUND_TO_NEAREST</constant> | |
| <constant>CL_FP_INF_NAN</constant>. |
| </para> |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_TYPE</constant></entry> |
| <entry>cl_device_type</entry> |
| <entry> |
| The OpenCL device type. Currently supported values are one of or |
| a combination of: <constant>CL_DEVICE_TYPE_CPU</constant>, |
| <constant>CL_DEVICE_TYPE_GPU</constant>, |
| <constant>CL_DEVICE_TYPE_ACCELERATOR</constant>, |
| <constant>CL_DEVICE_TYPE_DEFAULT</constant>, a combination of the above |
| types, or <constant>CL_DEVICE_TYPE_CUSTOM</constant>. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_VENDOR</constant></entry> |
| <entry>char[]</entry> |
| <entry>Vendor name string.</entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_VENDOR_ID</constant></entry> |
| <entry>cl_uint</entry> |
| <entry> |
| A unique device vendor identifier. An example of a unique device identifier |
| could be the PCIe ID. |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DEVICE_VERSION</constant></entry> |
| <entry>char[]</entry> |
| <entry> |
| <para> |
| OpenCL version string. Returns the OpenCL version supported by the |
| device. This version string has the following format: |
| </para> |
| |
| <para> |
| <varname> |
| OpenCL<space><major_version.minor_version><space><vendor-specific |
| information> </varname> |
| </para> |
| |
| <para> |
| The <varname>major_version.minor_version</varname> value returned will |
| be 1.2. |
| </para> |
| </entry> |
| </row> |
| |
| <row> |
| <entry><constant>CL_DRIVER_VERSION</constant></entry> |
| <entry>char[]</entry> |
| <entry> |
| OpenCL software driver version string in the form |
| <varname>major_number.minor_number</varname>. |
| </entry> |
| </row> |
| </tbody> |
| </tgroup> |
| </informaltable> |
| </listitem> |
| </varlistentry> |
| |
| <!-- ================================ END PARAMETER TABLE --> |
| |
| </variablelist> |
| </refsect1> |
| |
| <!-- ================================ NOTES --> |
| |
| <refsect1 id="notes"><title>Notes</title> |
| <para> |
| <constant>CL_DEVICE_PROFILE</constant>: The platform profile returns the profile |
| that is implemented by the OpenCL framework. If the platform profile returned is |
| FULL_PROFILE, the OpenCL framework will support devices that are FULL_PROFILE and may |
| also support devices that are <constant>EMBEDDED_PROFILE</constant>. The compiler must |
| be available for all devices i.e. <constant>CL_DEVICE_COMPILER_AVAILABLE</constant> |
| is <constant>CL_TRUE</constant>. If the platform profile returned |
| is <constant>EMBEDDED_PROFILE</constant>, then devices that are only |
| <constant>EMBEDDED_PROFILE</constant> are supported. |
| </para> |
| |
| <para> |
| The device queries described the table above should return the |
| same information for a root-level device i.e. a device returned by |
| <citerefentry><refentrytitle>clGetDeviceIDs</refentrytitle></citerefentry> and any |
| sub-devices created from this device except for the following queries: |
| |
| <itemizedlist mark="disc"> |
| <listitem><constant>CL_DEVICE_GLOBAL_MEM_CACHE_SIZE</constant></listitem> |
| <listitem><constant>CL_DEVICE_BUILT_IN_KERNELS</constant></listitem> |
| <listitem><constant>CL_DEVICE_PARENT_DEVICE</constant></listitem> |
| <listitem><constant>CL_DEVICE_PARTITION_TYPE</constant></listitem> |
| <listitem><constant>CL_DEVICE_REFERENCE_COUNT</constant></listitem> |
| </itemizedlist> |
| </para> |
| </refsect1> |
| |
| <!-- ================================ ERRORS --> |
| |
| <refsect1 id="errors"><title>Errors</title> |
| <para> |
| <function>clGetDeviceInfo</function> returns <errorname>CL_SUCCESS</errorname> if the |
| function is executed successfully. Otherwise, it returns the following: |
| </para> |
| |
| <itemizedlist mark="disc"> |
| <listitem> |
| <errorname>CL_INVALID_DEVICE</errorname> if <varname>device</varname> is not valid. |
| </listitem> |
| |
| <listitem> |
| <errorname>CL_INVALID_VALUE</errorname> if <varname>param_name</varname> |
| is not one of the supported values or if size in bytes specified by |
| <varname>param_value_size</varname> is less than size of return type as shown in the |
| table above and <varname>param_value</varname> is not a <errorname>NULL</errorname> |
| value or if param_name is a value that is available as an extension and the corresponding |
| extension is not supported by the device. |
| </listitem> |
| |
| <listitem> |
| <errorname>CL_OUT_OF_RESOURCES</errorname> if there is a failure to allocate resources |
| required by the OpenCL implementation on the device. |
| </listitem> |
| |
| <listitem> |
| <errorname>CL_OUT_OF_HOST_MEMORY</errorname> if there is a failure to allocate |
| resources required by the OpenCL implementation on the host. |
| </listitem> |
| |
| </itemizedlist> |
| </refsect1> |
| |
| <!-- ================================ EXAMPLE --> |
| <!-- DO NOT DELETE IN CASE AN EXAMPLE IS ADDED IN THE FUTURE --> |
| <!-- |
| <refsect2 id="example1"> |
| <title> |
| Example |
| </title> |
| |
| <informaltable frame="none"> |
| <tgroup cols="1" align="left" colsep="0" rowsep="0"> |
| <colspec colname="col1" colnum="1" /> |
| <tbody> |
| <row> |
| <entry> |
| Example goes here - it will be set in "code" type with white space preserved. |
| </entry> |
| </row> |
| </tbody> |
| </tgroup> |
| </informaltable> |
| </refsect2> |
| --> |
| |
| <!-- ================================ SPECIFICATION --> |
| <!-- Set the "uri" attribute in the <olink /> element to the "named destination" for the PDF page |
| --> |
| <refsect1 id="specification"><title>Specification</title> |
| <para><imageobject><imagedata fileref="pdficon_small1.gif" format="gif" /></imageobject> |
| <olink uri="clGetDeviceInfo">OpenCL Specification</olink> |
| </para> |
| </refsect1> |
| |
| <!-- ================================ ALSO SEE --> |
| |
| <refsect1 id="seealso"><title>Also see</title> |
| <para> |
| <citerefentry><refentrytitle>clGetDeviceIDs</refentrytitle></citerefentry>, |
| <citerefentry><refentrytitle>cl_khr_fp64</refentrytitle></citerefentry>, |
| <citerefentry href="constant"><refentrytitle>__constant</refentrytitle></citerefentry>, |
| <citerefentry><refentrytitle>clCreateCommandQueue</refentrytitle></citerefentry>, |
| <citerefentry><refentrytitle>clRetainCommandQueue</refentrytitle></citerefentry>, |
| <citerefentry><refentrytitle>clEnqueueNDRangeKernel</refentrytitle></citerefentry> |
| </para> |
| </refsect1> |
| |
| <!-- ============================== COPYRIGHT --> |
| <!-- Content included from copyright.inc.xsl --> |
| |
| <refsect3 id="Copyright"><title></title> |
| <imageobject> |
| <imagedata fileref="KhronosLogo.jpg" format="jpg" /> |
| </imageobject> |
| <para /> |
| </refsect3> |
| |
| <!-- 28-Oct-2011 --> |
| </refentry> |
| |