【问题标题】:Unable to use OpenCl vector data type无法使用 OpenCl 矢量数据类型
【发布时间】:2018-07-24 00:36:21
【问题描述】:

我在 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。

谁能告诉我原因?

谢谢

【问题讨论】:

  • float4 是一种设备类型,用于内核代码。你在哪里使用float4,在主机上还是在设备代码中?在您需要使用 cl_float4 的主机上。而且访问器是不同的(更像是数组表示法)。
  • 哦,这就是重点,我在主机代码中使用它,我在内核上测试它没有错误,非常感谢。
  • 我会把它作为未来观众的答案。

标签: vector types opencl


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    相关资源
    最近更新 更多