Live data from Hacker News

Ask HN: Resources for GPU Compilers?

news.ycombinator.com

1–10 of 22 posts

Ask HN: Resources for GPU Compilers?

#1
Hi folks, I've done some cpu compilers for x86, RISC-V, LLVM (mostly for fun and some for profit). I'm eager to learn more about GPU/TPU compilers and have been looking into Triton and XLA. What resources would be useful to learn HPC and/or gpu compilers in depth (or any adjacent areas)?

Any such books, courses etc will be much appreciated.

Re: Ask HN: Resources for GPU Compilers?

#4
If you're already familiar with compilers in the abstract, start by implementing some high-level solutions leveraging a GPU, some low-level performance-optimized kernels, and build up a bit of intuition. The high-level code depends on your goals, but for low-level code maybe try optimizing something equivalent to a binary tree (both with leaves smaller and larger than 4kb), something benefiting from operator fusion (e.g., a matmul followed by an element-wise exponential), and something benefiting from deeply understanding the memory hierarchy (e.g., multiplying two very large square matrices, and also inner/outer producting two very narrow matrices).

From there, hopefully you'll have the intuition to actually evaluate whether a given resource being recommended here is any good.

Re: Ask HN: Resources for GPU Compilers?

#5
Faith Ekstrand has an impressive track record of compiler work and has written a few blog posts[1], [1a]. Her Mastodon[2] is also worth a follow.

SPIR-V is important in the compute shader space, especially because DXIL and Metal's AIR are similar. I'm going to link three articles critical of SPIR-V: [3], [4], [5].

WebGPU [6] is interesting for a number of reasons, largely because they're trying to actually nail down the semantics, and also make it safe (see the uniformity analysis [7] in particular, which is a very "compiler" approach to a GPU-specific problem). Both Tint and naga projects are open source, with lots of high quality discussion in the issue trackers.

Shader languages suck, and we really need a good one. Promising approaches are Circle [8] (which is C++ based, very advanced but not open source), and Slang [9] (an evolution of HLSL). The Vcc work (also related to [4]) is worth studying.

Best of luck! This is a fascinating, if frustrating, space, and there's lots of room to improve things.

[1]: https://www.gfxstrand.net/faith/blog/

[1a]: https://www.collabora.com/news-and-blog/blog/2024/04/25/re-c...

[2]: https://mastodon.gamedev.place/@gfxstrand

[3]: https://kvark.github.io/spirv/2021/05/01/spirv-horrors.html

[4]: https://xol.io/blah/the-trouble-with-spirv/

[5]: https://themaister.net/blog/2022/08/21/my-personal-hell-of-t...

[6]: https://github.com/gpuweb/gpuweb

[7]: https://www.w3.org/TR/2022/WD-WGSL-20220505/#uniformity-over...

[8]: https://www.circle-lang.org/site/index.html

[9]: https://github.com/shader-slang/slang

Re: Ask HN: Resources for GPU Compilers?

#7
Newer editions of Computer Organization and Design: The Hardware Software Interface covers GPUs [1]

Multiflow still has some relevant ideas [2]

Programming on Parallel Machines: GPU, Multicore, Clusters and More. Gives you a look at some of the issues [3]

SPIRV-VM is a virtual machine for executing SPIR-V shaders [4]

NyuziRaster: Optimizing Rasterizer Performance and Energy in the Nyuzi Open Source GPU [5]

Ocelot is a modular dynamic compilation framework for heterogeneous systems, providing various backend targets for CUDA programs and analysis modules for the PTX virtual instruction set. [6]

glslang is the Khronos-reference front end for GLSL/ESSL, partial front end for HLSL, and a SPIR-V generator.

[1]: https://www.goodreads.com/book/show/83895.Computer_Organizat...

[2]: https://en.wikipedia.org/wiki/Multiflow

[3]: http://heather.cs.ucdavis.edu/parprocbook

[4]: https://github.com/dfranx/SPIRV-VM

[5]: https://www.cs.binghamton.edu/~millerti/nyuziraster.pdf

[6]:https://code.google.com/archive/p/gpuocelot/

[7]: https://github.com/KhronosGroup/glslang

Re: Ask HN: Resources for GPU Compilers?

#10
post #7

Newer editions of Computer Organization and Design: The Hardware Software Interface covers GPUs [1] Multiflow still has some relevant ideas [2] Programming on Parallel Machines: GPU, Multicore, Clusters and More. Gives you a look at some of the issues [3] SPIRV-VM is a virtual machine for executing SPIR-V shaders [4] NyuziRaster: Optimizing Rasterizer Performance and Energy in the Nyuzi Open Source GPU [5] Ocelot is…

and a few more

Pixel Planes/Pixel Flow [1]

The Geometry Engine: A VLSI Geometry System for Graphics [2]

Tim Purcell's research [3]

BrookGPU [4]

GRAMPS: A Programming Model for Graphics Pipelines [5]

[1]: https://www.cs.unc.edu/~pxfl/

[2]: https://graphics.stanford.edu/courses/cs148-10-summer/docs/1...

[3]: http://graphics.stanford.edu/~tpurcell/

[4]: http://graphics.stanford.edu/projects/brookgpu/

[5]: http://graphics.stanford.edu/papers/gramps-tog/

Post reply on HN