These days, even an ordinary user probably can notice NVIDIA GPU (more specifically, NVIDIA CUDA) to be a matter of socialized technical discussions for GPU computing, such as we described in our one guide on Nvidia CUDA installation of CUDA on MacOS X. Before this era started, we used to talk about graphics card for graphical works only. Indeed, we still talk about latest graphical processors of smartphones for graphical purpose only, such as for gaming. What is GPU Computing OR General Purpose Computing on GPU? In short, GPU or Graphical Processing Unit is designed for 3D graphics computations but we can use the power in scientific fields.
What is GPU Computing in Scientific Fields?
CPU and GPU has difference. Commonly for desktop computers, by the word GPU we mean a kind of daughterboard or add-on card. However, the chipset of graphics card can be made on main board (or motherboard) of computer.
CPUs and GPUs both are microprocessors. They do have some common matters, at the same time they are substantially different at different points to serve different purposes. CPU and GPU process the same tasks in different way. CPU is designed to perform variety of different calculations. CPU may consists of a some cores for serial processing to maximize the performance of a single task. While GPU is primarily designed for image rendering in graphically intense applications to offload the burden on the CPU which results in performance degradation. GPU uses smaller, efficient thousands of cores for creating a massive parallel architecture which can process multiple functions at the same time. GPUs, of course are superior compared to CPU in terms of processing power, memory bandwidth, efficiency but basically optimized for graphical tasks. GPU operates at lower frequency than CPU. The speed of access between a CPU and pool of RAM is slower than GPU. GPU typically has smaller amount of memory which is much faster to access. That is how graphics card increases speed of graphical rendering.
The fact that modern graphics processors are powerful to perform mathematical calculations rapid, sometimes 50–100 times faster is being utilized in the scientific and simulation field such as fluid simulations, works on databases , clustering algorithms, machine learning, big data analysis, cryto, bioinformatics and so on. In case of graphical matters, selective data passed one-way from to GPU, and from GPU to a display device. Distinguishing feature of general computing on GPU is the ability to transfer information bidirectionally from GPU to CPU.
GPU saves significant expenditure which if performed with CPU would cost higher. That points towards selective use case of using GPU in general computing.
Example of using GPU for general computing
There are 2 main frameworks for GPU programming — OpenCL and CUDA. CUDA programming language can be used with Nvidia only. OpenCL is an open standard for parallel computing on GPUs, CPUs and FPGAs.
NVIDIA CUDA provides a massive parallel architecture for graphics processors. That architecture can be used for normal numerical computation. Common CPUs have up to cores, whereas an NVIDIA GPU may have thousands of CUDA cores and a pipeline which supports parallel processing. That speed up the processing.
As smartphone GPUs becoming powerful, general-purpose programming became available for the mobile operating systems as well.
Although the advantages of using the GPU for certain applications is evident, inconvenience of using a processor (read GPU) designed for completely different purpose often becomes evident. CPUs are optimized for performing serial tasks. GPU is specifically for graphics and is restrictive in operations and programming. They are only effective for problems that can be solved using stream processing. Also GPU can only be used in certain ways. Before an attempt to develop a parallel solution for a problem we need to determine whether the problem can actually be parallelized. The limitation leading to rapid evolution of graphical hardware and implementations of algorithms to optimally work on a GPU.