Kubernetes GPU scheduling with dynamic resource allocation

Dynamic Resource Allocation lets Kubernetes schedule GPUs and other accelerators through DeviceClass and ResourceClaim objects instead of simple counts. This page explains the design choices, sharing trade-offs, setup sequence and limits to confirm before you build it in your own cluster.

On this page

When Kubernetes GPU scheduling needs dynamic resource allocation

Dynamic Resource Allocation (DRA) lets Kubernetes match pods to accelerators by the properties a workload needs, beyond a simple count of whole GPUs. A pod requests devices through a ResourceClaim, which refers to a DeviceClass that an administrator defines, and the scheduler selects devices that a vendor driver has published in ResourceSlice objects. You need this when a request is more specific than a single GPU count. Typical cases are a particular device model, a device with enough memory for a given model, several devices that must be allocated together in one claim, or a device shared between pods. Check your cluster's Kubernetes version, whether the DRA feature is enabled in it, and whether your driver supports DRA on your hardware. Availability depends on both the release and the vendor, so confirm both before design work starts.

A simpler approach is often enough. If every GPU in the pool is identical, every workload takes whole devices, and nobody needs to tell device models or memory sizes apart, the classic device plugin model with a count-based resource request is easier to run and easier to debug. The same applies to batch jobs that can wait for a free device when no team needs to split a card between tenants. Before choosing DRA, list the placement rules you already enforce, such as node labels, taints and node selectors. If those rules produce the placement you need, add DRA only for the cases they cannot express. Mixed fleets are the usual trigger: once two accelerator generations run in one cluster, teams start asking for a specific one.

Device sharing is the decision that most changes the design. Sharing depends on what the driver supports, such as time slicing, hardware partitioning or a driver-specific mode, and each mode has different isolation and fault behavior. Ask the vendor which sharing modes it supports on your hardware and how it reports them to the cluster. Then confirm the preemption behavior for claimed devices in your target release, since it limits how you can promise capacity to a higher-priority team. Write these answers down as design inputs, not as assumptions to test in production.

Before committing, inventory the workloads and the hardware. List each workload with the device properties it needs, how many devices each claim requires, whether it tolerates sharing, and which team owns it. Ask the accelerator vendor which driver version supports your hardware and Kubernetes release, and whether the driver publishes the attributes your claims will select on. The platform team usually owns DeviceClass definitions and the namespace access that controls who can create claims. Settle those ownership questions early, because changing a DeviceClass later affects every workload that references it.

Which DRA objects and allocation patterns fit each workload

This table compares the four Dynamic Resource Allocation configuration choices: DeviceClass, a shared ResourceClaim, a ResourceClaimTemplate and claim selectors. Read each row for the workload pattern it suits, the team that usually owns it and the main cost of choosing it. Most clusters combine a platform-owned DeviceClass with application-owned claims and selectors.

Object or patternWhen it fitsUsually owned byMain trade-off
DeviceClassPlatform sets a standard device pool, such as one accelerator family, that teams request without knowing node details.Platform teamChanges to the class selectors affect every claim that references it, so version them with care.
Shared ResourceClaimSeveral pods must use the same device allocation, such as cooperating components of one job.Application team, with platform reviewPods sharing one claim depend on the same allocation, and coordination between them falls to the application.
ResourceClaimTemplateEach pod in a replicated workload needs its own device, such as independent model server replicas.Application teamEach pod gets its own claim, so scaling depends on free devices, and claims are cleaned up with their pods.
Claim selectorsA workload needs a specific model or memory size, expressed as conditions on device attributes.Application team, agreed with platformSelectors match only the attributes the driver publishes, so confirm those attributes before relying on them.

How DeviceClass, ResourceClaim and ResourceSlice work together

Dynamic Resource Allocation splits GPU scheduling into three objects owned by three different actors. A DRA driver publishes the devices it finds on each node as ResourceSlice objects, the platform team defines DeviceClass objects that describe which devices may be requested, and application teams create ResourceClaim or ResourceClaimTemplate objects that a pod references. The scheduler connects the three. Before you size a cluster or write a single manifest, confirm which DRA API version and feature state your Kubernetes release provides, and read the documentation for your specific driver, because driver behavior determines what appears in the slices.

