Slide 21
Slide 21 text
(おまけ)マイクロアーキテクチャサポート
■ Go1.18 からGOAMD64フラグを使ってビルドすることで、より最適化したバイナリを
作ることができるようになった
⁃ GOOS=linux GOARCH=amd64 GOAMD64=v3 go build -o a.out cmd/main.go
⁃ 例えば
• v1 では math/bits.OnceCount(popcnt) や math.FMA 等は最適化されないが
• v2 では popcnt は最適化 / math.FMA は最適化されない
• v3 では popcnt / math.FMA などが最適化される
⁃ GOARCH=amd64 GOAMD64=v3 go tool compile -S main.go しながら runtime.x86HasXXX の
最適化具合で追いかけれる
• (v4はAVX512系なので省略)
■ 試しに、前述の音声処理を GOAMD64=v2, v3 でそれぞれでベンチマークを取ると
⁃ GOAMD64=v2版 46.978µs
⁃ GOAMD64=v3版 31.94µs
⁃ とちょっと早くなる。ちなみに(慣れているので)Halideで書いたものが 1.87us になるのでHalideを使っている 21