<p>I am an aspiring CG programmer and would like to know what some of the more nuanced aspects of computer architecture are.</p>

<p>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.</p>

<p>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?</p>

<p><strong>Edit</strong>: 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.</p>

<p>To be <strong>even more</strong> 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 <em>related</em> 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.</p>

<p><strong>Edit 2</strong> I think I've found my own answer. <a href="http://15418.courses.cs.cmu.edu/spring2017/" rel="nofollow noreferrer">This CMU lecture series</a> has a bunch of slides talking about modern parallel architecture and algorithms. <a href="http://15418.courses.cs.cmu.edu/spring2013content/lectures/22_heterogeneity/heterogeneity_slides.pdf" rel="nofollow noreferrer">These</a> slides on heterogeneous systems is particularly interesting to me.</p>

CC BY-SA 3.0
2017-04-03T12:49:11.373Z
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
CC BY-SA 3.0
2017-04-03T14:25:01.213Z
@trichoplax just updated the description. Hopefully it's a little less broad.
RomanLarionov
CC BY-SA 3.0
2017-04-03T15:33:24.143Z
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
<gpu><gpgpu><terminology>
What aspects of GPU architecture are computer graphics programmers expected to be intimately familiar with?
RomanLarionov
# What aspects of GPU architecture are computer graphics programmers expected to be intimately familiar with?

(Asked by: username_0 on 2017-04-02)

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](http://15418.courses.cs.cmu.edu/spring2017/) has a bunch of slides talking about modern parallel architecture and algorithms. [These](http://15418.courses.cs.cmu.edu/spring2013content/lectures/22_heterogeneity/heterogeneity_slides.pdf) slides on heterogeneous systems is particularly interesting to me.

**Tags:** gpu, gpgpu, terminology

> **Comments:**
> **username_1**: 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.  
> **username_0**: @username_1 just updated the description. Hopefully it's a little less broad.  
> **username_2**: 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  

---

## 0 answers

