应用型专用集成电路ASIC(Application-Specific Integrated Circuit)芯片的计算能力和计算效率是直接根据特定算法的需要进行定制的,所以其具备体积小、功耗低、高可靠性、保密性强、计算性能高、计算效率高等优势。本文介绍如何通过容器服务管理控制台创建托管ASIC集群,及ASIC芯片的使用示例。

背景信息

创建集群过程中,容器服务会进行如下操作:

  • 创建ECS,配置管理节点到其他节点的SSH的公钥登录,通过CloudInit安装配置Kubernetes集群。
  • 创建安全组,该安全组允许VPC入方向全部ICMP端口的访问。
  • 如果您不使用已有的VPC网络,会为您创建一个新的VPC及vSwitch,同时为该vSwitch创建SNAT。
  • 创建VPC路由规则。
  • 创建NAT网关及EIP。
  • 创建RAM用户和AccessKey,该RAM用户拥有ECS的查询、实例创建和删除的权限、添加和删除云盘的权限、SLB的全部权限、云监控的全部权限、VPC的全部权限、日志服务的全部权限、NAS的全部权限。Kubernetes集群会根据您部署的配置相应的动态创建SLB、云盘、VPC路由规则。
  • 创建内网SLB,暴露6443端口。
  • 创建公网SLB,暴露6443、8443和22端口(如果您在创建集群的时候选择开放公网SSH登录,则会暴露22端口;如果您选择不开放公网SSH访问,则不会暴露22端口)。

使用限制

  • 用户账户需有100元的余额并通过实名认证,否则无法创建按量付费的ECS实例和负载均衡。
  • Kubernetes集群版本不低于1.20.11。
  • ACK集群仅支持专有网络VPC。
  • 每个账号默认可以创建的云资源有一定的配额,如果超过配额创建集群会失败。请在创建集群前确认您的配额。
    • 关于ACK集群配额限制的详情,请参见配额限制
      重要 每个账户初始默认状况下VPC路由条目不超过200条,意味着您的Kubernetes集群的网络模式是Flannel时,集群的节点数最大不能超过200个(网络模式是Terway则不受该影响)。如集群需要更多节点数,您需要先对目标VPC申请提高配额。
    • 每个账号默认最多可以创建100个安全组。
    • 每个账号默认最多可以创建60个按量付费的负载均衡实例。
    • 每个账号默认最多可以创建20个EIP。
  • ECS实例使用限制:

    支持创建按量付费和包年包月的ECS实例。

    说明 实例创建后,您可以通过ECS管理控制台将按量付费转预付费,请参见按量付费转包年包月

