Вычисления на видеокартах
Процессор и видеокарта — в чём между ними разница? Если видеокарты так хороши — зачем нужен процессор? Чем отличаются OpenCL, CUDA и Vulkan? Что и когда выбрать для задачи? Как выглядят алгоритмы на видеокартах?
Обсудим, что такое вычисления в модели массового параллелизма. Что такое hyper-threading, occupancy, code divergence, coalesced memory access? Какие алгоритмы выигрывают от использования видеокарт?
Рассмотрим на примерах:
– merge-sort* за O(N)O(N)11
вместо O(N⋅logN)O(N⋅logN),
– умножение матриц,
– real-time построение BVH-дерева (из этого вырос современный Ray Tracing).
Обсудим, как, понимая архитектуру компьютера хотя бы в общих чертах, можно оценить потенциал для ускорения с помощью разных методов оптимизации — даже без профилировщика.
Лекция будет сопровождаться кодом — с ним можно будет экспериментировать и после лекции. Также на лекции будут карлики и клоуны!
- merge-sort за O(N)O(N) — на видеокарте он, конечно, не работает строго за линию, но всё равно быстрее, чем на процессоре, в квинвигинтиллион**
раз. ** В 123.9 раз.

