A lot of times I try to render meshes with millions of polygons in a scene, and the performance is exremely slow. I tried using CUDA but without luck. I'm using a GeForce gtx 960, 10GB Vram, and have an eightcore CPU. Should I get a different card or use SLI? Or maybe look into a workstation card?
Rendering on GPUs has a few limitations, the most crucial one is the amount of VRam on the card. Basically, the whole scene that you're trying to render needs to fit into it. If you 'only' have one GPU available, the situation gets worse, because the 3D scene needs to be displayed on the same card, reducing the amount of free RAM as well.
Besides geometry eating a lot of RAM, textures can be a surprisingly effective GPU rendering killer. Check if you have many high resolution textures in your scene, and if so try to reduce their pixel size. I've had scenes where the geometry would take less than 1GB VRam, but the textures would blow the rest of the 11GB available (we have a few Titan X cards here). I reduced the texture sizes, and in the end the scene rendered on a card which only had 3GB VRam - without a visual difference.
SLI is pointless when rendering, it only makes viewport display faster, and only if the application fully supports it. GPUs cannot share memory with each other, each GPU is like a dedicated mini-computer.
Regarding workstation cards: I have access to Quadro cards here in the company. My own experience is, that they actually render a bit slower than consumer cards. If that's a CUDA implementation thing or Blenders code being more optimized towards consumer card I am not aware.
The only recommendation for your system - besides optimizing the scene itself - would be to get an additional GPU (if your motherboard can fit it) and use that one dedicated for rendering, and your primary GPU for viewport display only. What you get is:
- more available VRam on the GPU
- rendering does barely slow down your machine, you can continue to work while a render is running in the background
- much faster viewport rendering updates
- technically, a second rendering machine, because you can fire off a CPU render at the same time while the GPU is rendering on a different Blender instance
All of this we tested here in our company.