12345678910111213141516171819202122232425262728293031323334353637 |
- package discover
- import (
- "os"
- "path/filepath"
- "runtime"
- "strings"
- "golang.org/x/sys/cpu"
- )
- func GetCPUCapability() CPUCapability {
- if cpu.X86.HasAVX2 {
- return CPUCapabilityAVX2
- }
- if cpu.X86.HasAVX {
- return CPUCapabilityAVX
- }
- // else LCD
- return CPUCapabilityNone
- }
- func IsNUMA() bool {
- if runtime.GOOS != "linux" {
- // numa support in llama.cpp is linux only
- return false
- }
- ids := map[string]interface{}{}
- packageIds, _ := filepath.Glob("/sys/devices/system/cpu/cpu*/topology/physical_package_id")
- for _, packageId := range packageIds {
- id, err := os.ReadFile(packageId)
- if err == nil {
- ids[strings.TrimSpace(string(id))] = struct{}{}
- }
- }
- return len(ids) > 1
- }
|