]> Sergey Matveev's repositories - stargrave-blog.git/commitdiff
Поддерживаемые команды CPU
authorSergey Matveev <stargrave@stargrave.org>
Sat, 26 Aug 2023 08:42:56 +0000 (11:42 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Sat, 26 Aug 2023 08:42:56 +0000 (11:42 +0300)
В 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


No differences found