TargetDevice

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" has the following interpretation, depending on $SystemID:
  • "CoreML""MacOSX-ARM64"
    "CUDA""Windows-x86-64" or "Linux-x86-64"
    "DirectML""Windows-x86-64" if no CUDA card is detected
  • Settings specific to system and available hardware include:
  • "CoreML"Apple CoreML framework
    "CUDA"Nvidia CUDA API
    "DirectML"Microsoft Direct Machine Learning API
  • Currently, the only settings supported by NetTrain are "CPU" and "CUDA".
  • TargetDevice{"GPU",n} allows a specific GPU to be used, where n is an integer between 1 and the number of GPUs available on your computer.
  • In general, a specific value of n might not identify the same GPU when different backends such as "CUDA" and "DirectML" are used.
  • TargetDevice->{"GPU",All} specifies that all available GPUs should be used jointly.
  • TargetDevice->{"GPU",{n1,n2,}} specifies that a specific subset of the GPUs should be used jointly.
  • On Apple silicon machines, TargetDevice->"CoreML" attempts to perform the computation using the Apple Neural Engine. It is not currently supported for NetTrain and NetMeasurements. »
  • On Windows machines, TargetDevice->"DirectML" can perform the computation using an integrated or discrete GPU with DirectX support. It is not currently supported for NetTrain and NetMeasurements.
  • TargetDevice"CUDA" requires NVIDIA GPUs with compute capability 3.7 or 5.0 and 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["MXNetResources"], PacletInstall["ONNXRuntimeResources"] and PacletInstall["CUDAResources"].

Examples

open allclose all

Basic Examples  (1)

Train a net using the system's default GPU:

Evaluate the resulting net using the system's default GPU:

Scope  (6)

Inference  (5)

Evaluate a model on the CPU:

Evaluate a model on the system's default GPU:

Specify the use of CoreML (on macOS ARM64):

Specify the use of a DirectML-compatible card (on Windows x86-64):

Specify the use of a CUDA-compatible card (on Windows x86-64 or Linux x86-64):

Training  (1)

Train a net using a specified CUDA GPU:

Train a net using two specified GPUs, where each GPU receives a batch of 16 training examples per training iteration:

Train a net using all available GPUs:

Possible Issues  (3)

If the system GPU is not supported, the operation will fail:

Some settings are only supported for model evaluation and will fail during training:

There is currently no CUDA support on macOS:

Wolfram Research (2016), TargetDevice, Wolfram Language function, https://reference.wolfram.com/language/ref/TargetDevice.html (updated 2024).

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_2024_targetdevice, author="Wolfram Research", title="{TargetDevice}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/TargetDevice.html}", note=[Accessed: 10-October-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_targetdevice, organization={Wolfram Research}, title={TargetDevice}, year={2024}, url={https://reference.wolfram.com/language/ref/TargetDevice.html}, note=[Accessed: 10-October-2024 ]}