4 ms·
I'm not a hardware engineer, but I am a GPU-focused graphics engineer. > C-style fine-level control over a GPU device as though it were a CPU. Personally, I t
by banachtarski 6y ago
I'm not a hardware engineer, but I am a GPU-focused graphics engineer.
> C-style fine-level control over a GPU device as though it were a CPU.
Personally, I think this is a fool's errand, and this has nothing to do with my desire for job security or anything. When I look at how code in the ML world is written for a GPU for example, it's really easy to see why it's so slow. The CPU and GPU architectures are fundamentally different. Different pipelining architecture, scalar instead of vector, 32/64-wide instruction dispatches, etc. HLSL/GLSL and other such shader languages are perfectly "high level" with other needed intrinsics needed to perform relevant warp level barriers, wave broadcasts/ballots/queries, use LDS storage, execute device level barriers, etc. This isn't to say that high level shader language improvements aren't welcome, but that trying to emulate a CPU is an unfortunate goal.
- mpweiher 6y agoWhat kinds of improvements would you like to see?
- banachtarski 6y agoFrom an ergonomics point of view, it would be nice to have pointers directly into a descriptor heap, but this is coming already with SM 6.6 any day now. If I'm allowed to request hardware capabilities, I would like a non-divergent warp jmp instruction based on a function pointer table (much like is done with DXR-class raytracing hardware/shaders) to eliminate pipelining introduced only to mitigate shader permutation explosion.