Machine learning vs GameDev CUDA version

Один из читателей резонно заявил: “воды много, мясо где?»


CUDA


Я люблю слово итак, потому: итак CUDA и как его едят?


Начнем пожалуй с того, что, привыкли называть CUDA это GPGPU.

Зайдем издалека, года эдак с 70 – тогда встала проблема что мы умеем считать Integer (а по большому счет bool), а что такое float – процессор не знает.

Теперь немного теории – как мы помним из математики начальных классов, у нас есть реальные и вещественные числа, в IT они называются float и integer. Если с обычным интом микросхема обучена работать по умолчанию (если интересно как они зарождались – погуглите машина бэббиджа), да вспомните мою оговорку выше про тип bool (true, false), то c float все гораздо интереснее. Первые архитектуры с флотом вообще не работали, последующие выносили значения после запятой на отдельную микросхему. Потому пришла эпоха виртуализации(HyperThreading) и мы началидробную часть вытаскивай на виртуальное ядро, но работать мы с ним так и не научились.

Ну мы же знаем про ученых они муху под носом не видят, рядом с ними (года эдак с 1990) развивается целое поколение процессоров, которое изначально оперирует не двумя а тремя точками, GPU вроде как :D


Теперь к практике:

Все же знают что у вас в компе 16 ядер и каждое их них по 3Ghz?. В видеокарте 3000 ядер по 100Hz.

Если использовать терминологию языка С – это шейдеры, и к каждому из них ты можешь обратиться адресно.

Теперь мясо – если использовать всё тот же язык C(на нем написаны все ОС, что Apple, что Windows), ты можешь адресно обратиться к каждому шейдеру и накатить задачку. В случае с обычным процессором ты можешь только вызвать прерывание проца и поставить задачу в очередь. То есть это из раздела: ты либо спускаешь задачу на отдел специалистов, либо говоришь – Вась пойди сделай.