cpu_common.go 490 B

123456789101112131415161718192021222324
  1. package discover
  2. import (
  3. "os"
  4. "path/filepath"
  5. "runtime"
  6. "strings"
  7. )
  8. func IsNUMA() bool {
  9. if runtime.GOOS != "linux" {
  10. // numa support in llama.cpp is linux only
  11. return false
  12. }
  13. ids := map[string]interface{}{}
  14. packageIds, _ := filepath.Glob("/sys/devices/system/cpu/cpu*/topology/physical_package_id")
  15. for _, packageId := range packageIds {
  16. id, err := os.ReadFile(packageId)
  17. if err == nil {
  18. ids[strings.TrimSpace(string(id))] = struct{}{}
  19. }
  20. }
  21. return len(ids) > 1
  22. }