Performing real-time digital signal processing (DSP) routines such as Fast Fourier Transform (FFT), Signal Averaging, Finite Impulse Response (FIR) Filtering, Digital Down Conversion (DDC) and more have traditionally required the use of dedicated DSP processors, Field Programmable Gate Arrays (FPGAs), or Application Specific Integrated Circuits (ASICs).
The size of DSP processors, FPGAs, and ASICs are often resource limited and require significant development with specialized engineering skills in particular languages and platform tools that are often native and proprietary to the targeted device. These solutions are typically expensive in terms of the physical devices, required software development tools, lengthy development cycles and expertise resources.
With the evolution of increasing multi-core CPU resources, developers began to implement DSP routines utilizing the host CPU. The primary advantage of the host CPU platform is that it enables faster development utilizing more familiar programming environments such as C; as opposed to more complex VHDL based programming that is typically required for FPGAs. However a disadvantage is that the host CPU platform may still not be powerful enough to conduct complex processing routines, especially for real-time application requirements.
The use of a GPU provides the best of both capabilities, a fast familiar programming development environment such as C and more powerful computational capabilities than the host CPU platform to satisfy demanding real-time application requirements. GPUs incorporate many more cores with a high-speed memory bus that can be effectively utilized in parallel for efficient manipulation of large blocks of data.