Back to Pytorch

Device and DeviceType

docs/cpp/source/api/c10/device.md

2.12.01.5 KB
Original Source

Device and DeviceType

PyTorch provides device abstractions for writing code that works across CPU, CUDA, and other backends.

Device

{doxygenstruct}
:members:
:undoc-members:

Example:

cpp
c10::Device cpu_device(c10::kCPU);
c10::Device cuda_device(c10::kCUDA, 0);  // CUDA device 0

if (cuda_device.is_cuda()) {
    std::cout << "Using CUDA device " << cuda_device.index() << std::endl;
}

DeviceType

{cpp:enum-class}

Enumeration of supported device types.
{cpp:enumerator}

CPU device.
{cpp:enumerator}

NVIDIA CUDA GPU.
{cpp:enumerator}

AMD HIP GPU.
{cpp:enumerator}

XLA / TPU.
{cpp:enumerator}

Vulkan GPU.
{cpp:enumerator}

Apple Metal GPU.
{cpp:enumerator}

Intel XPU GPU.
{cpp:enumerator}

Apple Metal Performance Shaders.
{cpp:enumerator}

Meta tensors (shape only, no data).
{cpp:enumerator}

Habana HPU.
{cpp:enumerator}

Lazy tensors.
{cpp:enumerator}

Graphcore IPU.
{cpp:enumerator}

Meta training and inference accelerator.
{cpp:enumerator}

Custom backend registered via `c10::register_privateuse1_backend()`.

Convenience constants:

  • c10::kCPU, c10::kCUDA, c10::kHIP
  • c10::kXLA, c10::kVulkan, c10::kMetal
  • c10::kXPU, c10::kMPS, c10::kMeta
  • c10::kHPU, c10::kLazy, c10::kIPU, c10::kMTIA
  • c10::kPrivateUse1