[Beignet] [BUG] kernel fails at the backend
Zhigang Gong
zhigang.gong at linux.intel.com
Tue Oct 8 02:02:09 PDT 2013
On Sun, Oct 06, 2013 at 01:30:15AM -0400, Matt Harvey wrote:
> Hi
>
> I'm having trouble and was wondering if you guys had any insight. This
> simple kernel:
> __constant sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE |
> CLK_ADDRESS_CLAMP_TO_EDGE | CLK_FILTER_NEAREST;
Try to change the above statement to:
const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE | CLK_ADDRESS_CLAMP_TO_EDGE | CLK_FILTER_NEAREST;
>
> __kernel void edge_detect(__read_only image2d_t image_in,
> __write_only image2d_t image_out)
> {
> const int2 pos = { get_global_id(0), get_global_id(1) };
> //make this a pass through
> float4 data = read_imagef(image_in, sampler, pos);
> write_imagef(image_out, pos, data);
> }
>
> Fails after compilation with this error message:
> ASSERTION FAILED: arg != NULL
> at file /media/matto/Programming/src/beignet/backend/src/ir/sampler.cpp,
> function void gbe::ir::SamplerSet::append(gbe::ir::Register,
> gbe::ir::Context*), line 60
> Stack dump:
> 0. Running pass 'Function Pass Manager' on module '/tmp/fileB926yJ.ll'.
> 1. Running pass 'Gen Back-End' on function '@edge_detect'
It seems that for the __constant/constant qualifier, the compiler
will not do constant propagation. The only worked qualifier for sampler_t
is const, if you want to define it in the kernel. We will fix this problem
in the futuer, before that, you can use const as a workaround.
Thanks for reporting this bug.
>
> This looks like a bug to me.
>
> Any ideas?
>
> Thanks
> _______________________________________________
> Beignet mailing list
> Beignet at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet
More information about the Beignet
mailing list