Выжимаем 100% из CPU в Google Colab: написал гибридный C++20/AVX2 движок, который рвет обычный Python в 40 раз на 50 000 000 объектов
Привет, подсайт Gamedev и технари DTF!
Решил устроить жесткий стресс-тест своему no-CUDA движку прямо под капотом бесплатного Google Colab (на стандартном двухъядерном CPU Intel Xeon) и сравнить его с обычным Python.
Задача хардкорная: загрузить, отфильтровать и квантовать (в bfloat16) массив на 50 000 000 объектов.
Вот сухие цифры замеров скорости:
1. Обычный Python-пайплайн (базовые циклы):
• Время: ~48.5 секунд.
• Итог: Процессор кочегарит, GIL всё тормозит, память забита под завязку, данные гоняются туда-сюда.
2. Мой гибрид (C++20 ядро + векторные инструкции AVX2 + Python-обертка):
• Время: всего ~1.2 секунды! (Ускорение > 40 раз).
• Как это сделано: Движок на максимум использует SIMD. Вместо обработки по одному объекту, CPU за один такт щелкает целую пачку данных прямо в регистрах, минуя медленную аллокацию памяти.
Бонус: Потребление RAM упало в 3 раза за счет плотной упаковки в bfloat16. Видеокарта (CUDA) не трогается вообще — всё летит на обычном бесплатном проце.
Развернул готовый шаблон, всё запускается в одну ячейку в Colab, ничего локально собирать не нужно:
👉 https://github.com/nlozkina19-crypto/vector-zero-compute
Залетайте тестить на своих объемах. Пишите в комменты, сколько долей секунды выдал ваш проц на этом бенчмарке, померяемся скоростью!