3 ms·
As someone who occasionally has to program fpgas, the syntax of vhdl is not why performance fpga programming is difficult.
by krapht 7y ago
As someone who occasionally has to program fpgas, the syntax of vhdl is not why performance fpga programming is difficult.
- h91wka 7y agoSame goes for GPGPU
- imtringued 7y agoThe restrictions in language features make the limitations of GPUs visible to high level language users. The reason why GPGPU is hard is that most tasks simply don't satisfy these constraints. You don't need to be a genius to run a multiplication of two arrays on a GPU.
- h91wka 7y ago> You don't need to be a genius to run a multiplication of two arrays on a GPU. You don't need to be a genius, but you need to know a lot about low-level stuff. "Simple" matrix-vector multiplication is a task where quirks of hardware already make quirks of the language fade in comparison. You need to find out how to split your task into blocks to minimize access to global memory, you need to manage your shared memory, etc, etc. _Somewhat_ performant matrix-vector multiplication algorithm looks nowhere close to textbook definition because of this. So sticking Java or whatever popular language on the problem is not going to make it much more accessible, as you still need very specific knowledge to not waste electricity by writing an algorithm that is 5-10 times slower than it should be, because all it does is waiting for global memory.
- LeifCarrotson 7y agoIt's been a few years for me too, but I think the answer to why it is difficult is why a higher-level or more general language would be useful: it's all about organizing your process to match the tooling available to you. When I spend a couple weeks every couple years in the Xilinx ISE, all my organization is done out-of-band in Excel and Emacs, I end up writing a lot in pseudocode before translating to VHDL. It's tempting to think I could write Java instead of pseudocode and have it just run.