Well I prefer to use brook+ and not CAL because I don't like the idea to work with low-level shaders. Do you know if brook`is going to extend the 1D arrays to, let's say, the full graphics card's VRAM? In CUDA I can allocate a really big 1D array without problems...
I see in the 1.2 docs that the maximum 1D array has 8192 elements ( 64M with virtualisation )... but I need to allocate 300 or 400Mb of linear data...
With CUDA I can use all the VRAM if it's needed ( using device memory pointers )... is there any way to allocate, for example, 500Mb of VRAM in brook+, pls? If not... when is this going to be supported?
You can allocate a 1D array in C/C++, pass the pointer to a 2D stream in Brook+. Inside the kernel, you can reconstruct the 1D index (index = row*width+column). The maximum 2D array allowed in Brook+ is 8192x8192. We are considering increasing this limit in future releases.
Originally posted by: udeepta@amdWe are considering increasing this limit in future releases.
Yes, please... 64Mb is not enough. I just hope that won't be a hardware limit
For a texture 8kx8k can be enough... but, in my case, I need to store a really big tree in VRAM.
We hear ya.
In the mean time, will your algorithm work if you break the large linear data into a few smaller segments? The performance impact will not be very high. But i agree the limitation is something we could do without.
Originally posted by: udeepta@amd
In the mean time, will your algorithm work if you break the large linear data into a few smaller segments?
It's for raytracing a 15M poly model using a kd-tree in the GPU ( I need a total of 700Mb for that... which should be ok using a 1Gb card ). I could be break the kernels in parts... but it gonna be too difficult, so I think I'll just wait until you remove the 64Mb limitation. I need to polish some things meanwhile.
Btw... other question... can be the StreamSDK's arrays virtualized like it's done with the system RAM? For example... imagine the graphics card the user is using has only 512Mb... Can be the other 256Mb I need got from the AGP/PCI memory?