In recent years, Graphics Processing Units (GPUs) have become prominent hardware in areas other than just plain graphics applications. This practice is known as General-Purpose Computing On Graphics Processing Units (GPGPU). Due to their ability to perform highly parallel computations much more efficiently compared to a CPU, the GPU is often utilized, for instance, in machine-learning applications. The GPU is specialized to perform certain kinds of vectorized computations extremely efficiently. It's not nearly as flexible as a CPU is. Single cores in a GPU are far less powerful than CPU cores, but there are hundreds of smaller cores in a GPU.
Due to their parallel nature, GPUs use wildly different instruction sets than, say, the x86. The two dominant ways of writing programs that run on the GPU are Nvidia's proprietary CUDA platform and OpenCL, which is an open source framework and standard for writing programs that run on heterogeneous...