Folia
← 返回头版

Go语言推出平台无关SIMD实验性API

Go官方团队在1.26和1.27版本中引入了实验性SIMD(单指令多数据)API,使开发者能够在不编写汇编代码的前提下利用现代CPU的向量加速能力1。Go 1.27特别推出了平台无关的simd包,支持amd64、arm64和wasm等多个架构1。该包基于C++的Highway库设计理念1,通过编译器AST重写实现特化代码生成,在不同硬件间自动优化执行性能1。

simd包支持多种SIMD指令集,包括amd64平台上的AVX、AVX2、AVX512,arm64平台上的NEON,以及wasm的SIMD指令1。开发者可通过设置环境变量GOEXPERIMENT=simd启用该实验性功能1。为了满足不同测试场景,Go还提供了GODEBUG设置选项,允许用户通过simd=0(仅模拟)、simd=128/256/512(指定向量宽度)等参数模拟不同硬件配置1。即使在不支持SIMD的平台上,该API也能通过模拟保证功能可用1。

展望未来,Go 1.28版本计划添加SVE支持,并扩展更多操作类型,包括OnesCount、mask operations和reduction operations等1。


来源

  1. Hacker NewsPlatform-Independent SIMD in Go

评论