I am aware of their limitations. But I al wondering if there’s a way to make GPU cores behave like a single unit, or larger units like cpu cores, when needed - somehow to process data in a sequence of instructions, when needed and in parallel when not. Just thinking out loud. As I am playing around with GPUs for various reasons I am simply amazed at how versatile they are.
One fun hack I wanted to make was a database function that would let me update database record on the GPU. One could implement the function as a kernel and have it update tens of thousands of records in one go.
The bottleneck is reading data from disk, to cpu / ram, to gpu.
Instead of there was a way to read data directly from disk, all records could be loaded in VRAM at once and data updated.
I think for a good number of use cases databases are prime candidates for parallel processing. Each record being processed by a kernel.
For gaming a significant bottleneck is moving texture and mesh data between disks, cpus, and the gpu.
Essentially, I think the main component of a PC could be the GPU while the CPU is there to execute block operations - if there is no way to “fuse” gpu cores as per my first paragraph.
I just think there’s a lot of performance left on the table otherwise.
For ml inference at edge for instance all you need is a GPU with a network card and extremely fast storage. All of which are available but bottlenecked by the cpu.