OpenCL was developed after a scientist discovered that the GPU architecture is capable of performing linear algebra calculations very efficiently.
The problems of linear algebra, as a rule, are very easily parallelized and quite simple on single elements. In most vector and matrix operations, only four basic mathematical functions +, -, / and * are needed. In addition, some comparisons for finding Max and Min and one can do a great job in a parallel environment. If the size of the problem is large enough that the extra time it takes to copy data from RAM to the GPU and vice versa is much less than increasing the speed of the GPU, greater productivity increases.
Methods have been developed since. The first calculations were performed by converting problems into graphic tasks and vice versa. OpenCL was designed to provide a clean interface for calculations.
OpenCL is suitable for problems that can run in parallel without too many dependencies and that require more processing power. Linear algebra, search algorithms, signal conversion and 3D scenes, and call checking are classic examples.
source share