MCPcopy
hub / github.com/mudler/LocalAI / getAppleGPUMemory

Function getAppleGPUMemory

pkg/xsysinfo/gpu.go:1200–1277  ·  view source on GitHub ↗

getAppleGPUMemory detects Apple Silicon GPUs using system_profiler (macOS only). Apple Silicon uses unified memory, so GPU memory is reported as system RAM.

()

Source from the content-addressed store, hash-verified

1198// getAppleGPUMemory detects Apple Silicon GPUs using system_profiler (macOS only).
1199// Apple Silicon uses unified memory, so GPU memory is reported as system RAM.
1200func getAppleGPUMemory() []GPUMemoryInfo {
1201 if _, err := exec.LookPath("system_profiler"); err != nil {
1202 return nil
1203 }
1204
1205 cmd := exec.Command("system_profiler", "SPDisplaysDataType", "-json")
1206 var stdout, stderr bytes.Buffer
1207 cmd.Stdout = &stdout
1208 cmd.Stderr = &stderr
1209
1210 if err := cmd.Run(); err != nil {
1211 xlog.Debug("system_profiler failed", "error", err, "stderr", stderr.String())
1212 return nil
1213 }
1214
1215 var result struct {
1216 SPDisplaysDataType []struct {
1217 Name string `json:"_name"`
1218 Model string `json:"sppci_model"`
1219 Cores string `json:"sppci_cores"`
1220 DeviceType string `json:"sppci_device_type"`
1221 Vendor string `json:"spdisplays_vendor"`
1222 } `json:"SPDisplaysDataType"`
1223 }
1224
1225 if err := json.Unmarshal(stdout.Bytes(), &result); err != nil {
1226 xlog.Debug("failed to parse system_profiler output", "error", err)
1227 return nil
1228 }
1229
1230 var gpus []GPUMemoryInfo
1231 for i, display := range result.SPDisplaysDataType {
1232 if display.DeviceType != "spdisplays_gpu" {
1233 continue
1234 }
1235 if !strings.Contains(strings.ToLower(display.Vendor), "apple") {
1236 continue
1237 }
1238
1239 name := display.Model
1240 if name == "" {
1241 name = display.Name
1242 }
1243 if name == "" {
1244 name = "Apple GPU"
1245 }
1246
1247 // Apple Silicon uses unified memory — report system RAM
1248 ramInfo, err := GetSystemRAMInfo()
1249 if err != nil {
1250 xlog.Debug("Apple GPU detected but failed to get system RAM", "error", err)
1251 gpus = append(gpus, GPUMemoryInfo{
1252 Index: i,
1253 Name: name,
1254 Vendor: VendorApple,
1255 })
1256 continue
1257 }

Callers 2

DetectGPUVendorFunction · 0.85
GetGPUMemoryUsageFunction · 0.85

Calls 4

GetSystemRAMInfoFunction · 0.85
ContainsMethod · 0.80
StringMethod · 0.65
RunMethod · 0.45

Tested by

no test coverage detected