【问题标题】:OpenCl: Codegen phase failed compilationOpenCl:Codegen 阶段编译失败
【发布时间】:2020-04-17 14:56:44
【问题描述】:

我有一个非常简单的内核,它应该对一些输入做出一些决定。输入是 float4 类型,而 bit_decision 是 uchar4 类型。在我的 AMD 卡上出现编译错误:

用于保存值的数据结构类型的大小太小

错误:HSAIL 程序未成功完成。

Codegen 阶段编译失败。

错误:对 ISA 的 BRIG 最终确定失败。

__kernel void hard_decision(__global const float4 *input,
                            __global  uchar4 *bit_decision,
                            uchar4 zero,
                            uchar4 one)
{
    bit_decision[get_global_id(0)] = select(zero, one, input[get_global_id(0)]<0);
}

知道代码有什么问题吗?

【问题讨论】:

    标签: c opencl pyopencl


    【解决方案1】:

    在我添加 convert_uchar4(...) 后,不再出现编译错误。似乎 select(a,b, condition) 函数中的参数条件必须与 a 和 b 的类型相同。我还将条件部分中的 0 更改为 (float4)(0,0,0,0)。

    __kernel void hard_decision(__global const float4 *input,
                                __global  uchar4 *bit_decision,
                                uchar4 zero,
                                uchar4 one)
    {
        bit_decision[get_global_id(0)] = select(zero, one, convert_uchar4(input[get_global_id(0)]<(float4)(0,0,0,0)));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      • 2022-09-28
      • 2022-01-18
      • 2019-12-19
      相关资源
      最近更新 更多