Inspiration
I was inspired by a hackMIT team which designed their own GPU. I then thought of hackUMBC's tracks, and hoped to connect it to community impact by turning it into a proof-of-concept for a distributed computing platform which might be more accessible than specialized computing equipment.
What it does
It creates an array of simulated GPU execution 'lines'. Every 'line' executes the same instruction at the same time, but on different data due to each having its own set of registers and individual access to memory. There is a driver which launches threads across these 'lines' by providing a binary to the GPU as a whole.
How we built it
I built it using C and the SDL2 library. All of the code was written by hand (at the time of writing this 4 hours before the hackUMBC deadline), with some help from AI for research and design decisions.
Challenges we ran into
Because the program's output is visual and it simulates parallel execution, it was hard to debug.
Accomplishments that we're proud of
Building a project in an area which was completely foreign to me before hackUMBC.
What we learned
How a GPU works (at least, a SIMD architecture which wastefully avoids branches entirely).
What's next for gpu-sim
Expanding the graphics driver and building a network protocol which allows it to distribute tasks to multiple simulated GPU blocks on different devices
Log in or sign up for Devpost to join the conversation.