3 ms·
It's hard to get detailed information on a lot of this as much of it is considered proprietary by NVIDIA. My understanding is that threads are not truly indepen
by mattnewport 7y ago
It's hard to get detailed information on a lot of this as much of it is considered proprietary by NVIDIA. My understanding is that threads are not truly independent as they would be on full CPUs but that the hardware is able to dynamically detect thread divergence (when different lanes / threads of the SIMDish hardware take different branches) and intelligently regroup the threads to minimize divergence. I'm not sure how they then deal with instructions that operate across a warp, it's possible those interfere with the regrouping but they're not commonly used in many typical pixel shader workloads so it may be an overall win.
I suspect some of these changes were to make raytracing more efficient (and the Anandtech article suggests as much too). A common problem trying to implement a GPU raytracer on older architectures is performance tanking when rays diverge too much. NVIDIA's Optix did some complicated magic to try and regroup divergent threads but having direct hardware support for it probably makes the raytracing GPU code both simpler and more efficient.