操作步骤

  1. 登录容器服务管理控制台
  2. 在控制台左侧导航栏,单击集群
  3. 集群列表页面,单击页面右上角的集群模板
  4. 选择集群模板页面的托管集群区域,选择异构计算托管集群,并单击创建
  5. ACK托管版页面,完成集群配置。
    1. 完成集群基础选项配置。
      配置项描述
      集群名称填写集群的名称。
      说明 集群名称应包含1~63个字符,可包含数字、汉字、英文字符或连字符(-)。
      集群规格选择所需版本,默认选中Pro版。
      地域选择集群所在的地域。
      付费类型
      容器服务Kubernetes版支持按量付费包年包月两种节点付费类型。选择包年包月时,需设置以下参数。
      说明 设置付费类型包年包月时,仅ECS云服务器和SLB负载均衡按照包年包月的方式计费,其他云资源仍然按照按量付费的方式付费。关于云资源的详细介绍,请参见云产品资源计费
      • 购买时长:目前支持选择1、2、3、6个月和1~3年。
      • 自动续费:设置是否自动续费。
      资源组将鼠标悬浮于页面上方的账号全部资源,选择集群所在的资源组。这里显示选择的资源组。资源组
      Kubernetes版本选择Kubernetes版本,支持1.18.8-aliyun.1和1.16.9-aliyun.1两个版本。
      容器运行时
      根据Kubernetes版本选择容器运行时
      • 1.24版本以下支持ContainerdDocker安全沙箱
      • 1.24版本及以上请使用Containerd作为容器运行时
      更多信息,请参见如何选择Docker运行时、Containerd运行时、或者安全沙箱运行时?
      专有网络设置集群的网络,您可以选择普通VPC和共享VPC。
      • 共享VPC:VPC的所有者账号(资源所有者)可以将其账号下的VPC内的交换机资源共享给其组织内的其他账号使用。
      • 普通VPC:不具备共享功能的VPC。
      说明 Kubernetes集群仅支持专有网络。您可以在已有VPC列表中选择所需的VPC。如果没有您需要的专有网络,可以通过单击创建专有网络进行创建,请参见创建和管理专有网络
      虚拟交换机设置虚拟交换机。

      您可以在已有虚拟交换机列表中,根据可用区选择1~3个交换机 。如果没有您需要的交换机,可以通过单击创建虚拟交换机进行创建,请参见创建和管理交换机

      网络插件设置启用的网络插件和插件配置,支持Flannel和Terway网络插件,具体可参见使用Terway网络插件
      • Flannel:简单稳定的社区的Flannel CNI插件。但功能偏简单,支持的特性少,例如:不支持基于Kubernetes标准的Network Policy。
      • Terway:阿里云容器服务自研的网络插件,将阿里云的弹性网卡分配给容器,支持Kubernetes的Network Policy来定义容器间的访问策略,支持对单个容器做带宽的限流。
        说明
        • 在这两种模式下,节点上可以运行的Pod数均受节点的弹性网卡和辅助IP的配额限制。
        • 当专有网络选择共享VPC时,网络插件仅支持Terway。
      节点IP数量
      如果您选择的网络模式为Flannel,您需设置节点IP数量
      说明
      • 节点IP数量是指可分配给一个节点的IP数量,建议保持默认值。
      • 根据您所选择的专有网络和节点IP数量,ACK将为您推荐可用的Pod网络CIDR和Service CIDR,并给出相应配置下集群内可允许部署的主机数量以及每台主机可容纳的Pod数量。请您根据集群规模的实际需求,在推荐配置的基础上进行修改。
      Pod网络CIDR网络插件选择Flannel时,需要配置Pod网络CIDR

      Pod网络CIDR指定Flannel网络插件需要配置Pod网络CIDR,网段不能和VPC及VPC已有Kubernetes集群使用的网段重复,创建成功后不能修改。而且Service地址段不能和Pod地址段重复,有关Kubernetes网络地址段规划的信息,请参见Kubernetes集群网络规划

      Terway模式
      设置网络插件Terway时,需要配置Terway模式
      • 设置是否选中Pod独占弹性网卡以获得最佳性能。如需使用Pod独占弹性网卡以获得最佳性能功能,请前往配额平台申请使用。
        • 如果选中,Pod将独占一个专有的弹性网卡。
          说明 启用Pod独占弹性网卡以获得最佳性能功能后,一个节点上能运行的Pod数量将减少,请谨慎选择。
        • 如果不选中,使用弹性网卡的辅助IP分配给Pod,一个Pod占用一个弹性网卡辅助IP地址。
      • 设置是否选中IPvlan
        • 只在弹性网卡共享模式支持选中。
        • 如果选中,采用IPvlan eBPF作为网卡共享模式虚拟化技术,并且只能使用Alibaba Cloud Linux系统,性能优于默认模式。
        • 如果不选中,则使用默认模式,采用策略路由作为网卡共享模式虚拟化技术,同时兼容Centos 7和Alibaba Cloud Linux的系统。

        关于Terway模式的IPvlan模式的详细信息,请参见Terway IPvlan模式

      • 设置是否选中NetworkPolicy支持
        • 只在弹性网卡共享模式下支持选中,默认不选中。
        • 如果选中,集群支持使用Kubernetes的NetworkPolicy策略对Pod进行网络控制。
        • 如果不选中,集群将不会支持使用Kubernetes的NetworkPolicy策略对Pod进行网络控制,这样将不存在网络策略对Kubernetes的API Server产生过大的负载。
      Service CIDR设置Service CIDR。您需要指定Service CIDR,网段不能与VPC及VPC内已有Kubernetes集群使用的网段重复,创建成功后不能修改。而且Service地址段也不能和Pod地址段重复,有关Kubernetes网络地址段规划的信息,请参见Kubernetes集群网络规划
      配置SNAT设置是否为专有网络配置SNAT网关。
      • 如果您使用的VPC中当前已有NAT网关,容器服务会使用已有的NAT网关。
      • 如果VPC中没有NAT网关,系统会默认自动为您创建一个NAT网关。如果您不希望系统自动创建NAT网关,可以取消选中页面下方的为专有网络配置SNAT。此时您需要自行配置NAT网关实现VPC安全访问公网环境,或者手动配置SNAT,否则VPC内实例将不能正常访问公网,会导致集群创建失败。
      API Server访问
      ACK默认为API Server创建一个内网SLB实例,您可修改SLB实例规格。更多信息,请参见实例规格
      重要 删除默认创建的SLB实例将会导致无法访问API Server。
      您可设置是否开放使用EIP暴露API Server。API Server提供了各类资源对象(Pod,Service等)的增删改查及Watch等HTTP Rest接口。
      • 如果选择开放,ACK会创建一个EIP,并挂载到SLB上。此时,Master节点的6443端口(对应API Server)暴露出来,您可以在外网通过kubeconfig连接并操作集群。
      • 如果选择不开放,则不会创建EIP,您只能在VPC内部用kubeconfig连接并操作集群。
      RDS白名单设置RDS白名单。将节点IP添加到RDS实例的白名单中。
      安全组

      支持选择自动创建普通安全组自动创建企业级安全组选择已有安全组。有关安全组的详细内容,请参见安全组概述

      集群删除保护

      设置是否启用集群删除保护。为防止通过控制台或API误释放集群。

    2. 完成集群高级选项配置。
      配置项描述
      时区

      选择集群所要使用的时区。默认时区为浏览器所配置的时区。

      kube-proxy代理模式
      支持iptables和IPVS两种模式。
      • iptables:成熟稳定的kube-proxy代理模式,Kubernetes Service的服务发现和负载均衡使用iptables规则配置,但性能一般,受规模影响较大,适用于集群存在少量的Service。
      • IPVS:高性能的kube-proxy代理模式,Kubernetes Service的服务发现和负载均衡使用Linux ipvs模块进行配置,适用于集群存在大量的service,对负载均衡有高性能要求的场景。
      标签
      为集群绑定标签。输入键和对应的值,单击添加
      说明
      • 是必需的,而是可选的,可以不填写。
      • 不能是aliyun、http://、https://开头的字符串,不区分大小写,最多64个字符。
      • 不能是http:// 或https://,可以为空,不区分大小写,最多128个字符。
      • 同一个资源,标签键不能重复,相同标签键(Key)的标签会被覆盖。
      • 如果一个资源已经绑定了20个标签,已有标签和新建标签会失效,您需要解绑部分标签后才能再绑定新的标签。
      集群本地域名
      设置是否配置集群本地域名。
      说明 默认域名为cluster.local,可自定义域名。域名由两段组成,每段不超过63个字符,且只能使用大小写字母和数字,不能为空。
      自定义证书SAN

      在集群API Server服务端证书的SAN(Subject Alternative Name)字段中添加自定义的IP或域名,以实现对客户端的访问控制。

      具体操作,请参见自定义集群API Server证书SAN

      服务账户令牌卷投影

      开启服务账户令牌卷投影功能以降低在Pod中使用Service Account遇到的安全性问题,可使得kubelet支持基于Pod粒度的Token签发,并且支持Token audience和过期时间的配置。详情请参见部署服务账户令牌卷投影

      Secret落盘加密在异构计算集群中,选中选择KMS密钥可以使用在阿里云密钥管理服务KMS(Key Management Service)中创建的密钥加密Kubernetes Secret密钥。设置Secret落盘加密的详情,请参见使用阿里云KMS进行Secret的落盘加密
  6. 单击下一步:节点池配置,完成Worker节点配置。
    1. 选择Worker实例。
      • 如果您选择新增实例,需要进行以下配置。
        配置项描述
        节点池名称
        填写节点池名称。
        说明 节点池名称为1~63个字符,可包含数字、汉字、英文字符或短划线(-)。
        实例规格选择异构计算GPU/FPGA/NPU异构服务型,本示例选择的实例规格为ecs.video-trans.26xhevc。关于实例规格的更多信息,请参见实例规格族
        说明 当在实例规格列表里没有可用实例时,可在上一步集群配置页面选择其他虚拟交换机。
        ASIC加速型
        已选规格

        呈现选中的规格。

        数量

        新增ECS实例的数量。

        系统盘
        支持ESSD云盘SSD云盘高效云盘
        说明
        • 支持选中开启云盘备份以备份云盘数据。
        • ESSD云盘支持自定义性能级别

          ESSD云盘容量越大,可供选择的性能级别越高(460 GiB容量以上可选PL2,1260 GiB以上可选PL3)。更多信息,请参见容量范围与性能级别的关系

        挂载数据盘

        支持ESSD云盘SSD云盘高效云盘。挂载数据盘时,支持云盘加密云盘备份

        操作系统
        ACK支持的节点操作系统包括:
        • Alibaba Cloud Linux 2.x(ACK默认的操作系统)
          选中Alibaba Cloud Linux 2.x操作系统时,您可以进行以下安全加固的配置:
          • 不开启:不对Alibaba Cloud Linux 2.x操作系统进行安全加固。
          • 等保加固:对Alibaba Cloud Linux 2操作系统进行等保加固。关于等保加固的详细信息,请参见ACK等保加固使用说明
            重要

            等保加固在保障原生镜像兼容性和性能的基础上进行了等保合规适配,使其满足国家信息安全部发布的《GB/T22239-2019信息安全技术网络安全等级保护基本要求》。

            等保加固会禁止Root用户通过SSH远程登录。您可通过ECS控制台使用VNC方式登录系统创建可使用SSH的普通用户。具体操作,请参见通过密码认证登录Linux实例

          • CIS加固:对Alibaba Cloud Linux 2.x操作系统进行CIS加固。关于CIS加固的使用说明,请参见ACK CIS加固使用说明
        • Alibaba Cloud Linux 3.x

          Alibaba Cloud Linux 3操作系统镜像适用于大多数实例规格族,但存在一部分镜像仅适用于部分实例规格族。更多信息,请参见仅适用部分实例规格族的镜像发布记录

        • CentOS 7.x
          说明 暂不支持CentOS 8.x及以上的操作系统。
        登录方式
        • 设置密钥。

          您需要在创建集群的时候选择密钥对登录方式,单击新建密钥对,跳转到ECS云服务器控制台,创建密钥对,参见创建SSH密钥对。密钥对创建完毕后,设置该密钥对作为登录集群的凭据。

        • 设置密码。
          • 登录密码:设置节点的登录密码。
          • 确认密码:确认设置的节点登录密码。
          说明 密码为8~30个字符,且必须同时包含三项(大写字母、小写字母、数字和特殊符号),其中特殊字符不包括下划线(_)。
        密钥对
      • 如果您选择添加已有实例,则需要预先在此地域下创建ECS云服务器,然后配置操作系统登录方式密钥对,配置描述参见上文。
    2. 设置高级选项。
      配置项描述
      实例保护
      设置是否启用实例保护。
      说明 为防止通过控制台或API误释放集群节点,默认启用实例保护。
      实例自定义数据

      请参见ECS实例自定义数据概述

      自定义镜像
      • 您可以选择一个自定义ECS镜像。选择自定义镜像后,集群所有节点将基于此镜像进行部署。关于创建自定义镜像操作,请参见使用自定义镜像创建Kubernetes集群
      • 您可以选择一个共享ECS镜像。选择共享的镜像后,集群所有节点将基于此镜像进行部署。关于共享镜像的更多信息,请参见操作步骤
      说明
      • 目前自定义镜像的操作系统仅支持CentOS 7.x和Alibaba Cloud Linux。
      • 当前只有白名单用户可使用该功能。请前往配额平台申请。
      自定义节点名称

      是否开启自定义节点名称。自定义节点名称后,将同时更改节点名称、ECS实例名称、ECS实例Hostname。

      节点名称由前缀,节点IP地址及后缀三部分组成:
      • 总长度为2-64个字符。
      • 前缀和后缀允许使用大小写字母、数字、连字符(-)和点号(.)。必须以大小写字母开头,不能以连字符(-)或点号(.)开头或结尾。不能连续使用连字符(-)或点号(.)。
      • 前缀必选(ECS限制),后缀可选。
      • 对于开启自定义节点名称的Windows实例,其Hostname固定为IP地址,用"-"代替IP地址中的".",且不包含前缀和后缀。
      例如:节点IP地址为192.1xx.x.xx,指定前缀为aliyun.com,后缀为test。
      • 如果节点为Linux节点,则节点名称、ECS实例、ECS实例Hostname均为aliyun.com192.1xx.x.xxtest。
      • 如果节点为Windows节点,则ECS实例Hostname为192-1xx-x-xx,节点名称、ECS实例名称均为aliyun.com192.1xx.x.xxtest。
      CPU Policy
      设置CPU Policy。
      • none:默认策略,表示启用现有的默认CPU亲和方案。
      • static:允许为节点上具有某些资源特征的Pod赋予增强的CPU亲和性和独占性。
      污点(Taints)

      为集群内所有Worker节点添加污点。

  7. 单击下一步:组件配置,完成组件配置。
    配置项描述
    Ingress设置是否安装Ingress组件。默认选中Nginx Ingress。更多信息,请参见Nginx Ingress高级用法
    说明 如果您选中创建Ingress Dashboard,则需要同步安装日志服务组件。
    服务发现

    设置是否安装NodeLocal DNSCache组件,默认安装NodeLocal DNSCache。

    NodeLocal DNSCache用于运行DNS缓存代理以提升域名解析性能和稳定性。关于NodeLocal DNSCache的更多信息,请参见使用NodeLocal DNSCache

    存储插件设置存储插件,支持Flexvolume和CSI。Kubernetes集群通过Pod可自动绑定阿里云云盘、NAS、OSS存储服务。请参见存储管理-Flexvolume存储管理-CSI
    监控插件

    设置是否启用云监控插件。默认选中在ECS节点上安装云监控插件使用Prometheus监控服务,前者用于在云监控控制台查看所创建ECS实例的监控信息。

    报警配置

    选中使用默认报警模板配置报警,开启默认报警规则。详细介绍,请参见容器服务报警管理

    日志服务

    设置是否启用日志服务,您可使用已有Project或新建一个Project。默认选中使用日志服务。创建应用时,您可通过简单配置,快速使用日志服务,详情参见通过日志服务采集Kubernetes容器日志

    默认选中使用日志服务,您还可以选择是否在日志服务控制台中创建Ingress Dashboard或者安装node-problem-detector并创建事件中心

    控制平面组件日志

    选中开启,将从ACK控制层收集托管集群控制平面组件日志到您账号中的SLS日志服务的Log Project中。更多信息,请参见收集ACK Pro版集群控制平面组件日志

    工作流引擎
    设置是否使用AGS。
    说明 当前只有白名单用户可以使用该功能。
    • 如果选中AGS,则创建集群时系统自动安装AGS工作流插件。
    • 如果不选中,则需要手动安装AGS工作流插件,请参见AGS命令行帮助
  8. 单击下一步:确认配置
  9. 选中服务协议并单击创建集群
    说明 一个包含多节点的Kubernetes集群的创建时间一般约为十分钟。
  10. 集群创建成功后,查看集群节点挂载的ASIC设备。
    1. 集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情
    2. 在集群管理页左侧导航栏,选择节点管理 > 节点
    3. 选择创建集群时配置的节点,单击操作列的更多 > 详情,查看该节点挂载的ASIC设备。

