3

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.

  • Depending on the field of work, a graphics programmer may have zero knowledge of GPU architecture, or may have very detailed knowledge, or anywhere in between. The term "computer graphics programmer" is too broad to be able to give a meaningful answer to this question. You may be able to guide your research by finding examples of the type of thing you want to be able to work on, which will help narrow down which knowledge areas are required/beneficial. – trichoplax is on Codidact now Apr 03 '17 at 12:49
  • @trichoplax just updated the description. Hopefully it's a little less broad. – RomanLarionov Apr 03 '17 at 14:25
  • Maybe that people run systems that are diverse and a few years old. Relying on the newest prototypes might cause more harm than good, as they have yet to become standard – Charlie Apr 03 '17 at 15:33
  • 1
    You might enjoy learning about PowerVR-style tile-based renderers. The usual books (H&P, etc) don't cover that. As far as writing OpenGL applications, there is often a matching between vendor-specific extensions and vendor-specific hardware. Take a look at mobile GPU vendor extensions, programmable blending is the first that comes to mind. –  Apr 04 '17 at 17:47

0 Answers0