is an option for certain functions that specifies whether CPU or GPU computation should be attempted.


  • Typically possible settings are "CPU" and "GPU".
  • TargetDevice can be used with NetTrain to determine on which device a network is trained.
  • TargetDevice can be supplied when applying a trained neural net to an input to determine on which device the network is evaluated.
  • With the setting TargetDevice->"GPU", the Wolfram Language will attempt to use a GPU if it is available on your computer.
  • 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.
  • 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.
  • Only NVIDIA GPUs with the following compute capabilities are currently supported:
  • Capability 3.7Kepler architectureTesla K80
    Capability 5.0Maxwell architectureGTX 750 etc.
    Capability 5.2Maxwell architectureGTX 980 etc.
    Capability 6.0Pascal architectureTesla P100 etc.
    Capability 6.1Pascal architectureGTX 1080 etc.
    Capability 7.0Volta architectureTesla V100 etc.
    Capability 7.5Turing architectureRTX 2080 etc.


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  (1)

Train a net using a specified 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  (1)

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

Introduced in 2016
Updated in 2019