使用ASIC设备

NETINT公司在Docker Hub提供了Base镜像,您可以使用这些镜像构建您的镜像。关于NETINT镜像地址,请参见netint/ni_xcoder_release

以下介绍如何提交一个申请NETINT ASIC设备的任务。

  1. 使用Kubectl工具连接ACK托管集群。具体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群
  2. 执行以下命令查看集群某个节点总的NETINT ASIC设备数。
    NETINT ASIC设备的扩展资源名称为netint.ca/ASIC
    kubectl get nodes <NODE_NAME> -o yaml
    预期输出:
    ......   #省略其他资源信息。
    status:
      allocatable:
        cpu: 101900m
        ephemeral-storage: "114022843818"
        hugepages-1Gi: "0"
        hugepages-2Mi: "0"
        memory: 185176524Ki
       #该节点总共有12张NETINT ASIC卡。
        netint.ca/ASIC: "12" 
        pods: "64"
      capacity:
        cpu: "104"
        ephemeral-storage: 123722704Ki
        hugepages-1Gi: "0"
        hugepages-2Mi: "0"
        memory: 196499916Ki
        netint.ca/ASIC: "12"
        pods: "64"
    从预期输出可得,该节点中包含12张NETINT ASIC卡。
  3. 提交一个申请NETINT ASIC设备的任务。
    1. 使用以下YAML示例创建test-asic.yaml文件。
      apiVersion: batch/v1
      kind: Job
      metadata:
        name: test-asic
      spec:
        parallelism: 1
        template:
          metadata:
            labels:
              app: test-asic
          spec:
            containers:
            - name: test-asic
              image: registry.cn-beijing.aliyuncs.com/ai-samples/asic_258:asic
              command:
              - sleep
              - "500"
              resources:
                limits:
                  netint.ca/ASIC: 2 #申请两张NETINT ASIC设备。
            restartPolicy: Never
    2. 执行以下命令提交任务。
      kubectl create -f test-asic.yaml
  4. 执行以下命令查看Pod的运行状态是否处于Running。
    kubectl get po -l app=test-asic
    预期输出:
    NAME              READY   STATUS    RESTARTS   AGE
    test-asic-zt6ck   1/1     Running   0          19s
    由预期输出可得,Pod的STATUSRunning
  5. 执行以下命令登录到Pod中。
    kubectl exec -ti test-asic-zt6ck  bash
  6. 在Pod中执行以下命令初始化NETINT ASIC设备。
    ni_rsrc_mon
    预期输出:
    NI resource not init'd, continue ..
    Reading device file: nvme11
    Reading device file: nvme9
    Compatible minimum FW ver: 258, FW API flavors: 1E, minimum API ver: 9
    1. /dev/nvme9 /dev/nvme9n1 num_hw: 2
    2. /dev/nvme11 /dev/nvme11n1 num_hw: 2
    Creating shm_name: NI_SHM_CODERS  lck_name: /dev/shm/NI_LCK_CODERS
    0. nvme9
    decoder h/w id 0 create
    Creating shm_name: NI_shm_d0 , lck_name /dev/shm/NI_lck_d0
    ni_rsrc_get_one_device_info written out.
    decoder h/w id 0 update
    encoder h/w id 1 create
    Creating shm_name: NI_shm_e0 , lck_name /dev/shm/NI_lck_e0
    ni_rsrc_get_one_device_info written out.
    encoder h/w id 1 update
    1. nvme11
    decoder h/w id 0 create
    Creating shm_name: NI_shm_d1 , lck_name /dev/shm/NI_lck_d1
    ni_rsrc_get_one_device_info written out.
    decoder h/w id 0 update
    encoder h/w id 1 create
    Creating shm_name: NI_shm_e1 , lck_name /dev/shm/NI_lck_e1
    ni_rsrc_get_one_device_info written out.
    encoder h/w id 1 update
    **************************************************
    2 devices retrieved from current pool at start up
    Wed Dec  1 06:46:07 2021 up 00:00:00 v258R1E09
    Num decodes: 2
    BEST INDEX LOAD MODEL_LOAD MEM  INST DEVICE         NAMESPACE
    L    0     0    0          0    0    /dev/nvme9     /dev/nvme9n1
         1     0    0          0    0    /dev/nvme11    /dev/nvme11n1
    Num encodes: 2
    BEST INDEX LOAD MODEL_LOAD MEM  INST DEVICE         NAMESPACE
    L    0     0    0          0    0    /dev/nvme9     /dev/nvme9n1
         1     0    0          0    0    /dev/nvme11    /dev/nvme11n1
    **************************************************
  7. 执行以下命令验证NETINT ASIC设备是否可用。
    bash run_ffmpeg.sh
    预期输出:
    Choose an option:
    1) check pci device           6) test 265 decoder
    2) check nvme list           7) test 264 encoder
    3) rsrc_init               8) test 265 encoder
    4) ni_rsrc_mon               9) test 264->265 transcoder
    5) test 264 decoder          10) Quit
    #? 6
    
    You chose 6  which is test 265 decoder
    Input #0, hevc, from '../libxcoder/test/akiyo_352x288p25.265':
      Duration: N/A, bitrate: N/A
        Stream #0:0: Video: hevc (Main), yuv420p(tv), 352x288, 25 fps, 25 tbr, 1200k tbn, 25 tbc
    Stream mapping:
      Stream #0:0 -> #0:0 (hevc (h265_ni_dec) -> rawvideo (native))
    Output #0, rawvideo, to 'output_6.yuv':
      Metadata:
        encoder         : Lavf58.29.100
        Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 352x288, q=2-31, 30412 kb/s, 25 fps, 25 tbn, 25 tbc
        Metadata:
          encoder         : Lavc58.54.100 rawvideo
    frame=  300 fps=0.0 q=-0.0 Lsize=   44550kB time=00:00:11.88 bitrate=30720.0kbits/s speed=44.4x
    video:44550kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%
    Decoder HW[0] INST[127]-average usage:27%
    Complete! output_6.yuv has been generated.
    PASS: output_6.yuv matches checksum.
    从预期输出可得,测试结果为PASS,表示NETINT ASIC设备可用。