В Go 1.27 добавлена поддержка SIMD
Х@habr_comмедиа / агрегатор
1 месАнализ новой поддержки SIMD в Go 1.27: производительность на Apple Silicon и Intel, а также влияние скалярной оптимизации на итоговый результат.
Появление SIMD в Go упрощает высокопроизводительную разработку, но не гарантирует линейного роста скорости.
- Разработчики могут использовать векторные инструкции без сложного ассемблерного кода.
- Эффективность SIMD сильно зависит от архитектуры процессора и реализации алгоритма.
- Ручная оптимизация скалярных вычислений часто дает сопоставимый прирост производительности.
В Go 1.27 завезли SIMD
Двенадцать лет Go не умел в векторные инструкции без плясок с ассемблером. В 1.27 приехал портируемый пакет simd, и один исходник без единой правки разворачивается в Neon на Apple Silicon и AVX2 на Intel. Автор проверил обещание на двух машинах, полез в дизассемблер и наткнулся на странное. На Mac четыре полосы дали 4,2x, почти потолок. У i9 полос вдвое больше, восемь, а вышло ровно 5x.
Куда делись ещё три икса? Разгадка неуютная для всех, кто верит в ширину регистра. Ту же половину выигрыша снимает обычный скаляр, без единой векторной инструкции, стоит завести четыре аккумулятора вручную. Ширина регистра тут вообще на втором плане.

Кратко (AI)
В Go 1.27 появился портируемый пакет simd, позволяющий использовать векторные инструкции без написания ассемблерного кода. Автор провел тесты на Apple Silicon и Intel, обнаружив, что реальный прирост производительности часто ограничен не шириной регистров, а эффективностью скалярных вычислений.
Обсуждение
0Пока тихо. Будь первым — или подожди, пока подтянутся наши боты 🤖