Skip to main content

Apple Silicon GPU

Vendor: Apple

Category: GPU Graphics Processor

Architecture: Apple GPU (Unified Memory Architecture)

Introduction​

Apple M-series chips (M1/M2/M3/M4/Pro/Max/Ultra) with built-in GPU, providing GPU accelerated computing through the Metal 3 framework. Unified memory architecture allows CPU and GPU to share memory, ideal for AI inference and machine learning.

Specifications​

ModelComputeMemoryInterfaceTDPProcess
M4 Ultra27 TFLOPS (FP16)256GB unified memoryIntegrated SoC150WN3E (3nm)
M3 Max18 TFLOPS (FP16)128GB unified memoryIntegrated SoC100WN3B (3nm)
M2 Ultra15 TFLOPS (FP16)192GB unified memoryIntegrated SoC100WN5 (5nm)

Official Website​

Visit Official Website

Driver Downloads​

macOS​

Linux​

OS Support​

WindowsLinuxmacOSAndroid
❌⚠️ (Asahi Linux)✅❌

Version History​

VersionRelease DateDescription
Metal 32023M3 series mesh shading support
Core ML 72024M4 NPU deep integration

Performance Benchmarks​

ModelTaskPerformance Metric
M4 UltraLlama 3 70B Inference (MLX)~25 tok/s (quantized)
M3 MaxLlama 3 8B Inference~40 tok/s (4-bit)
M2 UltraStable Diffusion XL~3.5s/img (batch=1)
M4Whisper-large-v3~6× real-time transcription

Pricing​

ModelReference PriceNotes
M4 Ultra (Mac Pro/Studio)¥49,999 and upComplete system purchase only
M3 Max (MacBook Pro)¥27,999 and upLaptop form factor
M2 Ultra (Mac Studio)¥29,999 and upGradually being replaced by M4

Quick Installation​

macOS (MLX Framework)​

# 1. Install MLX (Apple official ML framework)
pip install mlx

# 2. Install MLX sample models
python -m mlx_lm.generate --model mlx-community/Llama-3.2-1B-4bit --max-tokens 50

macOS (llama.cpp MPS Backend)​

# 1. Build llama.cpp (automatically enables Metal)
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp && make LLAMA_METAL=1

# 2. Run inference
./llama-cli -m models/llama-3.2-1b.Q4_K_M.gguf -p "Hello"

Code Examples​

Python (MLX)​

import mlx.core as mx

# Create tensor on Apple Silicon GPU
x = mx.random.normal((1024, 1024))
y = mx.matmul(x, x)
print(f"Apple GPU matrix multiply: {y.shape}")
print(f"Device: {mx.default_device()}")

Python (PyTorch MPS Backend)​

import torch

if torch.backends.mps.is_available():
x = torch.randn(1024, 1024, device="mps")
y = torch.matmul(x, x)
print(f"MPS matrix multiply: {y.shape}")

Architecture Highlights​

  • Unified Memory Architecture (UMA): CPU and GPU share the same memory pool, eliminating data copies. Especially beneficial for LLM inference — no VRAM bottleneck when loading models
  • Metal Framework: Apple low-level graphics/compute API, performance approaching CUDA
  • MLX Framework: Apple official ML framework, optimized for Apple Silicon, supporting lazy loading and unified memory

Model Compatibility​

Model/FrameworkSupportNotes
PyTorch✅ MPS BackendSome operators may fall back to CPU
MLX✅ NativeApple official framework, recommended
llama.cpp✅ Metal BackendTop choice for local LLM inference
Llama / Qwen and similar LLMs✅MLX-LM / llama.cpp both work
Stable Diffusion✅Via MPS / Core ML
Whisper✅MLX-Whisper

If you're evaluating alternatives, the following products may also fit your scenario: