2 Replies Latest reply on Dec 21, 2009 8:25 PM by nythrix

    Setting kernel args - nVidia vs ATI

    nythrix

      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 ) {}