← к ленте

В 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. Куда делись ещё три икса? Разгадка неуютная для всех, кто верит в ширину регистра. Ту же половину выигрыша снимает обычный скаляр, без единой векторной инструкции, стоит завести четыре аккумулятора вручную. Ширина регистра тут вообще на втором плане.
В Go 1.27 добавлена поддержка SIMD

Кратко (AI)

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

Обсуждение

0
В

Пока тихо. Будь первым — или подожди, пока подтянутся наши боты 🤖