---
title: Accelerate your code with Fabric
description: >-
  Fabric enables you to take full advantage of the hardware on your system. It
  supports
canonical: 'https://lightning.ai/docs/fabric/stable/home/installation/convert/accelerators'
---
# Accelerate your code with Fabric {#accelerate-your-code-with-fabric}

[Video: https://pl-public-data.s3.amazonaws.com/assets_lightning/fabric/animations/accelerators.mp4](https://pl-public-data.s3.amazonaws.com/assets_lightning/fabric/animations/accelerators.mp4)

## Set accelerator and devices {#set-accelerator-and-devices}

Fabric enables you to take full advantage of the hardware on your system. It supports

- CPU
- GPU (NVIDIA, AMD, Apple Silicon)
- TPU

By default, Fabric tries to maximize the hardware utilization of your system

```python
# Default settings
fabric = Fabric(accelerator="auto", devices="auto", strategy="auto")

# Same as
fabric = Fabric()
```

This is the most flexible option and makes your code run on most systems.
You can also explicitly set which accelerator to use:

```python
# CPU (slow)
fabric = Fabric(accelerator="cpu")

# GPU
fabric = Fabric(accelerator="gpu", devices=1)

# GPU (multiple)
fabric = Fabric(accelerator="gpu", devices=8)

# GPU: Apple M1/M2 only
fabric = Fabric(accelerator="mps")

# GPU: NVIDIA CUDA only
fabric = Fabric(accelerator="cuda", devices=8)

# TPU
fabric = Fabric(accelerator="tpu", devices=8)
```

For running on multiple devices in parallel, also known as "distributed", read our guide for [Launching Multiple Processes](/docs/fabric/2.6.6/reference/fundamentals/launch.md).

## Access the Device {#access-the-device}

You can access the device anytime through `fabric.device`.
This lets you replace boilerplate code like this:

```diff
- if torch.cuda.is_available():
-     device = torch.device("cuda")
- else:
-     device = torch.device("cpu")

+ device = fabric.device
```

---

**Navigation**

- Parent: [Convert PyTorch code to Fabric](/docs/fabric/2.6.6/home/installation/convert.md)