A ResourceSlice is a cluster-scoped record of devices that a driver makes available, grouped into pools. For GPUs, each slice typically describes the devices on one node, along with attributes such as model and memory. Application teams never write these objects, and platform engineers should not edit them by hand, because the driver rewrites them when hardware or configuration changes. After installing the driver, check that every GPU node has a slice and that the device count and attributes match the hardware you bought. A missing or incomplete slice is the most common cause of workloads that cannot be placed, and it is cheaper to catch at this stage than during a production rollout.

A DeviceClass is a cluster-scoped object that the platform team writes to define a category of device, usually with CEL selectors on driver-published attributes and, where the driver supports it, configuration passed to the device. Claims refer to a DeviceClass by name, so the classes form the catalog of what teams may ask for. Decide how granular the catalog should be. One class per GPU model is easy to explain to application teams, while classes for partitioned or shared device profiles add choice and also add more ways to request the wrong thing. Keep the list short and document the intent of each class in the object's annotations or in your internal catalog.

A ResourceClaim is a namespaced request for one or more devices from a DeviceClass, and it can narrow the choice with its own selectors and count mode. A ResourceClaimTemplate generates a new claim for each pod that uses it, which suits pods that do not need to share a device. A single claim can instead serve several pods that must see the same allocation. Pods reference a claim through spec.resources.claims and the matching entry in the container's resources. Application teams own these objects, and the platform team should set namespace quotas and review which classes each namespace may use. The scheduler allocates devices when it places a pod, recording the result in the claim's status. If no slice contains a device that satisfies the class and the claim's selectors, the pod remains Pending and the scheduler reports the reason in the pod's events. Watch for Pending pods in GPU namespaces and alert on them, because a selector typo produces the same symptom as a full cluster.

How DRA differs from device plugins and extended resources

Device plugins expose hardware to the scheduler as integer extended resources. A container asks for a count in its resource limits, and the scheduler matches that count against the capacity each node advertises. The request says little about the device itself. Dynamic Resource Allocation (DRA) lets a workload describe the device it needs through a request that can carry selectors and reference a DeviceClass. The driver publishes attributes for each device, and the scheduler allocates a ResourceClaim that pods can reference.

  • Device plugin: a count per container, with no per-device attributes visible to the scheduler.
  • DRA requests: selectors over attributes that the driver publishes, such as model or memory, depending on what the driver exposes.
  • DRA claims: separate objects, so one device description can serve several pods or containers.
  • Topology: neither model gives the scheduler full reasoning about every hardware layout, so confirm what your driver reports.
  • Expressiveness: the set of selector and claim features depends on your Kubernetes version, so check before you design around them.

Check the selector and claim features your cluster version supports in the current Kubernetes documentation for that version before you write requests.

Designing device sharing without weakening isolation

The first decision in device sharing is which unit you share, because each unit creates a different isolation boundary. In Dynamic Resource Allocation, a ResourceClaim requests devices, and the containers or pods that reference that claim receive the allocated devices. You will typically evaluate three patterns: multiple containers in one pod referencing a single claim, multiple pods referencing one shared claim, and driver-level partitioning or time slicing, in which the vendor driver presents one physical accelerator as several schedulable devices. Each pattern changes who can reach the device, how the scheduler places workloads and what happens when one workload misbehaves.

Containers in one pod that reference the same claim share the device and the pod's trust boundary. Kubernetes does not add memory or compute separation between those containers, so this pattern fits containers that already belong to one application and may share volumes or a process namespace. Pods sharing one claim are a different case. The claim is allocated once, so the pods share the device for as long as the claim exists, and they may need to land on the same node. Isolation then depends on the driver and on what each pod can do to the device, so keep pods from different tenants or data classifications off a shared claim.

Driver-level partitioning and time slicing are where isolation claims vary most. Some hardware can split memory and compute into partitions with fixed limits, while time slicing typically switches work between contexts and may not give each workload a fixed memory ceiling or guaranteed share. Whether your accelerator supports either mode, how memory is fenced between partitions, whether a fault in one context can affect another, and how the device plugin or DRA driver exposes partitions are questions for the GPU vendor. Confirm each point for your exact hardware model and driver version, and ask for written statements on memory isolation, compute isolation and error containment before you rely on sharing for regulated data.

