В
93a94460359f21b284080d1a1b4be8dcea26c4bd упоминал cpuc утилиту,
которая красиво выводит список расширенных инструкций процессора. А то
прежде я знал только способ в виде чтения dmesg-а, рассказывающий про
процессор.
В новом Xeon (
9412c8cdb0c01875e9bfca8d3efde9695e4d9211) у меня дома
появились AVX512 инструкции, а также SHA. Пошёл в код Go смотреть
поддерживает ли он их и как определяет наличие. Увидел
golang.org/x/sys/cpu модуль, через который можно получить почти такой же
список расширений как и cpuc выдаёт:
import "golang.org/x/sys/cpu"
data, _ := json.MarshalIndent(cpu.X86, "", " ")
fmt.Println(string(data))
Затем вспомнил, что ведь lukechampine.com/blake3 Go-шный пакет тащит за
собой github.com/klauspost/cpuid/v2, который наверняка занимается
узнаванием поддерживаемых команд. И в blake3 вроде AVX512 поддержка
есть. Действительно, cpuid отдельную утилиту предоставляет, которая и
частоты и размеры кэшей покажет -- побольше информации чем cpuid и лично
мне приятнее с Go иметь дело:
go install github.com/klauspost/cpuid/v2/cmd/cpuid@latest