Set Up GPU for MATLAB
Detect whether a compatible GPU is available, validate it works, and diagnose common failure modes.
When to Use
- User wants to check if their system can run GPU code in MATLAB
- User gets errors when calling
gpuDevice or gpuArray
- User wants to set up or select a specific GPU in a multi-GPU system
- User needs to troubleshoot why GPU computing isn't working
- As a prerequisite check before any GPU-accelerated workflow
When NOT to Use
- Writing or optimizing GPU-accelerated code — this skill only detects and diagnoses GPU availability
- Monitoring GPU memory or utilization during computation — use
gpuDevice properties directly or NVIDIA tools
- Distributing work across multiple GPUs with parallel pools — use
parpool workflows
Conventions
- Use MATLAB-native APIs (
canUseGPU, gpuDeviceTable, gpuDevice) for detection and properties — reserve nvidia-smi for information MATLAB cannot provide
- Prefer
canUseGPU over gpuDeviceCount == 0 or isempty(gpuDeviceTable) for availability checks — canUseGPU also verifies licensing and toolbox state
- If recommending a driver update, fetch the GPU Computing Requirements documentation page for the user's MATLAB release to check the driver selection policy
Workflow
1. Is a GPU available?
canUseGPU
Returns true if PCT is installed, licensed, GPU support is present, and a device is available. If true, proceed to step 3 (list available devices).
2. If canUseGPU returns false — diagnose
validateGPU("all")
If the output contains "requires a newer graphics driver": this does not guarantee a newer driver exists. Do not state that the GPU is unsupported or end-of-life — direct the user to verify on the GPU Computing Requirements page for this MATLAB release before drawing any conclusion about hardware compatibility.
For all other failures, interpret using the Troubleshooting table.
3. List available devices
gpuDeviceTable % List all GPUs and indices (no memory allocation)
Always run gpuDeviceTable before selecting a device — it confirms which devices are visible and their MATLAB indices.
4. Select device and query properties
d = gpuDevice(N); % Select GPU N
properties(d) % List available device properties
5. Check driver model (Windows only)
d = gpuDevice; % returns device already selected
d.DriverModel
d.KernelExecutionTimeout
If WDDM: the GPU is shared with the display — long-running kernels may be killed by the OS watchdog, and the GPU may exhibit unstable behaviour when low on memory. If d.KernelExecutionTimeout is true, kernel timeouts are active.
TCC or MCDM avoid these issues but are only available on select professional and data centre GPUs not connected to a display. If switching is not an option, and user experiences kernel timeouts, advise: increase TDR timeout in Windows Registry, close other GPU-accelerated apps, or break computation into smaller chunks.
6. Benchmark GPU performance (optional)
To qualify the GPU's computing power, suggest the user run gpuBench (available from the MATLAB File Exchange, not shipped with MATLAB). It benchmarks memory bandwidth, single/double precision compute, compares GPU vs CPU performance, and provides comparison data against other popular GPUs.
Troubleshooting
Key Functions
Copyright 2026 The MathWorks, Inc.