PageSourceSearch

https://volcano.sh/assets/js/46fb1e3e.dbc205ac.js

js volcano.sh collected 2026-10-02 06:16:24 UTC 25,124 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkdocs_site=globalThis.webpackChunkdocs_site||[]).push([[24875],{30449(e,n,s){s.r(n),s.d(n,{assets:()=>t,contentTitle:()=>c,default:()=>a,frontMatter:()=>r,metadata:()=>d,toc:()=>o});const d=JSON.parse('{"id":"UserGuide/user_guide_how_to_use_vnpu","title":"Ascend vNPU User Guide","description":"Introduction","source":"@site/versioned_docs/version-v1.13.0/UserGuide/user_guide_how_to_use_vnpu.md","sourceDirName":"UserGuide","slug":"/UserGuide/user_guide_how_to_use_vnpu","permalink":"/docs/v1.13.0/UserGuide/user_guide_how_to_use_vnpu","draft":false,"unlisted":false,"editUrl":"https://github.com/volcano-sh/website/tree/master/versioned_docs/version-v1.13.0/UserGuide/user_guide_how_to_use_vnpu.md","tags":[],"version":"v1.13.0","lastUpdatedAt":1781163901000,"frontMatter":{"title":"Ascend vNPU User Guide"},"sidebar":"docsSidebar","previous":{"title":"Task Topology Plugin User Guide","permalink":"/docs/v1.13.0/UserGuide/user_guide_how_to_use_task_topology_plugin"},"next":{"title":"Volcano vGPU User Guide","permalink":"/docs/v1.13.0/UserGuide/user_guide_how_to_use_volcano_vgpu"}}');var i=s(74848),l=s(28453);const r={title:"Ascend vNPU User Guide"},c=void 0,t={},o=[{value:"Introduction",id:"introduction",level:2},{value:"1. MindCluster mode",id:"1-mindcluster-mode",level:3},{value:"2. HAMi mode",id:"2-hami-mode",level:3},{value:"Installation",id:"installation",level:2},{value:"Install Volcano:",id:"install-volcano",level:3},{value:"Install ascend-device-plugin and third-party components",id:"install-ascend-device-plugin-and-third-party-components",level:3},{value:"MindCluster Mode",id:"mindcluster-mode",level:4},{value:"Install Third-Party Components",id:"install-third-party-components",level:5},{value:"Scheduler Config Update",id:"scheduler-config-update",level:5},{value:"HAMi mode",id:"hami-mode",level:4},{value:"Label the Node with <code>ascend=on</code>",id:"label-the-node-with-ascendon",level:5},{value:"Deploy <code>hami-scheduler-device</code> ConfigMap",id:"deploy-hami-scheduler-device-configmap",level:5},{value:"Deploy ascend-device-plugin",id:"deploy-ascend-device-plugin",level:5},{value:"Scheduler Config Update",id:"scheduler-config-update-1",level:5},{value:"Usage",id:"usage",level:2},{value:"MindCluster mode",id:"mindcluster-mode-1",level:3},{value:"HAMi mode",id:"hami-mode-1",level:3},{value:"Hami vNPU scene memory allocation restrictions",id:"hami-vnpu-scene-memory-allocation-restrictions",level:4}];function h(e){const n={a:"a",blockquote:"blockquote",br:"br",code:"code",h2:"h2",h3:"h3",h4:"h4",h5:"h5",hr:"hr",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,l.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,i.jsxs)(n.p,{children:["Volcano supports ",(0,i.jsx)(n.strong,{children:"two vNPU modes"})," for sharing Ascend devices:"]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"1-mindcluster-mode",children:"1. MindCluster mode"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Description"}),":"]}),"\n",(0,i.jsxs)(n.p,{children:["The initial version of ",(0,i.jsx)(n.a,{href:"https://gitcode.com/Ascend/mind-cluster",children:"MindCluster"}),"\u2014the official Ascend cluster scheduling add-on\u2014required custom modifications and recompilation of Volcano. Furthermore, it was limited to Volcano release1.7 and release1.9, which complicated its use and restricted access to newer Volcano features."]}),"\n",(0,i.jsx)(n.p,{children:"To address this, we have integrated its core scheduling logic for Ascend vNPU into Volcano's native device-share plugin, which is designed specifically for scheduling and sharing heterogeneous resources like GPUs and NPUs. This integration provides seamless access to vNPU capabilities through the procedure below, while maintaining full compatibility with the latest Volcano features."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Use case"}),":"]}),"\n",(0,i.jsxs)(n.p,{children:["vNPU cluster for Ascend 310 series",(0,i.jsx)(n.br,{}),"\n","with support for more chip types to come"]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"2-hami-mode",children:"2. HAMi mode"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Description"}),":"]}),"\n",(0,i.jsxs)(n.p,{children:["This mode is developed by a third-party community 'HAMi', which is the developer of ",(0,i.jsx)(n.a,{href:"/docs/v1.13.0/UserGuide/user_guide_how_to_use_volcano_vgpu",children:"volcano-vgpu"})," feature. It supports vNPU feature for both Ascend 310 and Ascend 910. It also supports managing heterogeneous Ascend cluster(Cluster with multiple Ascend types, i.e. 910A,910B2,910B3,310P)"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Use case"}),":"]}),"\n",(0,i.jsxs)(n.p,{children:["NPU and vNPU cluster for Ascend 910 series",(0,i.jsx)(n.br,{}),"\n","NPU and vNPU cluster for Ascend 310 series",(0,i.jsx)(n.br,{}),"\n","Heterogeneous Ascend cluster"]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h2,{id:"installation",children:"Installation"}),"\n",(0,i.jsx)(n.p,{children:"To enable vNPU scheduling, the following components must be set up based on the selected mode:"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Prerequisites"}),":"]}),"\n",(0,i.jsxs)(n.p,{children:["Kubernetes >= 1.16",(0,i.jsx)(n.br,{}),"\n","Volcano >= 1.14",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.a,{href:"https://gitcode.com/Ascend/mind-cluster/tree/master/component/ascend-docker-runtime",children:"ascend-docker-runtime"})," (for HAMi Mode)"]}),"\n",(0,i.jsx)(n.h3,{id:"install-volcano",children:"Install Volcano:"}),"\n",(0,i.jsx)(n.p,{children:"Follow instructions in Volcano Installer Guide"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Follow instructions in ",(0,i.jsx)(n.a,{href:"https://github.com/volcano-sh/volcano?tab=readme-ov-file#quick-start-guide",children:"Volcano Installer Guide"})]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"install-ascend-device-plugin-and-third-party-components",children:"Install ascend-device-plugin and third-party components"}),"\n",(0,i.jsx)(n.p,{children:"In this step, you need to select different ascend-device-plugin based on the vNPU mode you selected. MindCluster mode requires additional components from Ascend to be installed."}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h4,{id:"mindcluster-mode",children:"MindCluster Mode"}),"\n",(0,i.jsx)(n.h5,{id:"install-third-party-components",children:"Install Third-Party Components"}),"\n",(0,i.jsxs)(n.p,{children:["Follow the official ",(0,i.jsx)(n.a,{href:"https://www.hiascend.com/document/detail/zh/mindcluster/72rc1/clustersched/dlug/mxdlug_start_006.html#ZH-CN_TOPIC_0000002470358262__section1837511531098",children:"Ascend documentation"})," to install the following components:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"NodeD"}),"\n",(0,i.jsx)(n.li,{children:"Ascend Device Plugin"}),"\n",(0,i.jsx)(n.li,{children:"Ascend Docker Runtime"}),"\n",(0,i.jsx)(n.li,{children:"ClusterD"}),"\n",(0,i.jsx)(n.li,{children:"Ascend Operator"}),"\n"]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Note:"})," Skip the installation of ",(0,i.jsx)(n.code,{children:"ascend-volcano"})," mentioned in the document above, as we have already installed the native Volcano from the Volcano community in the ",(0,i.jsx)(n.strong,{children:"Prerequisites"})," part."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Configuration Adjustment for Ascend Device Plugin:"})}),"\n",(0,i.jsxs)(n.p,{children:["When installing ",(0,i.jsx)(n.code,{children:"ascend-device-plugin"}),", you must set the ",(0,i.jsx)(n.code,{children:"presetVirtualDevice"})," parameter to ",(0,i.jsx)(n.code,{children:'"false"'})," in the ",(0,i.jsx)(n.code,{children:"device-plugin-310P-volcano-v{version}.yaml"})," file to enable dynamic virtualization of 310P:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",children:'\n...\nargs:\n  [\n    "device-plugin",\n    "-useAscendDocker=true",\n    "-volcanoType=true",\n    "-presetVirtualDevice=false",\n    "-logFile=/var/log/mindx-dl/devicePlugin/devicePlugin.log",\n    "-logLevel=0",\n  ]\n...\n'})}),"\n",(0,i.jsxs)(n.p,{children:["For detailed information, please consult the official ",(0,i.jsx)(n.a,{href:"https://www.hiascend.com/document/detail/zh/mindcluster/72rc1/clustersched/dlug/cpaug_0020.html",children:"Ascend MindCluster documentation."})]}),"\n",(0,i.jsx)(n.h5,{id:"scheduler-config-update",children:"Scheduler Config Update"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",children:'kind: ConfigMap\napiVersion: v1\nmetadata:\n  name: volcano-scheduler-configmap\n  namespace: volcano-system\ndata:\n  volcano-scheduler.conf: |\n    actions: "enqueue, allocate, backfill"\n    tiers:\n    - plugins:\n      - name: predicates\n      - name: deviceshare\n        arguments:\n          deviceshare.AscendMindClusterVNPUEnable: true   # enable ascend vnpu\n    configurations:\n    ...\n    - name: init-params\n      arguments: {"grace-over-time":"900","presetVirtualDevice":"false"}  # to enable dynamic virtualization, presetVirtualDevice need to be set false\n'})}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h4,{id:"hami-mode",children:"HAMi mode"}
1),"\n",(0,i.jsxs)(n.h5,{id:"label-the-node-with-ascendon",children:["Label the Node with ",(0,i.jsx)(n.code,{children:"ascend=on"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"kubectl label node {ascend-node} ascend=on\n"})}),"\n",(0,i.jsxs)(n.h5,{id:"deploy-hami-scheduler-device-configmap",children:["Deploy ",(0,i.jsx)(n.code,{children:"hami-scheduler-device"})," ConfigMap"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"kubectl apply -f https://raw.githubusercontent.com/Project-HAMi/ascend-device-plugin/refs/heads/main/ascend-device-configmap.yaml\n"})}),"\n",(0,i.jsx)(n.h5,{id:"deploy-ascend-device-plugin",children:"Deploy ascend-device-plugin"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"kubectl apply -f https://raw.githubusercontent.com/Project-HAMi/ascend-device-plugin/refs/heads/main/ascend-device-plugin.yaml\n"})}),"\n",(0,i.jsxs)(n.p,{children:["For more information, refer to the ",(0,i.jsx)(n.a,{href:"https://github.com/Project-HAMi/ascend-device-plugin",children:"ascend-device-plugin documentation"}),"."]}),"\n",(0,i.jsx)(n.h5,{id:"scheduler-config-update-1",children:"Scheduler Config Update"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",children:'kind: ConfigMap\napiVersion: v1\nmetadata:\n  name: volcano-scheduler-configmap\n  namespace: volcano-system\ndata:\n  volcano-scheduler.conf: |\n    actions: "enqueue, allocate, backfill"\n    tiers:\n    - plugins:\n      - name: predicates\n      - name: deviceshare\n        arguments:\n          deviceshare.AscendHAMiVNPUEnable: true   # enable ascend vnpu\n          deviceshare.SchedulePolicy: binpack  # scheduling policy. binpack / spread\n          deviceshare.KnownGeometriesCMNamespace: kube-system\n          deviceshare.KnownGeometriesCMName: hami-scheduler-device\n'})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Note:"})," You may notice that, 'volcano-vgpu' has its own GeometriesCMName and GeometriesCMNamespace, which means if you want to use both vNPU and vGPU in a same volcano cluster, you need to merge the configMap from both 
1sides and set it here."]}),"\n",(0,i.jsx)(n.h2,{id:"usage",children:"Usage"}),"\n",(0,i.jsx)(n.p,{children:"Usage is different depending on the mode you selected"}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"mindcluster-mode-1",children:"MindCluster mode"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",children:'apiVersion: batch.volcano.sh/v1alpha1\nkind: Job\nmetadata:\n  name: mindx-dls\n  namespace: vnpu\n  labels:\n    ring-controller.atlas: ascend-310P\nspec:\n  minAvailable: 1\n  schedulerName: volcano\n  policies:\n    - event: PodEvicted\n      action: RestartJob\n  plugins:\n    ssh: []\n    env: []\n    svc: []\n  maxRetry: 3\n  queue: default\n  tasks:\n    - name: "default-test"\n      replicas: 1\n      template:\n        metadata:\n          labels:\n            app: infers\n            ring-controller.atlas: ascend-310P\n            vnpu-dvpp: "null"\n            vnpu-level: low\n        spec:\n          schedulerName: volcano\n          containers:\n            - name: resnet50infer\n              image: swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:2.1.RC1-300I-Duo-py311-openeuler24.03-lts\n              imagePullPolicy: IfNotPresent\n              securityContext:\n                privileged: false\n              command: ["/bin/bash", "-c", "tail -f /dev/null"]\n              resources:\n                requests:\n                  huawei.com/npu-core: 8\n                limits:\n                  huawei.com/npu-core: 8\n          nodeSelector:\n            host-arch: huawei-arm\n'})}),"\n",(0,i.jsxs)(n.p,{children:["The supported Ascend chips and their ",(0,i.jsx)(n.code,{children:"ResourceNames"})," are shown in the following table:"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"ChipName"}),(0,i.jsx)(n.th,{children:"JobLabel and TaskLabel"}),(0,i.jsx)(n.th,{children:"ResourceName"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"310P3"}),(0,i.jsx)(n.td,{children:"ring-controller.atlas: ascend-310P"}),(0,i.jsx)(n.td,{children:"huawei.com/npu-core"})]})})]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Description of Labels in the Virtualization Task YAML"})}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:(0,i.jsx)(n.strong,{children:"Key"})}),(0,i.jsx)(n.th,{children:(0,i.jsx)(n.strong,{children:"Value"})}),(0,i.jsx)(n.th,{children:(0,i.jsx)(n.strong,{children:"Description"})})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"vnpu-level"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"low"})}),(0,i.jsx)(n.td,{children:'Low configuration (default). Selects the lowest-configuration "virtualized instance template."'})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"high"})}),(0,i.jsx)(n.td,{children:"Performance-first. When cluster resources are sufficient, the scheduler will choose the highest-configured virtualized instance template possible. When most physical NPUs in the cluster are already in use and only a few AI Cores remain on each device, the scheduler will allocate templates that match the remaining AI Core count rather than forcing high-profile templates. For details, refer to the table below."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"vnpu-dvpp"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"yes"})}),(0,i.jsx)(n.td,{children:"The Pod uses DVPP."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"no"})}),(0,i.jsx)(n.td,{children:"The Pod does not use DVPP."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"null"})}),(0,i.jsx)(n.td,{children:"Default value. DVPP usage is not considered."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"ring-controller.atlas"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"ascend-310P"})}),(0,i.jsx)(n.td,{children:"Indicates that the task uses products from the Atlas inference series."})]})]})]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Effect of DVPP and Level Configurations"})}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:(0,i.jsx)(n.strong,{children:"Product Model"})}),(0,i.jsx)(n.th,{children:(0,i.jsx)(n.strong,{children:"Requested AI Core Count"})}),(0,i.jsx)(n.th,{children:(0,i.jsx)(n.strong,{children:"vnpu-dvpp"})}),(0,i.jsx)(n.th,{children:(0,i.jsx)(n.strong,{children:"vnpu-level"})}),(0,i.jsx)(n.th,{children:(0,i.jsx)(n.strong,{children:"Downgrade"})}),(0,i.jsx)(n.th,{children:(0,i.jsx)(n.strong,{children:"Selected Template"})})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"Atlas Inference Series (8 AI Cores)"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"1"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"null"})}),(0,i.jsx)(n.td,{children:"Any value"}),(0,i.jsx)(n.td,{children:"\u2013"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"vir01"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"2"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"null"})}),(0,i.jsxs)(n.td,{children:[(0,i.jsx)(n.code,{children:"low"})," / other values"]}),(0,i.jsx)(n.td,{children:"\u2013"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"vir02_1c"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"2"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"null"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"high"})}),(0,i.jsx)(n.td,{children:"No"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"vir02"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"2"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"null"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"high"})}),(0,i.jsx)(n.td,{children:"Yes"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"vir02_1c"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"4"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"yes"})}),(0,i.jsxs)(n.td,{children:[(0,i.jsx)(n.code,{children:"low"})," / other values"]}),(0,i.jsx)(n.td,{children:"\u2013"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"vir04_4c_dvpp"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"4"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"no"})}),(0,i.jsxs)(n.td,{children:[(0,i.jsx)(n.code,{children:"low"})," / other values"]}),(0,i.jsx)(n.td,{children:"\u2013"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"vir04_3c_ndvpp"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"4"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"null"})}),(0,i.jsxs)(n.td,{children:[(0,i.jsx)(n.code,{children:"low"})," / other values"]}),(0,i.jsx)(n.td,{children:"\u2013"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"vir04_3c"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"4"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"yes"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"high"})}),(0,i.jsx)(n.td,{children:"\u2013"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"vir04_4c_dvpp"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"4"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"no"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"high"})}),(0,i.jsx)(n.td,{children:"\u2013"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"vir04_3c_ndvpp"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"4"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"null"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"high"})}),(0,i.jsx)(n.td,{children:"No"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"vir04"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"4"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"null"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"high"})}),(0,i.jsx)(n.td,{children:"Yes"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"vir04_3c"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"8 or multiples of 8"})}),(0,i.jsx)(n.td,{children:"Any value"}),(0,i.jsx)(n.td,{children:"Any value"}),(0,i.jsx)(n.td,{children:"\u2013"}),(0,i.jsx)(n.td,{children:"\u2013"})]})]})]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Notice"})}),"\n",(0,i.jsxs)(n.p,{children:["For ",(0,i.jsx)(n.strong,{children:"chip virtualization (non-full card usage)"}),", the value of ",(0,i.jsx)(n.code,{children:"vnpu-dvpp"})," must strictly match the corresponding value listed in the above table.\nAny other values will cause the task to fail to be dispatched."]}),"\n",(0,i.jsxs)(n.p,{children:["For detailed information, please consult the official ",(0,i.jsx)(n.a,{href:"https://www.hiascend.com/document/detail/zh/mindcluster/72rc1/clustersched/dlug/cpaug_0020.html",children:"Ascend MindCluster documentation."})]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"hami-mode-1",children:"HAMi mode"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",children:'apiVersion: v1\nkind: Pod\nmetadata:\n  name: ascend-p
1od\nspec:\n  schedulerName: volcano\n  containers:\n    - name: ubuntu-container\n      image: swr.cn-south-1.myhuaweicloud.com/ascendhub/ascend-pytorch:24.0.RC1-A2-1.11.0-ubuntu20.04\n      command: ["sleep"]\n      args: ["100000"]\n      resources:\n        limits:\n          huawei.com/Ascend310P: "1"\n          huawei.com/Ascend310P-memory: "4096"\n'})}),"\n",(0,i.jsxs)(n.p,{children:["The supported Ascend chips and their ",(0,i.jsx)(n.code,{children:"ResourceNames"})," are shown in the following table:"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"ChipName"}),(0,i.jsx)(n.th,{children:"ResourceName"}),(0,i.jsx)(n.th,{children:"ResourceMemoryName"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"910A"}),(0,i.jsx)(n.td,{children:"huawei.com/Ascend910A"}),(0,i.jsx)(n.td,{children:"huawei.com/Ascend910A-memory"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"910B2"}),(0,i.jsx)(n.td,{children:"huawei.com/Ascend910B2"}),(0,i.jsx)(n.td,{children:"huawei.com/Ascend910B2-memory"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"910B3"}),(0,i.jsx)(n.td,{children:"huawei.com/Ascend910B3"}),(0,i.jsx)(n.td,{children:"huawei.com/Ascend910B3-memory"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"910B4"}),(0,i.jsx)(n.td,{children:"huawei.com/Ascend910B4"}),(0,i.jsx)(n.td,{children:"huawei.com/Ascend910B4-memory"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"910B4-1"}),(0,i.jsx)(n.td,{children:"huawei.com/Ascend910B4-1"}),(0,i.jsx)(n.td,{children:"huawei.com/Ascend910B4-1-memory"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"310P3"}),(0,i.jsx)(n.td,{children:"huawei.com/Ascend310P"}),(0,i.jsx)(n.td,{children:"huawei.com/Ascend310P-memory"})]})]})]}),"\n",(0,i.jsx)(n.h4,{id:"hami-vnpu-scene-memory-allocation-restrictions",children:"Hami vNPU scene memory allocation restrictions"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"When a Pod requests a single vNPU device, the memory can be configured to any value, and the memory request of the job will automatically align with the closest sharding strategy"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Example: Single card memory is 65536, virtualization templates are 1/4 (16384), 1/2 (32768)","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Pod requests 1 vNPU device and requests 1024 memory, so the actual allocated memory is 16384"}),"\n",(0,i.jsx)(n.li,{children:"Pod requests 1 vNPU device with a requested memory of 20480, resulting in an actual allocated memory of 32768"}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"When a Pod requests multiple vNPU devices, the memory resource request can be left unspecified or filled with the maximum value, The memory allocated to Pod is the actual memory of the entire card"}),"\n"]}),"\n"]})]})}function a(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},28453(e,n,s){s.d(n,{R:()=>r,x:()=>c});var d=s(96540);const i={},l=d.createContext(i);function r(e){const n=d.useContext(l);return d.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),d.createElement(l.Provider,{value:n},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.