3 ms·
It’s not a dumb question but I think the issue is the abstraction layers you’re looking at. Computing is hard in general. Your operating system and compilers d
by dagmx 4y ago
It’s not a dumb question but I think the issue is the abstraction layers you’re looking at.
Computing is hard in general. Your operating system and compilers do a lot of work that you don’t need to be aware of. In that way, your programming languages are high level abstractions and you trust the compiler to give you the best performance. However people still write simd intrinsics and assembly to get even more perf when the compiler can’t.
GPUs used to be much simpler , in that the abstracted a lot of the complexity away, letting the driver and hardware deal with things like a compiler would. But due to being so massively parallel, people wanted lower level control. This is almost exactly like people using simd intrinsics on CPUs.
So the programming model for GPUs became lower and lower level to allow for maximum performance. The higher level interface moved into frameworks and game engines.
Really, if you find this complex (and it is), you should start by learning a game engine. Just like dumping a first year student into simd would be hard, so is learning about GPUs from the graphics APIs.
Start high and go low, because a lot more will make sense as you understand the building blocks better from context.