SMEM without CUDA ?

I visited a CUDA tutorial recently. And now i`m thinking about in which cases CUDA will help me solving my volume rendering / graphics tasks.
One of the important parts of the tutorial was to use SMEM whenever possible. But what about SMEM without using CUDA. I mean, the hardware is still the same, hence the driver should manage using SMEM either when using graphics API?

Further i have the problem of updating 3D texture. If i want to do some computation on a 3D volume (e.g. PDE solver), i think i have to copy slice by slice in an OpenGL buffer and bind this buffer to CUDA (mapBufferObject) and then i`m able to process this slice. And copy back into 3D tex afterwards.
My question is what is the smartest way to do computation on 3D tex with CUDA and display afterwards with OpenGL?


It’s too bad that CUDA still doesn’t support 3-D textures, even in the 1.1 beta. It is going to come, though, and the instruction for fetching from 3-D is already in the ptx.

And no, there is no way to use SMEM without CUDA. Shared memory is not used in normal rendering afaik except for passing attributes to shaders

CUDA uses a different mode of the GPU. The most obvious feature this “compute” mode enables, but it also enables more subtle features, such as the invocation of programs (by the host) on grids of thread blocks rather than only by rasterizing triangles as in graphics. Also, each thread gets access to its thread ID, blockID, etc., and these are assigned to threads by the hardware. Finally, there are instructions that are not accessible in the graphics mode, such as global loads and stores, barrier synchronization (__synctreads()), and atomic operations.


Are there also some things disabled in Compute mode? For example, the Raster Ops.
Or will these be exposed through the .surface state space eventually?