Live data from Hacker News

Tiny GPU: A minimal GPU implementation in Verilog

github.com

71–79 of 79 posts

Re: Tiny GPU: A minimal GPU implementation in Verilog

#71
post #55

Earlier quoted context omitted.

> If it processes graphics, I think it counts, even if it has no output. That's not a good definition, since a CPU or a DSP would count as a GPU. Both have been used for such purpose in the past. > There's still use for GPUs even if they're not outputting anything. The issue is not their existence, it about calling them GPUs when they have no graphics functionality.

CPUs and DSPs are not primarily designed for graphics work, therefore they don't count as GPUs. CPU are general-purpose, DSPs might be abused for graphics work. The "G" in GPU doesn't imply that they have to render directly to a screen. In fact, professional graphics cards are commonly used for bulk rendering for animating videos. Datacenter GPUs are mostly used for AI these days, but they can nevertheless do graphic…

But this particular one isn't designed for graphics work either, so it shouldn't be called GPU.

Re: Tiny GPU: A minimal GPU implementation in Verilog

#72

Really awesome project. I want to get into FPGAs, but honestly it's even hard to grasp where to start and the whole field feels very intimidating. My eventual goal would be to create acceleration card for LLMs (completely arbitrary), so a lot of same bits and pieces as in this project, probably except for memory offloading part to load bigger models.

A simple project is implementing a FIR filter using a HDL like Verilog. The Altera university FPGAs are cheap enough.

Re: Tiny GPU: A minimal GPU implementation in Verilog

#73

Really awesome project. I want to get into FPGAs, but honestly it's even hard to grasp where to start and the whole field feels very intimidating. My eventual goal would be to create acceleration card for LLMs (completely arbitrary), so a lot of same bits and pieces as in this project, probably except for memory offloading part to load bigger models.

Reframe it in your mind. "Getting into FPGAs" needs to be broken down. There are so many subsets of skills within the field that you need to level expectations. No one expects a software engineer to jump into things by building a full computer from first principles, writing an instruction set architecture, understanding machine code, converting that to assembly, and then developing a programming language so that they…

[deleted]

Re: Tiny GPU: A minimal GPU implementation in Verilog

#74

Really awesome project. I want to get into FPGAs, but honestly it's even hard to grasp where to start and the whole field feels very intimidating. My eventual goal would be to create acceleration card for LLMs (completely arbitrary), so a lot of same bits and pieces as in this project, probably except for memory offloading part to load bigger models.

I would suggest the following route:

1. Clone this educational repo https://github.com/yuri-panchul/basics-graphics-music - a set of simple labs for those learning Verilog from the scratch. It's written by Yuri Panchul who worked at Imagination developing GPUs, by the way. :) 2. Obtain one of the dozens supported FPGA boards and some accessories (keys, LEDs, etc). 3. Install Yosys and friends. 4. Perform as many labs from the repo as you can, starting from lab01 - DeMorgan.

You can exercise labs while reading Harris&Harris. Once done with the labs and with the book, it's time to start your own project. :)

PS: They have a weekly meetup at HackerMojo, you can participate by Zoom if you are not in the Valley.

Re: Tiny GPU: A minimal GPU implementation in Verilog

#75
post #55

Earlier quoted context omitted.

CPUs and DSPs are not primarily designed for graphics work, therefore they don't count as GPUs. CPU are general-purpose, DSPs might be abused for graphics work. The "G" in GPU doesn't imply that they have to render directly to a screen. In fact, professional graphics cards are commonly used for bulk rendering for animating videos. Datacenter GPUs are mostly used for AI these days, but they can nevertheless do graphic…

But this particular one isn't designed for graphics work either, so it shouldn't be called GPU.

It's in the very name: "Tiny-GPU". Since it's a demonstration project by a hobbyist, the author probably didn't want to implement the whole optimized rendering stack yet.

On the other hand, they also left out some features that you'd expect to find on a general-purpose compute accelerator.

For example, they focus on tensor math. No support for bit wrangling and other integer math. No exotic floating point formats. Minimal branching capabilities.

Re: Tiny GPU: A minimal GPU implementation in Verilog

#76
post #75

Earlier quoted context omitted.

But this particular one isn't designed for graphics work either, so it shouldn't be called GPU.

It's in the very name: "Tiny-GPU". Since it's a demonstration project by a hobbyist, the author probably didn't want to implement the whole optimized rendering stack yet. On the other hand, they also left out some features that you'd expect to find on a general-purpose compute accelerator. For example, they focus on tensor math. No support for bit wrangling and other integer math. No exotic floating point formats. Mi…

The name is what I'm contesting. It's called Tiny-GPU but there's no mention of graphics functionality anywhere in the project.

Re: Tiny GPU: A minimal GPU implementation in Verilog

#77
post #75

Earlier quoted context omitted.

It's in the very name: "Tiny-GPU". Since it's a demonstration project by a hobbyist, the author probably didn't want to implement the whole optimized rendering stack yet. On the other hand, they also left out some features that you'd expect to find on a general-purpose compute accelerator. For example, they focus on tensor math. No support for bit wrangling and other integer math. No exotic floating point formats. Mi…

The name is what I'm contesting. It's called Tiny-GPU but there's no mention of graphics functionality anywhere in the project.

Graphics pretty much boils down to matrix multiplication, and that's exactly what this thing accelerates. If it were a generalized accellerator, it would have to support other kinds of arithmetic as well.

Re: Tiny GPU: A minimal GPU implementation in Verilog

#78
post #53

Because the GPU market is so competitive, low-level technical details for all modern architectures remain proprietary. Except for Intel, which publishes lots of technical documentation on their GPUs: https://kiwitree.net/~lina/intel-gfx-docs/prm/ You can also find the i810/815 manuals elsewhere online, but except for an odd gap between that and the 965 (i.e. missing the 855/910/915/945) for some reason, they've been…

AMD also publish a fair bit of documentation - https://www.amd.com/en/developer/browse-by-resource-type/doc... Includes full ISA documentation of their current and past offerings, though look like they tend to be aimed at implementors rather than "high level" description for interested enthusiasts.

The AMD documentation consists mostly of very laconic descriptions of the (hundreds or thousands of) registers and of their bit fields.

There is almost no explanation about how they are intended to be used and about the detailed microarchitecture of their GPUs. For that, the best remains to read the source code of their Linux drivers, though even that is not always as informative as it could be, as some of the C code may have been automatically generated from some other form used internally by AMD.

The Intel documentation is much more complete.

Nevertheless, AMD has promised recently in several occasions that they will publish in the near future additional GPU documentation and additional open-source parts of their GPU drivers, so hopefully there will be a time when the quality of their documentation will match again that of Intel, like it did until around 2000.

Re: Tiny GPU: A minimal GPU implementation in Verilog

#79
post #77

Earlier quoted context omitted.

The name is what I'm contesting. It's called Tiny-GPU but there's no mention of graphics functionality anywhere in the project.

Graphics pretty much boils down to matrix multiplication, and that's exactly what this thing accelerates. If it were a generalized accellerator, it would have to support other kinds of arithmetic as well.

Agree to disagree. I'll stop here because we're just wasting time running in circles.
Post reply on HN