Some workloads need several GPUs in one placement decision, and sharing does not solve that. As an illustrative case, a vLLM deployment using tensor parallelism splits one model across several GPUs within a node, so every shard must be allocated together on the same node. Request the full device set in a single claim so the scheduler finds a node with all of them free, and avoid spreading the shards across separate claims, which can leave some allocated and others waiting. A practical design separates a shared pool for small inference jobs from dedicated whole-device claims for large models. Record the sharing mode, the vendor confirmation and the tenant boundary in your design document before the first production claim.

Setting up DRA for GPUs on a self-managed cluster

This sequence takes a self-managed Kubernetes cluster from no dynamic device support to a verified test pod that receives a GPU through a ResourceClaim. Each step names the check that confirms it and a rollback note for backing out without disturbing other workloads. Confirm the API version and feature settings in the documentation for your minor release before you begin.

  1. Confirm the minor version and support status

    The platform engineering lead checks the cluster's Kubernetes minor version against the release list on kubernetes.io/releases. As of September 2026, the project maintains 1.37, 1.36 and 1.35, with end-of-life dates of October 28, 2027, June 28, 2027 and February 28, 2027 respectively. Run kubectl version and kubectl get nodes -o wide to record the control plane version and each node's kubelet version. Confirm that every kubelet sits within the skew allowed by the version skew policy, and confirm that the DRA API and feature state for that minor version in the official documentation match what you plan to enable. You are done when the versions are recorded and the support window covers the planned operating period. Rollback: none is needed for this step, but if the cluster is unsupported, schedule an upgrade before continuing.

  2. Enable DRA on the control plane and nodes

    The cluster administrator enables the DRA feature gates and API settings that the documentation for your minor version specifies, first on kube-apiserver, then on kube-controller-manager and kube-scheduler, and finally on kubelets on the GPU nodes. Restart components one at a time and watch each one return to a healthy state before moving on. The check is kubectl api-resources filtered for the resource.k8s.io API group, which should list the DRA resource types, plus a clean kubelet status on each GPU node. Rollback: revert the flags in the reverse order, restart the components, and confirm that existing workloads still schedule. If a flag change fails on one control plane node, stop and fix it there before touching the others, because mixed flag states across control plane replicas cause hard-to-trace scheduling errors.

  3. Install the vendor DRA driver

    The platform team installs the accelerator vendor's DRA driver on the GPU nodes, usually as a DaemonSet with a kubelet plugin, using the vendor's manifests or Helm chart. The driver registers with the kubelet and publishes a ResourceSlice for each node that describes the devices it can allocate. The check is kubectl get resourceslices, which should show one or more slices per GPU node with the driver name and device entries that match the hardware in the node. Confirm the driver version against the vendor's compatibility statement for your Kubernetes minor version, because DRA driver support differs between vendors. Rollback: remove the DaemonSet and its RBAC objects, then confirm that the stale ResourceSlices are deleted. If slices remain after removal, delete them manually so the scheduler does not allocate devices that no longer exist.

  4. Define DeviceClasses for GPU selection

    The platform team, with input from the workload owners, writes one or more DeviceClass objects that select devices by driver name and the attributes the vendor publishes, such as model or memory size. Keep classes narrow enough that a claim gets the hardware it was designed for, and document which team owns each class. Apply the manifests with a server-side dry run first, then apply them for real. The check is kubectl get deviceclass showing each class, followed by kubectl describe on one class to confirm the selector text matches what you intended. Rollback: delete a DeviceClass only after confirming that no ResourceClaim references it, because deleting a class that a claim uses can leave that claim unresolvable. Record the class names in your platform documentation so application teams know which ones are approved.

  5. Create a test ResourceClaim and pod

    An engineer creates a ResourceClaim that references one of the DeviceClasses and a pod that lists the claim under its resource claims, using a small test image that exits after a short check. Apply both objects in a dedicated test namespace so the test does not share quotas or policies with production workloads. The check has two parts: kubectl describe resourceclaim should show an allocation with the node and device name, and kubectl get pod should show the pod reaching Running or Completed on the node the claim selected. If the claim stays pending, read its events and the scheduler logs before changing anything. Rollback: delete the pod, then the claim, then the namespace. Deleting the pod first releases the device, and the claim can then be removed without leaving an allocation behind.

  6. Verify device access inside the container

    The engineer runs a command inside the test pod, using the vendor's device query tool or a device listing command, to confirm that the container sees the GPU that the claim allocated. Compare the device identifier in the container with the device name in the claim status and the ResourceSlice entry for that node. A match confirms that allocation and device access work end to end. Also confirm that a second pod without the claim cannot see the device, which shows the claim is controlling access. Rollback: if the device is missing or mismatched, cordon the node with kubectl cordon, collect the driver and kubelet logs, and fix the driver configuration before uncordoning. Once the test passes, record the command output, the claim status and the driver version in your runbook so the verified baseline can be reproduced after upgrades.

