gather with streams of different sizes

Discussion created by hennequi on Jun 3, 2009
Latest reply on Jun 8, 2009 by hennequi
gather with streams of different sizes

Good morning,

i am wondering if the domain over which a gather stream is reachable can be bigger than the domain of execution of the kernel.

In my case, I have a 1D input stream a<> of length N, one 2D gather stream b[][] of dimensions {M,N}, a normal 1D out stream c<> of length N, and I do the following

kernel void mykernel(float4 a<>, float4 b[][], out float4 c<>){

  unsigned int j;

  unsigned int index = instance().x;

  float4 tmp = a;

  for(j=0;j<M;j++) tmp = tmp + b[j][index];

  c = tmp;


What I noticed was that if N >= M the result is correct,

on the contrary if M < N it seems to be able to gather only those values b[j][index] for which j < N ...

is there a way to access the whole gather stream??

should I use one of those .domain things?

Thanks a lot