From 4d972086d9ed30deb933c419e5e9d727a45290ab Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Sat, 26 Aug 2023 11:42:56 +0300 Subject: [PATCH] =?utf8?q?=D0=9F=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6=D0=B8?= =?utf8?q?=D0=B2=D0=B0=D0=B5=D0=BC=D1=8B=D0=B5=20=D0=BA=D0=BE=D0=BC=D0=B0?= =?utf8?q?=D0=BD=D0=B4=D1=8B=20CPU?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit В 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 -- 2.50.0