无法使用OpenCl矢量数据类型

时间:2018-02-13 15:29:50

标签: vector types opencl

我在windows上的nvidia显卡上使用OpenCL 2.0 C,我想使用内置的矢量数据类型,但我不能使用它们,它们不知何故未被声明。例如,当我尝试初始化float4向量时,我收到以下错误:

float4 data_vec = (float4)(1.0, 1.0, 1.0, 1.0);
  

错误:'float4'未在此范围内声明

我一直在寻找opencl规范,但找不到原因。 虽然当我试图获得任何矢量类型的首选宽度时,我得到1例如:

cl_uint float_width;
err = clGetDeviceInfo(devices[0], 
CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT,sizeof(char_width), &char_width, NULL);
printf("%d",float_width);

即使我尝试CL_DEVICE_PREFERRED_VECTOR_WIDTH_INTCL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR,我也会得到1。

有人能告诉我原因吗?

由于

1 个答案:

答案 0 :(得分:2)

float4设备类型,用于内核代码。在主机端,您需要使用cl_float4,并且访问者是不同的(更像数组表示法)。