cancel
Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

nythrix
Journeyman III

Setting kernel args - nVidia vs ATI

Hi,

Khronos' specs about setting kernel arguments are a bit obscure. So I set up a series of kernels and commented out the ones that don't compile on nVidia's implementation while the rest compiles fine (see code).

However, I get different results with ATI-Stream 2.0 beta 4 XP. Namely this:

------------------| Start Kernel args test |------------------
C:\Users\xxx\AppData\Local\Temp\OCL9414.tmp.cl(4): error: kernel pointer
arguments must point to addrSpace global, local, or constant
kernel void k03( image3d_t img ) {}
^
 
C:\Users\xxx\AppData\Local\Temp\OCL9414.tmp.cl(14): error: a parameter
cannot be allocated in a named address space
kernel void k11( global image3d_t img ) {}
^
 
C:\Users\xxx\AppData\Local\Temp\OCL9414.tmp.cl(14): error: kernel pointer
arguments must point to addrSpace global, local, or constant
kernel void k11( global image3d_t img ) {}
^
 
3 errors detected in the compilation of "C:\Users\xxx\AppData\Local\Temp\OCL94
14.tmp.cl"
.
image3d_t im
-------------------| End Kernel args test |-------------------

I'm not implying that this is a bug on ATI's implementation. Is someone able to tell me which behaviour is the right one?

kernel void k01( float num ) {} // kernel void k02( float * num ) {} kernel void k03( image3d_t img ) {} kernel void k04( sampler_t smp ) {} // kernel void k05( constant float num ) {} kernel void k06( constant float * num ) {} // kernel void k07( constant image3d_t img ) {} // kernel void k08( constant sampler_t smp ) {} // kernel void k09( global float num ) {} kernel void k10( global float * num ) {} kernel void k11( global image3d_t img ) {} // kernel void k12( global sampler_t smp ) {} // kernel void k13( local float num ) {} kernel void k14( local float * num ) {} // kernel void k15( local image3d_t img ) {} // kernel void k16( local sampler_t smp ) {}

0 Likes
2 Replies
nou
Exemplar

pointers must be constant global or local

image_Xd_t must be global. or it is global by default

non pointer must be private. sampler_t mybe too.

AMD implementations do not have image support so maybe for now it return error. see section 6.7 of openCL spec.

0 Likes

Indeed, image support was to blame here.

Thanks for your help.

0 Likes