While writing a report on using OpenCL-Layers as part of the CTS, I found that when querying CL_DEVICE_PARTITION_PROPERTIES, which ought to return a cl_device_partition_property[] (aka. intptr_t[]) OpenCLOn12 wishes to communicate it supports no device partitioning by returning the integral constant 0 as per the specs:
If the device cannot be partitioned (i.e. there is no partitioning scheme supported by the device that will return at least two subdevices), a value of 0 will be returned.
param_value_size_ret returns the actual size in bytes of data being queried by param_name. If param_value_size_ret is NULL, it is ignored.
however OpenCLOn12 sets this value to 4 in an x64 application. This is less number of bytes then the single literal constant 0 written into a cl_device_partition_property instance. This renders code such as the following to malfunction:
While writing a report on using OpenCL-Layers as part of the CTS, I found that when querying
CL_DEVICE_PARTITION_PROPERTIES
, which ought to return acl_device_partition_property[]
(aka.intptr_t[]
) OpenCLOn12 wishes to communicate it supports no device partitioning by returning the integral constant0
as per the specs:The function in question reads:
and the spec says:
however OpenCLOn12 sets this value to 4 in an x64 application. This is less number of bytes then the single literal constant
0
written into acl_device_partition_property
instance. This renders code such as the following to malfunction: