3 ms·
You can raytrace by hand too, but that doesn't change the fact that there is no dedicated hardware support for it on any hardware shipped by Apple. Raytracing
by robert_foss 7y ago
You can raytrace by hand too, but that doesn't change the fact that there is no dedicated hardware support for it on any hardware shipped by Apple.
Raytracing is a not a problem that is well suited to GPUs since there are lots of data dependencies, which means parallelism is severely limited.
- chrisseaton 7y ago> that doesn't change the fact that there is no dedicated hardware support for it on any hardware shipped by Apple Nobody in this thread or anywhere else said there was. > Raytracing is a not a problem that is well suited to GPUs since there are lots of data dependencies, which means parallelism is severely limited. ...no it's the classic example of an embarrassingly parallel problem - that's literally the term people use because it's so easy to parallelise. Each pixel is completely independent with no data or control dependency between them and they can be rendered in parallel.
- dTal 7y agoThere's a subtle distinction here which I believe is the source of this disagreement. Raytracing is indeed embarrassingly parallel - you can render a 5 megapixel image on 5 million different machines in the time it takes to render a single pixel on one machine. However, each machine will be executing entirely different instructions after a very short period - there's not much "coherency" between adjacent rays, because all it takes is to clip the corner of an object and suddenly you're bouncing around a completely different part of the scene. This is a difficulty for GPUs, which are not true parallel clusters. What they do well is running the same set of calculations on different data, at the same time - in other words, not raytracing. I believe this is what the parent meant by "data dependency" - there are a lot of divergent branches, and the calculations that you do depend entirely on scene data. Intel's Larrabee architecture would have made GPUs behave like genuine clusters. I think it's a bit sad we don't have general-purpose clusters in our machines, just the hobbled GPUs.
- Jasper_ 7y agoEmbarrassingly parallel in theory is different from embarrassingly parallel in practice. One of the major differences is cache -- both instruction cache and data cache. You can, in theory, run 100 rays at once on 100 different threads, but since each ray goes to a completely different part of the scene, it will be loading different geometry, running different shaders, and fetching different textures. Even in path tracers that aren't using the GPU, one of the relatively recent huge improvements was "ray sorting", which tries to collect rays into bundles that use the same shader and roughly the same area of textures to improve on cache behavior. It brought huge speed increases. One of the big limitations of NVIDIA's RTX right now is that it does not support ray sorting.
- 0-_-0 7y agoInteresting tidbit about ray sorting: Imagination Technologies had a GPU design in 2014 that had support for ray tracing, including a Coherency Engine: https://www.anandtech.com/show/7870/imagination-announces-powervr-wizard-gpu-family-rogue-learns-ray-tracing https://www.anandtech.com/show/7870/imagination-announces-po... But there wasn't enough interest in GPU path tracing yet.
- deleted 7y ago[deleted]
- deleted 7y ago[deleted]
- deleted 7y ago[deleted]
- Chazprime 7y agoThis makes no sense. Why wouldn’t Apple be forward-thinking with their APIs? This news suggests that there will soon be Macs that have raytracing hardware. And raytracing is a problem that is well-suited to GPU acceleration...ray calculations can be easily run in parallel and distributed.
- tomxor 7y ago> Raytracing is a not a problem that is well suited to GPUs since there are lots of data dependencies, which means parallelism is severely limited. This is a joke right? I mean ray tracing is the most common example pointed at as being highly amenable to parallel computation. all ray computations are independent (i.e cores), all scene and BDRF data are shared - this matches GPU architecture perfectly, the only reason it's more of a recent trend is because even with parallel compute it's still demanding for real time performance. If you don't believe me you can go to shadertoy right now and see endless demos doing raycasting and pathtracing in a quad.
- 0-_-0 7y agoRaytracing is indeed ill suited to GPUs because of the terrible cache coherency you get in a real scene that has a size measured in gigabytes instead of kilobytes that scenes on Shadertoy take up.
- kllrnohj 7y ago> all ray computations are independent (i.e cores) Which makes it ill-suited to GPUs since they want sibling threads to take the same execution path on cache coherent data. Better than a quad core CPU sure but a very small fraction of the performance they're otherwise capable of. You can see this with the DXR performance on Pascal vs. Turing.
- dagmx 7y agoYou seem to have bought in heavily to marketing. Pathtracing software has been available for production use on GPUs for years before RTX was available. Even in games, raytracing has been in use for a long time in various forms. Yes RTX enables extra optimizations and provides nice APIs for it to boot, but it doesn't enable the technology as a whole. It's very much existed in realtime for a long time and on GPUs for a long time as well. The real coup if anything is denoising. Advances in denoising are actually what really push realtime pathtracing forward as you no longer need to fire as many rays to converge on a useable image.