Heterogeneous and Reconfigurable Computing Research Group
Dept. of Computer Science and Engineering, University of South Carolina


About Us

At the Heterogeneous and Reconfigurable Computing Research Center, we focus on analysis and implementation of computationally intensive applications on coprocessors such as FPGAs and GPUs, to accelerate the applications.

A heterogeneous computing system contains a mixture of regular computer processors along with specialized co-processors. These co-processors, which include Field Programmable Gate Arrays (FPGAs) and Graphics Processor Units (GPUs), are very difficult to program but can perform certain types of computations very fast and efficiently. When specific portions of a computer program are adapted to run on these co-processors, the overall system can achieve much higher performance and efficiency than a traditional high-performance computer system containing racks upon racks of general-purpose computers.

Field Programmable Gate Array

Unlike ASICs, Field Programmable Gate Arrays (FPGA), also known as reconfigurable computing platform, can be programmed or configured to implement applications. FPGAs traditionally are programmed in hardware description languages (HDL), such as VHDL and Verilog. But to reduce the difficulty and time involved in debugging and verification process, recently there has been an inclination towards high level languages (HLL) to program FPGAs. Platforms such as Impulse C and Handle C facilitate programming FPGAs in C or C++.

For large design, the design cycle requires a lot of engineering effort to implement an algorithm. However, a good FPGA design usually provides 1-3 order of magnitude speed-up over traditional CPU. Not all algorithms can achieve speed-up on FPGAs. Those which can be parallelized and do not need much communication overhead can expect better performance.


Please use scroller on the mouse to navigate the pdf.