feat: Add Apple Silicon GPU support via IOReport API

Add GPU monitoring for Apple Silicon Macs using the IOReport framework
and IOHIDEventSystem for temperature readings.

Metrics supported:
- GPU utilization (from GPU Performance States residency)
- GPU power consumption (from Energy Model channel)
- GPU temperature (from IOHIDEventSystem thermal sensors)
- GPU clock speed (from DVFS frequency table + residency weighting)
- Memory usage (unified memory architecture, reports system RAM)

Implementation follows the existing Nvml/Rsmi/Intel backend pattern with
init/shutdown/collect<is_init> template functions in a new AppleSilicon
namespace under Gpu.

Build system changes:
- Enable GPU_SUPPORT on macOS in both CMakeLists.txt and Makefile
- Link IOReport library on macOS
- Add 'apple' to shown_gpus vendor filter

Closes #955
This commit is contained in:
Gary Neitzke
2026-02-14 11:44:17 -08:00
parent 09bd0cd3fa
commit 3ec2aeeb01
6 changed files with 534 additions and 3 deletions

View File

@@ -239,7 +239,7 @@ namespace Config {
{"rsmi_measure_pcie_speeds",
"#* Measure PCIe throughput on AMD cards, may impact performance on certain cards."},
{"gpu_mirror_graph", "#* Horizontally mirror the GPU graph."},
{"shown_gpus", "#* Set which GPU vendors to show. Available values are \"nvidia amd intel\""},
{"shown_gpus", "#* Set which GPU vendors to show. Available values are \"nvidia amd intel apple\""},
{"custom_gpu_name0", "#* Custom gpu0 model name, empty string to disable."},
{"custom_gpu_name1", "#* Custom gpu1 model name, empty string to disable."},
{"custom_gpu_name2", "#* Custom gpu2 model name, empty string to disable."},
@@ -288,7 +288,7 @@ namespace Config {
{"custom_gpu_name4", ""},
{"custom_gpu_name5", ""},
{"show_gpu_info", "Auto"},
{"shown_gpus", "nvidia amd intel"}
{"shown_gpus", "nvidia amd intel apple"}
#endif
};
std::unordered_map<std::string_view, string> stringsTmp;