Про cuda(куда) как это работает: у любого компьютера есть некоторая точность вычисления, и чем выше эта точность(половинчатая, одинарная, етс) тем дольше он вычисляет(в контексте одно ядро один поток) cuda мало того что имеет кучу ядер, так ещё и считает с чуть более низкой точностью, за счёт чего считает намного намного быстрее процессор. Собственно сегодня статью про cuda:
1) как это работает, чем отличается от opencl тут
2) как под это программировать на с++ тут