Note that there is no way to target specific device characteristics when heterogeneous devices are present on a single worker node, since the Kubelet will treat all devices with a given NUMA affinity as equivalent and simply select whichever devices are available when allocating them to a container. nvidia for NVIDIA devices.) See Reserved system labels from the AKS documentation. Worker nodes in Azure Kubernetes Service (AKS) node pools whose underlying VM series includes a GPU will be automatically labelled with the /accelerator label, with a value indicating the hardware vendor (e.g.Some cloud platforms automatically apply node labels that are suitable as a starting point: If heterogeneous devices are present across different worker nodes in a Kubernetes cluster and applications need to target a specific vendor, device model or API then the recommended mechanism for enforcing these requirements is to add labels to your worker nodes and use a label selector to control which nodes any given application Pod is scheduled to. As such, the device plugins for DirectX cannot select devices based on requirements such as a specific hardware vendor, model-specific details such as VRAM capacity, or support for a specific non-DirectX API. Kubernetes device plugins are unable to influence scheduling decisions based on factors other than requested resource name and NUMA node topology. TensorWorks strongly recommends testing the functionality of any non-DirectX APIs that your applications require in order to verify that they are supported by the hardware and device drivers present in your target execution environment. Support for other APIs is entirely dependent on vendor support at the device driver level, and may vary significantly between devices from different vendors or even between different versions of an individual device driver. Important notes on support for non-DirectX APIsĭirectX APIs (DirectML for compute-only devices, and Direct2D/Direct3D/DirectML for display devices) are the only APIs guaranteed to be supported by all devices regardless of vendor and device driver version. Display devices may also support other graphics APIs such as OpenGL and Vulkan, compute APIs such as OpenCL and OpenMP, or various vendor-specific APIs for compute (AMD HIP/NVIDIA CUDA), low-level hardware access (AMD ADL/NVIDIA NVAPI), video encoding (AMD AMF/Intel Quick Sync/NVIDIA NVENC), etc. Display devices support the full Direct3D 12 feature set for performing both graphics rendering and compute workloads with the Direct2D, Direct3D and DirectML APIs. Compute-only devices may also support other compute APIs such as OpenCL and OpenMP, or vendor-specific compute APIs such as AMD HIP and NVIDIA CUDA.ĭevice plugin for WDDM: a Kubernetes device plugin that provides access to DirectX display devices that comply with the full Windows Display Driver Model (WDDM), under the resource name /display. Compute-only devices support the Direct3D 12 Core 1.0 Feature Level for running compute and machine learning workloads with the DirectML API. The device discovery library is also responsible for querying Windows registry information for device drivers in order to determine which runtime files need to be mounted into containers to make use of non-DirectX APIs.ĭevice plugin for MCDM: a Kubernetes device plugin that provides access to DirectX compute-only devices (or "Core devices") that comply with the Microsoft Compute Driver Model (MCDM), under the resource name /compute. The source code in this repository consists of three main components:ĭevice Discovery Library: a native C++/WinRT shared library that interacts with DXCore and other Windows APIs to enumerate DirectX adapters and retrieve information about with the underlying Plug and Play (PnP) hardware device for each adapter. Important notes on support for non-DirectX APIs.sharing a single device between multiple containers) OpenGL, Vulkan, OpenCL, NVIDIA CUDA, etc.) Support for automatically mounting the runtime files required to use non-DirectX APIs inside containers (e.g. Support for devices from all hardware vendors (e.g. Plugins are provided for both graphics devices and compute-only devices Individual devices are mounted based on their unique PCIe Location Path, rather than mounting entire classes of devices based on device interface class GUIDs The plugins include the following features: This repository contains Kubernetes device plugins for exposing DirectX devices to Windows containers.
0 Comments
Leave a Reply. |