Security and operations for shared accelerators

Dynamic Resource Allocation moves device requests into objects that platform teams and application teams both manage, so access control, node trust and upgrades need the same care as the workloads. The cards below cover the decisions to make before shared accelerators go into production and the checks to repeat after each change.

Who can create DeviceClasses and claims

DeviceClasses describe which devices exist and how they are selected, while ResourceClaims request devices for a workload. DeviceClass is cluster-scoped, so its permissions must be granted through cluster-level roles, while ResourceClaims can be limited to individual namespaces. Confirm that application teams can create claims without being able to change the classes that define the hardware, and review who holds those verbs in your RBAC audit.

Driver privilege and node access

DRA drivers usually run as DaemonSets on GPU nodes and often need elevated privileges, host paths or access to device files to discover and prepare hardware. Treat the driver's service account, its node permissions and any privileged settings as a review separate from application workloads. Ask the driver vendor which privileges are required, which are optional, and whether the driver can run in a namespace that only platform administrators control.

Container security settings for device access

Workloads that use a claimed device still run under the security context you set on them. Pod Security Standards are the baseline: the Privileged, Baseline and Restricted levels are enforced per namespace by Pod Security Admission. Restricted is a sensible target for application namespaces, but accelerator stacks may need settings it blocks. Document each exception, keep it in the namespace that needs it, and review it whenever the driver or workload image changes.

Separating workloads that share devices

Sharing one device across claims improves utilization, but it also means one workload can affect another's memory, compute time or failure behavior. Decide which tenants may share a device and which need dedicated hardware, then express that split through separate DeviceClasses or node pools. Confirm how the driver isolates shared devices and what happens to data left in device memory between jobs.

Monitoring device health and allocation

A pod that schedules successfully does not show whether its device is healthy or which claims hold which devices. Track device health through the driver's metrics and node events, and record which ResourceClaims are allocated and to which pods. Alert on devices that fail or leave the pool and on claims that stay pending. Ask the driver which metrics and status fields it exposes before building dashboards on them.

Driver upgrades and version skew

A driver upgrade changes the plugin running on every GPU node, so it must fit the Kubernetes version skew policy. The policy requires kube-apiserver to be upgraded one minor version at a time, before kube-controller-manager, kube-scheduler and kubelets, and it allows kubelets to be up to three minor versions older than kube-apiserver. Check the driver's support matrix against your target Kubernetes minor version, then roll the change through a canary node pool first.

The preemption limit and how to plan around it

The key point for planning is that a higher-priority workload cannot be assumed to evict a device that is already allocated to a lower-priority workload. Ordinary pod preemption frees CPU and memory by removing lower-priority pods so a pending pod can be scheduled. With Dynamic Resource Allocation, a device held through a ResourceClaim should be treated as occupied until its holder releases it. Before you write queue or priority policy, confirm the exact preemption behavior for the Kubernetes version you plan to run in the official documentation, because this area changes between releases and you should not design around assumptions from older material.

The practical effect appears first in queues. A pending high-priority pod that needs a GPU may wait behind lower-priority jobs that hold every device, even though its pod priority is higher. Batch jobs that run for hours can hold accelerators for their full duration, and inference services that keep a model loaded hold their devices continuously. Illustrative example: a cluster with one free GPU, a training job holding the rest, and an interactive inference endpoint that must start within minutes will leave the endpoint waiting until the training job finishes or fails. Map each workload class to the wait it can tolerate before you size the cluster.

There are three main ways to plan around the limit. The first is reserving capacity: keep devices unallocated for higher-priority tiers, which protects latency but leaves hardware idle and adds recurring cost. The second is separating device pools by priority, using distinct DeviceClass definitions and node groups per tier so each tier draws from its own devices. This gives predictable access but can fragment capacity and lower overall utilization. The third is scheduling policy outside DRA, where an admission or queueing layer decides which jobs start, and stops or drains lower-priority work through its own mechanism. This adds a component your team must build, secure and operate.

