Marix

vload vs. cache

Discussion created by Marix on Apr 14, 2011
Latest reply on Apr 14, 2011 by MicahVillmow
vloadn does not compile with const * resrict

Playing around with the new features in SDK 2.4 I found the following problem when trying to utilize both, vector memory instructions and L1/L2 cache.

My code utilizes vload to enable SSE-code generation and better VLIW-filling as described in Section 4.15.5 of the APP OpenCL Programming Guide. However when trying to utilize L1/L2 cache by making the pointers to input buffers const * restrict the compiler produces the following error:

error: bad argument type to opencl vload/vstore:
expected pointer to scalar with addrSpace
global/local/private/constant(vload only)
accumulator += vload4( i, in );

I want to add, that I can currently work around the problem using -fno-alias. However this is, IMHO, very hacky as it seperates the information from the code and only works in the simply cases that there are no aliasing pointers anywhere in the application.

 

error: bad argument type to opencl vload/vstore: expected pointer to scalar with addrSpace global/local/private/constant(vload only) accumulator += vload4( i, in );

Outcomes