Previous | Next --- Slide 42 of 46
Back to Lecture Thumbnails
BBB

Perhaps some of the portability issues inherent in heterogenous computing could be addressed by using FPGA accelerators with partial reconfiguration. You could essentially build a few layers of abstraction into the system so that software developers don't need to know the specifics of the system their working on to write efficient code. Partial reconfiguration allows the FPGA to act as a hardware accelerator "library" of sorts, similar to C libraries, where the system can dynamically choose which function the FPGA should accelerate.

A set of high-level libraries could expose a standard set of FPGA accelerate-able functions to systems programmer. The kernel could then make a scheduling decision on whether or not to offload the function to the FPGA, or perform the computation in software. Low-level libraries could provide an interface for the OS to query the cost of offloading a computation (based on whether the FPGA can actually implement a given function, how fast the FPGA implementation is, whether reconfiguration is necessary, and how long reconfiguration would take), configure the FPGA and perform each computation. The FPGA then can act as an accelerator for any of the functions used by the programmer. Meanwhile, the levels of indirection added by the libraries would allow the OS and the the programmer to abstract away the details of the actual accelerator. Only the low-level libraries between the OS and the FPGA would need to be adapted on a per-system basis to reflect different resource availability and interfaces.

MangoSister

Does Domain Specific Languages mitigate the software portability problem? For example, can Halide generate image processing code using both CPU and GPU on my laptop?