Parallel Processing is a method of running in two or more processors to handle separate part of tasks. In more complex tasks, multiple parts of the software can be handled by a separate part of the CPU. FPGA’s are great examples for hardware acceleration. FPGAs are used to handle complex compute intensive tasks such as image processing.
Like FPGAs, GPUs are good in parallel processing. While a typical CPU might contain two to four cores, GPU consists of hundreds of smaller cores that are highly efficient in vector floating point calculations. Together with all those smaller compute cores, GPU can crunch large amounts of data giving it a high compute performance.
So what is CUDA?
CUDA is parallel computing platform/model developed by NVIDIA for general computing on its GPUs. CUDA is a software layer that gives direct access to GPU’s instruction set. Taking advantage of CUDA, a developer can program in C, C++ to leverage the massive parallelism in graphics cards.