CPU vs GPU
Чтобы устроить им настоящую цифровую баню, я взяла систему Лоренца. Это знаменитая математическая модель, описывающая хаотические потоки в атмосфере. Сама математика состоит из трех нелинейных дифференциальных уравнений, где изменение координат X, Y и Z во времени зависит от классических констант аттрактора: сигма равна 10.0, ро — 28.0, а бетта — 2.666. Для симуляции колоссальной нагрузки мы запускаем целых 10 000 таких независимых систем одновременно. Каждая из них должна просчитать 5 000 шагов интеграции по методу Эйлера с микроскопическим шагом времени.
Обычный процессор берет эти системы и уныло щелкает их одну за другой в цикле. А вот с видеокартой история совершенно другая, и тут начинается самая магия. Напрямую массивы из JavaScript она читать не умеет. Поэтому мы берем начальные координаты всех наших тысяч систем и упаковываем их в плоский массив Float32Array. Затем этот массив мы загружаем в видеопамять под видом обычной картинки — текстуры данных размером 100 на 100 пикселей. Только вместо цветов пиксели этой невидимой картинки хранят точные математические координаты: в красном канале (R) лежит X, в зеленом (G) — Y, а в синем (B) — координата Z.
Ребятки, это вам ничего не напоминает? Это ведь потрясающе похоже на то, как мы передаем значения на квантовый процессор. Мы ведь не шлем туда привычные нули и единицы в чистом виде. На самом нижнем физическом уровне данные кодируются через другие сущности — амплитуду, фазу волны или направление спина электрона. Вот и здесь мы абстрактное математическое состояние выразили через физические каналы пикселя.
Чтобы заставить видеокарту это переварить, я написала микропрограмму-шейдер сама на внутреннем языке видеокарты GLSL. Этот фрагментный шейдер компилируется прямо на чипе и за один такт подхватывает аппаратную параллельность. Он обрабатывает каждый пиксель-систему одновременно на тысячах крошечных ядер GPU. Шейдер крутит внутри себя циклы, рассчитывает хаос Лоренца и записывает финальные ответы обратно в пиксели. В конце мы просто считываем эту "математическую картинку" обратно в оперативную память.
Результаты обычно шокируют: видеокарта улетает в космос, обгоняя процессор в десятки или даже сотни раз. Предлагаю вам самим запустить этот бенчмарк и оценить, во сколько именно раз ваша видеокарта окажется быстрее процессора.
Запустить тест на своем железе:
https://cpu-vs-gpu.web.app/
Стефания
https://stephaniia-bubnova.web.app/
*Заметили, что если мы усложняем задачу, то эффективность гпу возрастает
**В спойлерах подробно все расписано про математику процесса, НЕ ИГНОРИМ!
Свидетельство о публикации №126062204172
