Skip to content

Instantly share code, notes, and snippets.

@dvu4
Last active April 10, 2025 18:55
Show Gist options
  • Save dvu4/8b786513fbe6fb55eb6504d585155dcf to your computer and use it in GitHub Desktop.
Save dvu4/8b786513fbe6fb55eb6504d585155dcf to your computer and use it in GitHub Desktop.

Check version of GPU Mac

1. Check the GPU info

system_profiler SPDisplaysDataType

This will display something like:

Graphics/Displays:

    Apple M4 Max:

      Chipset Model: Apple M4 Max
      Type: GPU
      Bus: Built-In
      Total Number of Cores: 40
      Vendor: Apple (0x106b)
      Metal Support: Metal 3
      Displays:
        Color LCD:
          Display Type: Built-in Liquid Retina XDR Display
          Resolution: 3456 x 2234 Retina
          Main Display: Yes
          Mirror: Off
          Online: Yes
          Automatically Adjust Brightness: Yes
          Connection Type: Internal

2. Use metal (For Apple Silicon)

  • If your Mac has an M-series chip (M1, M2, M3, M4), use
system_profiler SPHardwareDataType | grep "Chip"

This will display something like:

Chip: Apple M4 Max
  • Check Metal-supported GPUs with:
system_profiler SPDisplaysDataType | grep "Metal"

This will display something like:

Metal Support: Metal 3

3. Use metal (For Apple Silicon)

sysctl -a | grep -i "gpu"

This will display something like:

debug.iogpu.wired_lwm_mb: 0
debug.iogpu.dynamic_lwm: 1
debug.iogpu.wired_limit: 0
debug.iogpu.rsrc_limit: 0
iogpu.wired_lwm_mb: 0
iogpu.dynamic_lwm: 1
iogpu.wired_limit_mb: 0
iogpu.rsrc_limit: 0
iogpu.debug_flags: 0
These parameters are related to Apple's integrated GPU (IOGPU) on macOS, particularly for memory management and debugging. Here’s a breakdown of what each parameter likely means:

- 1. debug.iogpu.wired_lwm_mb: 0
Low Water Mark (LWM) for wired memory, measured in MB.
A value of 0 suggests no minimum reserved wired memory for the GPU.
"Wired memory" means memory that cannot be swapped out to disk.

- 2. debug.iogpu.dynamic_lwm: 1
Dynamic Low Water Mark is enabled (1), meaning the GPU can dynamically allocate memory as needed instead of having a fixed lower bound.
This helps with efficient memory usage based on workload demand.

- 3. debug.iogpu.wired_limit: 0
Maximum wired memory limit for the GPU.
A value of 0 means no fixed limit, meaning macOS can allocate as much wired memory as necessary.

- 4. debug.iogpu.rsrc_limit: 0
Resource allocation limit for GPU processes.
A value of 0 suggests no strict cap, allowing resources to be dynamically allocated.

- 5. iogpu.wired_lwm_mb: 0
(Same as debug.iogpu.wired_lwm_mb but used in an active runtime configuration.)

- 6. iogpu.dynamic_lwm: 1
(Same as debug.iogpu.dynamic_lwm, indicating dynamic memory allocation is enabled.)

- 7. iogpu.wired_limit_mb: 0
(Same as debug.iogpu.wired_limit, meaning no fixed max wired memory limit for the GPU.)

- 8. iogpu.rsrc_limit: 0
(Same as debug.iogpu.rsrc_limit, meaning no strict limit on GPU resource allocation.)

- 9. iogpu.debug_flags: 0
Likely a debugging setting for the GPU driver.
A value of 0 means debugging is disabled.

Summary:
- Your GPU memory allocation is dynamic (dynamic_lwm: 1).
- No strict wired memory limits (wired_limit: 0, wired_lwm_mb: 0).
- No resource limits on GPU processes (rsrc_limit: 0).
- Debugging is turned off (debug_flags: 0).

This suggests that macOS is dynamically managing GPU memory without hard limits, ensuring optimal performance based on workload demand.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment