Device Query (CPP)

This Example prints the OpenCL properties of the platform and its devices using OpenCL CPP APIs. It also displays the limits and capabilities of the hardware.

KEY CONCEPTS: OpenCL API, Querying device properties

This example is to get the details of all the OpenCL Devices connected to system. Platform IDs and Device IDs can be extracted using Open CL APIs which are subsequently needed to configure the context and command queues for communication between host and device. Example first searches all the connected Platforms using clGetPlatformIDs() API. Then it traverses to each Platform and finds all the connected devices using clGetDeviceIDs(). Then it traverses all the devices and print all device properties like device type, vendor id etc. It reports the details as below:

platform profile    : EMBEDDED_PROFILE
platform version    : OpenCL 1.0
platform name       : Xilinx
platform vendor     : Xilinx
platform extensions : cl_khr_icd
Device 0:
  device type                            : CL_DEVICE_TYPE_ACCELERATOR
  device vendor id                       : 0
  device max compute units               : 0
  device max work item dimensions        : 3
  device max work group size             : 4294967295
  device max work item sizes             : [  4294967295  4294967295  4294967295  ]
  device preferred vector width char     : 1
  device preferred vector width short    : 1
  device preferred vector width int      : 1
  device preferred vector width long     : 1
  device preferred vector width float    : 1
  device preferred vector width double   : 0
  device max clock frequency             : 509
  device address bits                    : 64
  device max read image args             : 128
  device max write image args            : 8
  device max mem alloc size              : 536870912
  device image2d max width               : 8192
  device image2d max height              : 8192
  device image3d max width               : 2048
  device image3d max height              : 2048
  device image3d max depth               : 2048
  device image support                   : true
  device max parameter size              : 2048
  device max samplers                    : 0
  device mem base addr align             : 32768
  device min data type align size        : 128
  device single fp config                : [ CL_FP_INF_NAN ]
  device global mem cache type           : CL_NONE
  device global mem cacheline size       : 64
  device global mem cache size           : 0
  device global mem size                 : 0
  device max constant buffer size        : 4194304
  device max constant args               : 8
  device local mem type                  : CL_LOCAL
  device local mem size                  : 16384
  device error correction support        : true
  device profiling timer resolution      : 1
  device endian little                   : true
  device available                       : false
  device compiler available              : false
  device execution capabilities          : [ CL_EXEC_KERNEL ]
  device queue properties                : [ CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE CL_QUEUE_PROFILING_ENABLE ]
  device name                            :
  device vendor                          : Xilinx
  device version                         : 1.0
  device profile                         : EMBEDDED_PROFILE
  device version                         : OpenCL 1.0
  device extensions                      :
  device platform                        : Xilinx
  device double fp config                : [ ]
  device preferred vector width half     : 1
  device host unified memory             : true
  device native vector width char        : 1
  device native vector width short       : 1
  device native vector width int         : 1
  device native vector width long        : 1
  device native vector width float       : 1
  device native vector width double      : 1
  device native vector width half        : 1
  device opencl c version                : OpenCL C 1.0
  device linker available                : true
  device built in kernels                :
  device image max buffer size           : 65536
  device image max array size            : 2048
  device parent device                   : N/A
  device partition max sub devices       : 0
  device partition properties            : NONE
  device partition affinity domain       : [ ]
  device partition type                  : N/A
  device reference countplatforms[p].getDevices(CL_DEVICE_TYPE_ALL, &devices): 1
  device preferred interop user sync     : true
  device printf buffer size              : 0
TEST PASSED

EXCLUDED PLATFORMS

Platforms containing following strings in their names are not supported for this example :

zc
vck

DESIGN FILES

Application code is located in the src directory. Accelerator binary files will be compiled to the xclbin directory. The xclbin directory is required by the Makefile and its contents will be filled during compilation. A listing of all the files in this example is shown below

src/host.cpp

Access these files in the github repo by clicking here.

COMMAND LINE ARGUMENTS

Once the environment has been configured, the application can be executed by

./device_query