I am an aspiring CG programmer and would like to know what some of the more nuanced aspects of computer architecture are.I have already taken several introductory arch courses where we've covered things like cache levels, basic multi-staged piplined datapaths, and memory structures (NUMA, Von Neumann), etc. I have also spent time understanding the basics of CUDA programming and SIMT work distribution models.Is there any special aspect of architecture that you only learned outside of the classroom/in the real world that comes in handy when writing graphics applications?Edit: some people think my phrasing is too broad. When I say CG programmer, I mean someone who writes their own Vulkan/D3D application from scratch. I do not mean someone who writes games in Unity and wants to improve their performance based on platform architecture.To be even more specific, I should mention that I'm asking because of a presentation on architecture that I'm supposed to give that's coming up. I'm supposed to present on a topic related to architecture, but I'm kinda sick of going over the same old things. This is my third course on the subject and am a little sick of learning how caches work. A good example of something that I'm looking for is hyperthreading. I'd never heard about this until someone presented on it earlier in the semester.Edit 2 I think I've found my own answer. This CMU lecture series has a bunch of slides talking about modern parallel architecture and algorithms. These slides on heterogeneous systems is particularly interesting to me.
What aspects of GPU architecture are computer graphics programmers expected to be intimately familiar with?
gpu;gpgpu;terminology