【问题标题】:failing to initialize opencl vector literal未能初始化 opencl 向量字面量
【发布时间】:2012-02-11 04:50:04
【问题描述】:

所以我试图在我的 opencl 主机代码中初始化一个变量,如下所示:

cl_float2       es = (cl_float2)(0.0f,0.0f);  

使用 Clang 2.9 失败:

source/solveEikonalEq.c:75:38: warning: expression result unused [-Wunused-value]
cl_float2       es = (cl_float2)(0.0f,0.0f);
                                 ^~~~
source/solveEikonalEq.c:75:26: error: cast to union type from type 'float' not present in union
cl_float2       es = (cl_float2)(0.0f,0.0f);             //ray's tangent vector
                     ^          ~~~~~~~~~~~

并且,当使用 GCC 4.6.1 时,失败并显示:

source/solveEikonalEq.c:75:42: warning: left-hand operand of comma expression has no effect [-Wunused-value]
source/solveEikonalEq.c:75:26: error: cast to union type from type not present in union

我正在使用 AMD 的 opencl sdk,并且可以很好地构建示例。 我做错了什么?

【问题讨论】:

    标签: opencl


    【解决方案1】:

    您正在尝试在主机代码中使用 OpenCL C 风格的初始化程序,这可能是使用 C 编译器编译的。换句话说,这种初始化方式仅在您的内核中有效。在那里,您不会使用平台类型,而只会使用float2

    改为在您的主机代码中尝试:

    cl_float2 var = { 0.0f, 0.0f };
    

    这对你有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-18
      • 1970-01-01
      • 2016-02-24
      • 2011-03-04
      • 1970-01-01
      • 2020-11-09
      • 2019-07-02
      • 2012-03-25
      相关资源
      最近更新 更多