is an option for certain functions that specifies on which device the computation should be attempted.
TargetDevice
is an option for certain functions that specifies on which device the computation should be attempted.
Details
- Possible settings for TargetDevice change depending on the system and the available hardware.
- General settings include:
-
"CPU" use the CPU "GPU" use available dedicated hardware - The specification TargetDevice->"GPU" resolves to one of the following, depending on $SystemID:
-
"CoreML" "MacOSX-ARM64" "CUDA" "Windows-x86-64" or "Linux-x86-64" "DirectML" "Windows-x86-64" if no CUDA card is detected - The full list of possible settings includes:
-
"CPU" default CPU "CoreML" Apple CoreML framework "CUDA" Nvidia CUDA API "DirectML" Microsoft Direct Machine Learning API {device,n} use the physical device with integer ID n {device,{n1,…}} use multiple devices jointly {device,All} use all the available devices jointly - Specifications of the form {device, _} are only supported when device resolves to "CUDA" or "DirectML".
- Using more than a single device is only supported when training using NetTrain.
- The device identifier n is an integer between 1 and the number of physical devices available.
- In general, a specific value of n might not identify the same GPU when different backends such as "CUDA" and "DirectML" are used.
- On Apple silicon machines, TargetDevice->"CoreML" attempts to perform the computation using the Apple Neural Engine. »
- On Windows machines, TargetDevice->"DirectML" can perform the computation using an integrated or discrete GPU with DirectX support.
- Currently, the only settings supported by NetTrain and NetMeasurements are "CPU" and "CUDA".
- TargetDevice"CUDA" requires NVIDIA GPUs with compute capability 5.0 or higher.
- In a fresh Wolfram Language installation on Linux and Windows machines, TargetDevice->"GPU" and related GPU settings will automatically download additional libraries. Such a download can also trigger again in case updates are available. The downloads can also be started manually by running PacletInstall["NeuralNetworkResources"] and PacletInstall["WolframGPUSDK"].
Examples
open all close allBasic Examples (1)
Scope (6)
Inference (5)
NetModel["Wolfram ImageIdentify Net V1"][RandomImage[], TargetDevice -> "CPU"]Evaluate a model on the system's default GPU:
NetModel["Wolfram ImageIdentify Net V1"][RandomImage[], TargetDevice -> "GPU"]Specify the use of CoreML (on macOS ARM64):
NetModel["Wolfram ImageIdentify Net V1"][RandomImage[], TargetDevice -> "CoreML"]Specify the use of a DirectML-compatible card (on Windows x86-64):
NetModel["Wolfram ImageIdentify Net V1"][RandomImage[], TargetDevice -> "DirectML"]Specify the use of a CUDA-compatible card (on Windows x86-64 or Linux x86-64):
NetModel["Wolfram ImageIdentify Net V1"][RandomImage[], TargetDevice -> "CUDA"]Training (1)
Train a net using a specified CUDA GPU:
NetTrain[NetModel["LeNet"], "MNIST", TargetDevice -> {"GPU", 1}]Train a net using two specified GPUs, where each GPU receives a batch of 16 training examples per training iteration:
NetTrain[NetModel["LeNet"], "MNIST", TargetDevice -> {"GPU", {1, 2}}, BatchSize -> 32]Train a net using all available GPUs:
NetTrain[NetModel["LeNet"], "MNIST", TargetDevice -> {"GPU", All}, BatchSize -> 64]Possible Issues (3)
If the system GPU is not supported, the operation will fail:
n = 100000;
trainingData = RandomReal[1, {n, 4}] -> RandomReal[1, {n, 4}];
net = NetChain[{8, Tanh, 2048, Tanh, 2048, Tanh, 4}, "Input" -> 4];
trained = NetTrain[net, trainingData, TargetDevice -> "GPU"]Some settings are only supported for model evaluation and will fail during training:
NetTrain[NetModel["LeNet"], "MNIST", TargetDevice -> "CoreML"]There is currently no CUDA support on macOS:
NetTrain[NetModel["LeNet"], "MNIST", TargetDevice -> "CUDA"]Tech Notes
Related Guides
Related Workflows
- Run Neural Network Training on GPUs
Text
Wolfram Research (2016), TargetDevice, Wolfram Language function, https://reference.wolfram.com/language/ref/TargetDevice.html (updated 2024).
CMS
Wolfram Language. 2016. "TargetDevice." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/TargetDevice.html.
APA
Wolfram Language. (2016). TargetDevice. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/TargetDevice.html
BibTeX
@misc{reference.wolfram_2026_targetdevice, author="Wolfram Research", title="{TargetDevice}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/TargetDevice.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_targetdevice, organization={Wolfram Research}, title={TargetDevice}, year={2024}, url={https://reference.wolfram.com/language/ref/TargetDevice.html}, note=[Accessed: 13-June-2026]}