2024-10-17 08:45:00 +08:00
|
|
|
package discover
|
2024-01-10 12:29:58 +08:00
|
|
|
|
|
|
|
import (
|
2024-08-06 03:56:20 +08:00
|
|
|
"os"
|
|
|
|
"path/filepath"
|
|
|
|
"runtime"
|
|
|
|
"strings"
|
2024-01-10 12:29:58 +08:00
|
|
|
)
|
|
|
|
|
2024-08-06 03:56:20 +08:00
|
|
|
func IsNUMA() bool {
|
|
|
|
if runtime.GOOS != "linux" {
|
|
|
|
// numa support in llama.cpp is linux only
|
|
|
|
return false
|
|
|
|
}
|
2025-04-03 00:44:27 +08:00
|
|
|
ids := map[string]any{}
|
2024-08-06 03:56:20 +08:00
|
|
|
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
|
|
|
|
}
|