Where to start in computing

 Where to start in computing

There are two most common technologies that can be used for GPU programming:

OpenCL
CUDA

OpenCL is a standard supported by most video card manufacturers, incl. and on mobile devices, also code written in OpenCL can be run on the CPU.

You can use OpenCL from C / C ++, there are bindings to other languages.

On OpenCL, my favorite book is OpenCL in Action. It also describes various algorithms on the GPU, incl. Bitonic-sort and Radix-sort.

CUDA is a proprietary technology and SDK from NVIDIA. You can write in C / C ++ or use bindings to other languages.

Comparing OpenCL and CUDA is somewhat incorrect, since one is the standard, the other is the whole SDK. Nevertheless, many people choose CUDA for development for video cards, despite the fact that the technology is proprietary, although it is free and only works on NVIDIA cards. There are several reasons for this:

More advanced API
Simpler syntax and map initialization
A subroutine executed on the GPU is part of the source code of the main (host) program
Own profiler, incl. and visual
A large number of ready-made libraries
A more lively community

The peculiarities include the fact that CUDA comes with its own compiler, which can also compile standard C / C ++ code.

The most complete CUDA book I came across was Professional CUDA C Programming, although a little outdated, it nevertheless covers many technical nuances of programming for NVIDIA cards.