I'm asking myself what will be the architectural benefits of these two approaches whether using Nvidia CUDA or OpenGL Shaders for a computation.
Therefore I want to determine which part of my application would better be implemented on CUDA or OpenGL.
For sure, if platform-dependence is no reason, you gain more granularity about your threads and memory by using CUDA.
To display your results, which were computed by CUDA, using OpenGL, you have to use some maybe "tricky" interoperabiltiy API.
Are there any best practices when to use one of these architectures and when to utilize a combined approach?
Best How To :
Most rendering tasks would be way harder to implement using CUDA. Shaders are fully integrated with rendering APIs, such as OpenGL, to automate and provide all the most common and efficient tools for rendering geometry. Things like texture sampling and polygon rasterisation are built-in all shading languages. If you where to re-implement that using something like CUDA, it would not only take a long time and effort but also probably end up running slower than a shader.
CUDA is designed, in my view, to process other complex computational things, like physics simulations, in a more parallel and efficient manner, using the naturally scalable GPU. Apart from that, for rendering of geometry, there is little gain from the use of a computing framework like CUDA or OpenCL.