Choose the approach per workload class, not for the whole cluster. Ask which workloads can be interrupted, whether batch jobs checkpoint their state, and which inference services must stay available during peak demand. Then test contention in a staging cluster that reproduces the mix of jobs, because scheduling behavior under load is hard to predict from documentation alone. In a quote, ask whether the scope includes a contention test, a written priority and pool design, and documented ownership for the policy. Expect the main cost drivers to be idle capacity for reserved devices, extra nodes for separate pools, and build and operation effort for any external scheduling layer.

Limits to confirm in your environment before you commit

Dynamic Resource Allocation changes how GPUs are requested, advertised and shared, so your design depends on the exact Kubernetes version, driver stack and tooling you run. Settle each item below with your distribution vendor, hardware supplier or a test cluster before you commit to a scheduling design.

Kubernetes version and DRA status

Confirm which Kubernetes minor version your distribution ships and whether the DRA APIs your design uses are enabled by default, held behind a feature gate, or limited to a specific API version. The project maintains only the three most recent minor releases, currently 1.37, 1.36 and 1.35 as of September 2026, and the version skew policy limits how far kubelets may lag the API server. Ask the vendor for the exact API versions and feature gates in writing, and plan the upgrade path you will need over the next few releases.

Driver and hardware sharing support

Ask which GPU models, driver versions and DRA or device plugin releases support the sharing mode you need, such as several claims on one device, partitioned devices or time slicing. Sharing behavior depends on the accelerator vendor and driver, and isolation between modes can differ. Run your own workload on the exact hardware and driver combination, then measure whether one tenant's pod can affect another's memory use or throughput before you approve shared placement.

Cluster autoscaler compatibility

Confirm whether your node autoscaler reads the device requirements carried in ResourceClaims and whether it will add a node pool that can satisfy a pending claim. Autoscalers often decide from node capacity and pod requests, so a pending claim may not trigger a scale-out at all. Test a scale-up and a scale-down with a claim held by a running pod, and check that the autoscaler never removes a node that still has allocated devices.

Preemption behavior with claims

Confirm how the scheduler handles priority and preemption when a higher-priority pod needs a device held by a lower-priority claim. DRA has a documented preemption limit, so take the exact cases from the upstream documentation and your distribution's release notes rather than from general pod preemption behavior. Also check whether training or serving jobs get a graceful shutdown window, and whether the claim is released promptly after eviction.

Observability for device allocation

Confirm which metrics, events and object states show which device a claim received, which pod holds it, and why a claim is still pending. Pod-level metrics may not reveal device allocation, so check whether your GPU exporter and DRA driver expose it. vLLM's own /metrics endpoint reports request counts, token throughput and KV cache use, which is separate from device allocation. Plan alerts for allocation failures and device health, and test them by forcing a claim to fail.

Isolation for multi-node serving traffic

Decide whether your model needs more than one node, such as pipeline parallelism across nodes in vLLM, and if so, identify the network path that carries inter-node traffic. The vLLM security documentation states that communication between nodes in a multi-node deployment is insecure by default, without authorization or encryption, and must be protected by an isolated network. Ask your platform team which network segment, NetworkPolicy and placement rules will carry that traffic before you schedule claims across nodes.

Questions buyers ask before outsourcing GPU scheduling work

How much does outsourcing GPU scheduling work cost?

The cost is set by the written scope, and no price applies before one exists. Who is paid for what: DeployOpen is paid for planning, DeviceClass and ResourceClaim design, implementation, testing and documentation. You separately pay for GPU hardware or cloud accelerator capacity, and for any vendor driver or component licenses you use. What drives it up: the number of device types, sharing requirements, driver and hardware validation, integration with existing schedulers and autoscalers, and testing effort. One-time versus recurring: the build is usually one-time, while upgrades and support are recurring retainers. Ask for a quote that lists each driver, device model, integration and test case separately so you can see what each line covers.

Does Kubernetes itself carry a license fee for GPU workloads?

No, Kubernetes itself carries no license fee because it is open source under the Apache 2.0 license, according to its GitHub repository. Your costs come from the GPU nodes, cloud or data center capacity, storage, networking, and the people who operate the cluster. Some GPU drivers, device plugins, monitoring tools or commercial distributions have their own terms, so check the license of each component you plan to run. DeployOpen quotes follow a written scope, so the scope should name every component and state whether its license is open source or commercial.

