cancel
Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

jean-claude
Journeyman III

Max number of input stream for a kernel ?

Reading the documentation it is stated that a kernel can support upto 128 input streams and 8 output streams.

However trying to run the following program, the brook/cal runtime automatically switches to CPU mode and not on the GPU

kernel void median33_k(out float output<>, float c<>,
                       float r<>,  float l<>,  float u<>,  float d<>,
                       float ur<>, float ul<>, float dr<>, float dl<> {
....
}

So what is the actual limit for an  execution on the GPU ???

0 Likes
6 Replies
udeepta
Staff

8 non-gather input streams(<>), 128 gather input streams([]), 8 output streams. You can have more than 8 output streams, but Brook+ will split the kernel into multiple passes behind the scenes so that each pass has no more than 8 outputs.

 

0 Likes

Does CAL support more input streams?

0 Likes
nberger
Adept I

Just eight input streams? Stuff like that has to be stated somewhere in the documentation!
If I use more than eight streams (or struct streams with more than 8 fundamental members) Brook will automatically switch to the CPU or will the compiler split the kernel?
0 Likes

nberger, you get 8 sequential input + 128 gather input streams.

 

0 Likes

CAL supports up to 16 input locations, 8 output on the 3870 and I think it is doubled to 32 and 16 for the 4870. You can modify easily the kernels in inputspeed/outputspeed in the samples/runtime directory to verify this.
0 Likes
nberger
Adept I

udeepta, thanks, I got that. What happens if I have more sequential inputs? I have (slow) running kernels with more...
0 Likes