TGViewer
Сохранёнки программиста Сохранёнки программиста @prog_stuff · 6.51K subscribers
Post #3051 103
Go расширил экспериментальный SIMD без ассемблерных вставок

В Go 1.27 разработчики представили пакет simd/archsimd (включается флагом GOEXPERIMENT=simd): эксперимент для amd64 (AVX, AVX2, AVX-512) начался в 1.26, а в 1.27 добавили arm64 (NEON) и wasm (128-битный SIMD). Вместо си-интринсиков предложены методы вроде ShiftAllLeft, а выражение x.Add(y).Masked(m) на AVX-512 компилируется в одну инструкцию VPADD. Разницу платформ учли в именах: PermuteOrZero на amd64 обнуляет байт при отрицательном индексе, а LookupOrZero на arm64 и wasm обнуляет байт при любом индексе вне диапазона от 0 до 15.

Пример из статьи — разворот порядка бит в байтах через матричное умножение GFNI константой 0x8040201008040201: 64 байта обрабатываются за один шаг без таблиц поиска и сдвигов. Также авторы сформулировали три правила для надежности и скорости.

Инструкции требуют проверок фич CPU (archsimd.X86.AVX512() и других): иначе на неподдерживаемом процессоре программа упадет с SIGILL, а компилятор не сможет объединять операции. Границы стрид-цикла советуют писать как i < len(src)-v.Len()+1, чтобы оптимизатор убрал проверки среза. Наконец, векторы не стоит заворачивать в большие структуры или массивы: ABI Go пока выгружает крупные композитные типы из регистров в память.

@prog_stuff
More from @prog_stuff
  1. Oct 3, 2026Отредактировал снимок билета без сброса криптографической даты В стандарте C2PA подпись св…
  2. Oct 3, 2026Как искать баги, которые не воспроизводятся в тестах В обстоятельном разборе трёх расследо…
  3. Oct 3, 2026Producer-Consumer в Java, Go и Rust: как выбрать уровень решения Разбор трёх способов связ…
  4. Oct 2, 2026Как искать нарушения IEEE 754 в математических ядрах ИИ-ускорителей Обстоятельный разбор а…
  5. Oct 2, 2026Как ИИ меняет большие миграции: опыт Asana, Airbnb и Uber В обстоятельном разборе крупных…
  6. Oct 1, 2026Как переводить целые книги с LLM и не терять контекст Практический разбор Python-пайплайна…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →