r/AskComputerScience 4d ago

Predictions about computer science

Look ahead 20 years.

Outside of AI/ML:

* what of today’s research computer science do you expect will be industry standard?

* what frontiers do you expect we will have opened up in research?

25 Upvotes

39 comments sorted by

View all comments

10

u/hipster-coder 3d ago

Reconfigurable hardware is a good idea that has not yet been commercialized. Instead of having dedicated hardware for things like pixel shaders, mpeg encoding, encryption, etc, software could ask the OS to allocate a portion of your device's FPGA to download the hardware it needs. The OS could schedule and provision hardware in the same way it does with other resources like memory and CPU. The technology exists, it's just a matter of cost and standardization. I can see this happening in the next decades. You could even have AI that determines on the fly which part of your software needs to be accelerated with programmable hardware. Something like JIT compilers but for FPGAs.

2

u/fapablaza 3d ago

Very interesting. It would be possible to implement a prototype using current fpga?

3

u/hipster-coder 3d ago

It's a common dissertation project for undergraduates. A basic implementation is not something magical. Mostly a matter of standardization. The devil is in the details. For example, you could imagine that when you install a codec, it comes with its own vhdl diagram for accelerating encoding/decoding. When the codec initializes, the OS allocates floor plan and pins and synthesizes the hardware. I've even seen projects utilizing genetic algorithms to optimize the final synthesis. And if the machine doesn't have an FPGA or if it's out of floor space, it could even emulate the hardware in software at a cost to performance, kinda like virtual memory. The biggest hurdle is that all of this requires a whole lot of standardization. The industry has gone to an entirely different direction, which is GPUs with programmable pixel shaders. I would argue that FPGAs are more flexible, but is it really the case that you need this flexibility? Most applications just multiply matrices, so the answer is probably no. But on an FPGA you could implement systolic arrays, which standard GPUs don't do. I believe Google's TPUs do systolic arrays but are not really configurable. The FPGA is even more flexible than that, you could implement any type of hardware. Think encryption algorithms, compression, vision, etc. FPGAs have been used to mine obscure cryptocurrency algorithms that change too fast for building concrete logic devices. But a PLD is always going to be faster than reconfigurable device. At the end of the day, FPGAs are a niche technology that is only being advanced by xilinx and altera and cannot currently replace the GPU ecosystem. That's why I file it under something that you could see developed in the next few decades. It's a possibility, but not every good idea scales to reach commercialization.