[Beignet] *** SPAM LEVEL 4.053 *** Throwing the real world at Beignet

Lu, Guanqun guanqun.lu at intel.com
Thu Apr 18 18:31:24 PDT 2013


hi Simon,

I'm trying to test out your cl kernel. But met with the error that 'RayHit' is not defined. What other cl files should I include to make it work?

I'm new to the luxray library and confused when seeing there are lots of repo on its website: http://src.luxrender.net/


> -----Original Message-----
> From: beignet-bounces+guanqun.lu=intel.com at lists.freedesktop.org
> [mailto:beignet-bounces+guanqun.lu=intel.com at lists.freedesktop.org] On
> Behalf Of Simon Richter
> Sent: Friday, April 19, 2013 2:59 AM
> To: beignet at lists.freedesktop.org
> Subject: [Beignet] *** SPAM LEVEL 4.053 *** Throwing the real world at
> Beignet
> 
> Hi,
> 
> I've started playing with the LuxRays[1] raytracer in order to get some
> real-world numbers. The two patches I sent earlier are sufficient for compiling
> the default OpenCL based raytracer.
> 
> Next issues when compiling:
> 
> select()
> ========
> 
> | qbvh_kernel.cl:125:12: error: call to 'select' is ambiguous
> |     maxt = select(maxt, t.s0, cond0);
> |            ^~~~~~
> | /tmp/fileXcXZQf.cl:562:26: note: candidate function INLINE
> | OVERLOADABLE uint select(uint src0, uint src1, uint cond) {
> |                          ^
> | /tmp/fileXcXZQf.cl:568:27: note: candidate function INLINE
> | OVERLOADABLE float select(float src0, float src1, int cond) {
> |                           ^
> | /tmp/fileXcXZQf.cl:565:25: note: candidate function INLINE
> | OVERLOADABLE int select(int src0, int src1, int cond) {
> |                         ^
> | /tmp/fileXcXZQf.cl:590:1: note: candidate function DECL_SELECT4(int4,
> | int, int4, 0x80000000) ^
> | /tmp/fileXcXZQf.cl:574:27: note: expanded from:
> | INLINE OVERLOADABLE TYPE4 select(TYPE4 src0, TYPE4 src1, COND_TYPE4
> cond) { \
> |                           ^
> | /tmp/fileXcXZQf.cl:591:1: note: candidate function
> | DECL_SELECT4(float4, float, int4, 0x80000000) ^
> | /tmp/fileXcXZQf.cl:574:27: note: expanded from:
> | INLINE OVERLOADABLE TYPE4 select(TYPE4 src0, TYPE4 src1, COND_TYPE4
> cond) { \
>                           ^
> The overloads
> 
>  - select(uint, uint, uint)
>  - select(int, int, int)
>  - select(float, float, int)
> 
> exist -- their kernel wants to use the same condition to switch both between
> uints once and between ints at another point, so one of
> 
>  - select(uint, uint, int)
> or
>  - select(int, int, uint)
> 
> would be required. I've made that work with an explicit cast; is the current
> implementation conformant, or does the list of existing overloads need to be
> changed?
> 
> Images
> ======
> 
> | qbvh_kernel.cl:217:36: warning: implicit declaration of function
> 'get_image_width' is invalid in C99 [-Wimplicit-function-declaration]
> |     const int quadTrisImageWidth = get_image_width(quadTris);
> |                                    ^
> 
> This function does not exist in the spec -- I've tried replacing it with
> get_image_dim(...).x, which does, but that appears to be unimplemented.
> 
> | qbvh_kernel.cl:226:21: warning: incompatible integer to pointer
> conversion initializing 'const sampler_t' (aka
> '__attribute__((address_space(5))) unsigned int *const') with an expression of
> |       type 'int';
> |     const sampler_t imageSampler = CLK_NORMALIZED_COORDS_FALSE |
> CLK_ADDRESS_CLAMP | CLK_FILTER_NEAREST;
> |                     ^
> 
> Not sure that is legal.
> 
> | qbvh_kernel.cl:240:40: warning: implicit declaration of function
> 'as_float4' is invalid in C99 [-Wimplicit-function-declaration]
> |             const float4 bboxes_minX = as_float4(read_imageui(nodes,
> imageSampler, (int2)(inx + bboxes_minXIndex, iny)));
> |                                        ^
> | qbvh_kernel.cl:246:35: warning: implicit declaration of function
> 'as_int4' is invalid in C99 [-Wimplicit-function-declaration]
> |             const int4 children = as_int4(read_imageui(nodes,
> imageSampler, (int2)(inx + 6, iny)));
> |                                   ^
> 
> These are simple conversion functions and appear to be missing.
> 
> Assertions
> ==========
> 
> After teaching the raytracer not to use images for data storage, I ran into an
> assertion failure during code generation:
> 
> | ASSERTION FAILED: Type is not supported by the instruction
> |   at file
> /home/geier/debian/beignet-0.1+git20130418+0546d2e/backend/src/ir/contex
> t.cpp,
> function void gbe::ir::Context::append(const gbe::ir::Instruction&), line 160
> | Stack dump:
> | 0.      Running pass 'Function Pass Manager' on module
> '/tmp/fileQ1KHUR.ll'.
> | 1.      Running pass 'Gen Back-End' on function '@Intersect'
> 
> Kernel source is attached if anyone wants to take a look without downloading
> the entire LuxRays package.
> 
> These tests have been run through the ICD loader, by the way :)
> 
>    Simon
> 
> [1] http://www.luxrender.net/wiki/LuxRays


More information about the Beignet mailing list