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

Function parseVulkanGPUMemoryText

pkg/xsysinfo/gpu.go:1010–1159  ·  view source on GitHub ↗
(r io.Reader)

Source from the content-addressed store, hash-verified

1008}
1009
1010func parseVulkanGPUMemoryText(r io.Reader) []GPUMemoryInfo {
1011 var gpus []GPUMemoryInfo
1012 var current *vulkanGPUTextInfo
1013
1014 inMemoryProperties := false
1015 inMemoryHeaps := false
1016 inHeap := false
1017 heapSize := uint64(0)
1018 heapBudget := uint64(0)
1019 heapUsage := uint64(0)
1020 heapDeviceLocal := false
1021
1022 flushHeap := func() {
1023 if current != nil && inHeap && heapDeviceLocal {
1024 current.totalVRAM += heapSize
1025 current.usageVRAM += heapUsage
1026 current.budgetVRAM += heapBudget
1027 }
1028 heapSize = 0
1029 heapBudget = 0
1030 heapUsage = 0
1031 heapDeviceLocal = false
1032 inHeap = false
1033 }
1034
1035 flushGPU := func() {
1036 if current == nil || current.totalVRAM == 0 || current.deviceType == "PHYSICAL_DEVICE_TYPE_CPU" {
1037 return
1038 }
1039
1040 if current.usageVRAM == 0 && current.budgetVRAM != 0 {
1041 current.usageVRAM = current.totalVRAM - current.budgetVRAM
1042 } else if current.usageVRAM != 0 && current.budgetVRAM == 0 {
1043 current.budgetVRAM = current.totalVRAM - current.usageVRAM
1044 } else if current.usageVRAM == 0 && current.budgetVRAM == 0 {
1045 current.usageVRAM = 0
1046 current.budgetVRAM = current.totalVRAM
1047 }
1048
1049 usagePercent := float64(current.usageVRAM) / float64(current.totalVRAM) * float64(100.0)
1050
1051 gpus = append(gpus, GPUMemoryInfo{
1052 Index: current.index,
1053 Name: current.name,
1054 Vendor: VendorVulkan,
1055 TotalVRAM: current.totalVRAM,
1056 UsedVRAM: current.usageVRAM,
1057 FreeVRAM: current.budgetVRAM,
1058 UsagePercent: usagePercent,
1059 })
1060 }
1061
1062 scanner := bufio.NewScanner(r)
1063 for scanner.Scan() {
1064 line := strings.TrimSpace(scanner.Text())
1065 if line == "" {
1066 continue
1067 }

Callers 1

getVulkanGPUMemoryFunction · 0.85

Calls 5

parseVulkanGPUHeaderFunction · 0.85
parseVulkanValueFunction · 0.85
parseVulkanUintValueFunction · 0.85
ContainsMethod · 0.80
ScanMethod · 0.45

Tested by

no test coverage detected