Разработчик написал проход автовекторизации для компилятора Go на уровне SSA. Проход использует алгоритм SLP (Superword Level Parallelism) и работает поверх экспериментального
GOEXPERIMENT=simd. Поддерживаются arm64 и amd64.Компилятор сам находит в коде группы одинаковых скалярных операций и заменяет их на SIMD-инструкции. Без каких-либо правок со стороны разработчика. Например, четыре отдельных умножения float64 превращаются в два векторных.
Прототип пока консервативный: 128-битные векторы, без shuffles, без reductions, без cost model. Но уже работает на реальных кодовых базах и находит сотни мест для векторизации в etcd и самом
cmd/compile.Сообщество отнеслось с интересом, но просит бенчмарки вместо подсчёта регионов и приоритизацию модели стоимости.
📍 Навигация: Вакансии • Задачи • Собесы • Канал в Max
🐸 Библиотека Go-разработчика
#GoLive