How long does a GPU scheduling implementation take?

The duration depends on the scope, and no fixed timeline applies to every environment. The main factors are how many GPU or accelerator types you run, whether devices must be shared between workloads, how much driver and hardware validation is needed, and how many schedulers and autoscalers must integrate with the setup. Kubernetes ships new minor releases about three times per year on a cycle of roughly 14 weeks, so plan the work against the version your cluster runs and any upgrade already scheduled. Ask for a written timeline that ties each phase to a deliverable and to the test evidence it produces.

What do we need to provide before GPU scheduling work starts?

You need to provide a clear inventory of the work and the environment. Gather the GPU or accelerator models, driver versions and node pools, along with the Kubernetes version and your upgrade plan. List the workloads that need GPUs, their sharing needs and their priority relative to each other. Provide a non-production cluster or equivalent test capacity, access to the relevant cloud accounts or data center hardware, and named owners for the scheduler, autoscaler, monitoring and security policy. Also confirm which teams may approve device access rules, because those decisions affect the design more than any single configuration setting.

Can an internal platform team implement GPU scheduling on its own?

An internal team can implement it alone if it has strong Kubernetes operations experience, hands-on GPU driver experience and a non-production environment where it can test changes safely. The harder parts are usually hardware validation across device types, sharing configuration, and integration with autoscalers and existing schedulers, because these need repeatable tests rather than one-off checks. Consider whether your team has the time to build these tests and maintain them through upgrades. Many organizations split the work, keeping design decisions in-house while outsourcing the validation and documentation. DeployOpen can take on either the full build or a defined part of it, based on the written scope.

How does Dynamic Resource Allocation differ from the device plugin model?

Dynamic Resource Allocation lets a workload describe the devices it needs through claim objects, while the device plugin model advertises devices as countable extended resources on each node. In the claim model, device classes and resource claims carry richer selection and configuration, which matters when you run several GPU types or need sharing rules. Device plugins remain simpler for uniform, whole-device allocation. Confirm the API version and feature status your cluster supports in the Kubernetes documentation for that release, and test both models against your own workloads before choosing one for production.

What limits preemption when GPU claims compete for devices?

Preemption is the step where the scheduler removes lower-priority workloads to free devices for a higher-priority claim, and the limit is that this behavior does not cover every situation a team might expect. Plan for workloads that must not be interrupted, and decide in advance which priority classes can displace others. Test how the scheduler behaves when a claim waits on devices that are in use, and confirm the current preemption behavior in the documentation for the release you run. The design should also state what happens to batch jobs and inference services that are evicted, including how they restart and where their data is stored.

How DeployOpen works on this

DeployOpen plans and builds Kubernetes GPU scheduling with Dynamic Resource Allocation inside the client's own clusters and infrastructure, including cloud accounts, data centers or air-gapped networks. Each engagement starts with a written, fixed scope that names the device classes, claim templates, workloads and controls to be delivered, so the client knows exactly what gets built before work begins.

How we scope

  • Inventory the accelerator hardware, drivers and node pools that the cluster will expose to DRA.
  • Define DeviceClass and ResourceClaim templates for each workload family, including any sharing rules.
  • Record which preemption behavior applies, since DRA does not replace preemption for claimed devices.
  • Agree the Kubernetes minor version and upgrade path in writing before the build starts.

How we build

  • Install and configure the DRA driver and device plugin components on your GPU nodes.
  • Write DeviceClass, ResourceClaimTemplate and workload manifests, reviewed against your scheduling policy.
  • Test claim allocation, device sharing limits and failure handling with representative GPU workloads.
  • Apply Pod Security Standards and RBAC so only approved teams can request accelerator devices.

How we hand over

  • Deliver manifests, configuration and runbooks stored in your own version control system.
  • Document the device inventory, claim patterns, preemption limits and known scheduling constraints.
  • Walk your platform and operations engineers through allocation checks and troubleshooting steps.
  • Provide a verification record showing what was tested and what still needs your confirmation.

How we support

  • Review driver and Kubernetes version compatibility before each planned cluster upgrade.
  • Ongoing support, upgrades and continuous testing are available as a retainer after handover.
  • Confirm vendor driver support for each new GPU model with the hardware and driver vendors.
  • Revisit claim templates and sharing rules when workload mix or accelerator capacity changes.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.