Live data from Hacker News

Tiny GPU: A minimal GPU implementation in Verilog

github.com

41–50 of 79 posts

Re: Tiny GPU: A minimal GPU implementation in Verilog

#41
post #7
post #3

Yet another "GPU" providing no graphics functionality. IMO theses should be called something else.

Easy, it's now a General Processing Unit. Or perhaps a Great Processing Unit?

Is that pronounced gee pee you, or Gip Pee You?

Re: Tiny GPU: A minimal GPU implementation in Verilog

#42
post #18

Earlier quoted context omitted.

If it processes graphics, I think it counts, even if it has no output. There's still use for GPUs even if they're not outputting anything. My place of work has around 75 workstations with mid-tier Quadros, but they only have mini-DisplayPort and my employer only springs for HDMI cables, so they're all hooked into the onboard graphics. The cards still accelerate our software, they still process graphics, they just don…

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

Graphics functionality != display output What about laptop GPUs, which don't necessarily output to the screen at all times. Sometimes they don't even have a capability to do so. If it's coprocessor working alongside the general processor for the primary purpose of accelerating graphics computing workloads, it seems appropriate to call it a GPU.

Edit: perhaps your point is that it doesn't make sense to call a device designed primarily to accelerate ML workloads or just general purpose vector calculations. In that case I'd agree that GPU isn't the right name.

Re: Tiny GPU: A minimal GPU implementation in Verilog

#43
post #18

Earlier quoted context omitted.

If it processes graphics, I think it counts, even if it has no output. There's still use for GPUs even if they're not outputting anything. My place of work has around 75 workstations with mid-tier Quadros, but they only have mini-DisplayPort and my employer only springs for HDMI cables, so they're all hooked into the onboard graphics. The cards still accelerate our software, they still process graphics, they just don…

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

If it looks like a duck and it walks like a duck, why is it not a duck? If you are using a DSP to process graphics, then at least in the context of your system it has become your graphics processor.

Plenty of GPUs don't have (or aren't used for their) display output. It's a GPU because of what it does: graphics processing. Not because of what connectivity it has.

Re: Tiny GPU: A minimal GPU implementation in Verilog

#44
post #3

Yet another "GPU" providing no graphics functionality. IMO theses should be called something else.

...Won't sound offending... But, but ...a Graphics-card; has "Ports (to attach a Keyboard on to)", RAM (verry fast), CPUs (many) and may be used like a full Computer, even without been driven by someone else like ...You -I suspect, not ?

...I for my part want to say thanks for the findings! :-)

[Setting:Weekendmodus]

Re: Tiny GPU: A minimal GPU implementation in Verilog

#45

Uh, the ALU implements a DIV instruction straight up at the hardware level? Is this normal to have as a real instruction in something like a modern CUDA core or is DIV usually a software emulation instead? Because actual hardware divide circuits take up a ton a space and I wouldn't have expected them in a GPU ALU. It's so easy to write "DIV: begin alu_out_reg <= rs / rt; end" in your verilog but that one line takes a…

This is just someone learning Verilog.

The project stops at simulation, making real hardware out of this requires much more work.

Re: Tiny GPU: A minimal GPU implementation in Verilog

#48
post #30

> Since threads are processed in parallel, tiny-gpu assumes that all threads "converge" to the same program counter after each instruction - which is a naive assumption for the sake of simplicity. > In real GPUs, individual threads can branch to different PCs, causing branch divergence where a group of threads threads initially being processed together has to split out into separate execution. Whoops. Maybe this pers…

Isn't the first just equivalent to calling __syncthreads() on every launch?

No, that effectively syncs all warps in a thread group. This implementation isn't doing any synchronization, it's independently doing PC/decode for different instructions, and just assuming they won't diverge. That's... a baffling combination of decisions; why do independent PC/decode if they're not to diverge? It reads as a very basic lack of ability to understand the core fundamental value of a GPU. And this isn't a secret GPU architecture thing. Here's a slide deck from 2009 going over the actual high-level architecture of a GPU. Notice how fetch/decode are shared between threads.

https://engineering.purdue.edu/~smidkiff/ece563/slides/GPU.p...

Re: Tiny GPU: A minimal GPU implementation in Verilog

#50
post #43

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.

If it looks like a duck and it walks like a duck, why is it not a duck? If you are using a DSP to process graphics, then at least in the context of your system it has become your graphics processor. Plenty of GPUs don't have (or aren't used for their) display output. It's a GPU because of what it does: graphics processing. Not because of what connectivity it has.

But it doesn't do graphics, so it shouldn't be called GPU. That's the whole point of this thread.
Post reply on HN