# CUDA 12 on GKE Autopilot


Per the [NVIDIA docs](https://docs.nvidia.com/deploy/cuda-compatibility/), CUDA 12 applications require driver 525.60.04+. This driver is available as part of GKE 1.28. To upgrade an existing cluster to the latest version of 1.28:

```shell
VERSION="1.28"
REGION="us-central1"
CLUSTER_NAME="autopilot-cluster-1"
gcloud container clusters upgrade $CLUSTER_NAME \
    --region $REGION \
    --master --cluster-version $VERSION
```

This upgrades the control plane, and schedules the nodes to follow, which generally completes within a day or two (depending on how many nodes you have).

New nodes may still be created on the old version for a time after upgrading until that process completes. If you want to get to work right away, to force nodes to be created on the new version you can use [workload separation](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-separation) by adding a selector and toleration to your workload. As this forces the creation of a new group of nodes, they will get the now-current version. The key/value can be anything (like `"newversion: yes"` here) provided you use the same value in both locations.

```yaml
    spec:
      nodeSelector:
        cloud.google.com/gke-accelerator: nvidia-tesla-t4    
        newversion: "yes"
      tolerations:
      - key: newversion
        operator: Equal
        value: "yes"
        effect: NoSchedule  
```

Once the cluster upgrade is completed after a few days, this can be safely removed.

