OpenCl: фаза Codegen завершилась неудачно - PullRequest
0 голосов
/ 17 апреля 2020

У меня очень простое ядро, которое должно немного принять решение по некоторым данным. Вход имеет тип float4, в то время как bit_decision имеет тип uchar4. На моей карте AMD появляется ошибка компиляции:

Размер типа структуры данных, используемой для слишком маленького значения

Ошибка: программа HSAIL не была успешно завершена.

Ошибка фазы компиляции Codegen.

Ошибка: завершение BRIG для ISA не удалось.

__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);
}

Есть идеи, что не так с кодом?

1 Ответ

0 голосов
/ 17 апреля 2020

После того, как я добавил convert_uchar4 (...), ошибка компиляции больше не появляется. Похоже, условие аргумента в функции выбора (a, b, условие) должно быть того же типа, что и 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)));
}
...