CN111831539B - 一种测试方法及相关产品 - Google Patents

一种测试方法及相关产品 Download PDF

Info

Publication number
CN111831539B
CN111831539B CN201910315961.4A CN201910315961A CN111831539B CN 111831539 B CN111831539 B CN 111831539B CN 201910315961 A CN201910315961 A CN 201910315961A CN 111831539 B CN111831539 B CN 111831539B
Authority
CN
China
Prior art keywords
processor
target chip
chip
test
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910315961.4A
Other languages
English (en)
Other versions
CN111831539A (zh
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN201910315961.4A priority Critical patent/CN111831539B/zh
Publication of CN111831539A publication Critical patent/CN111831539A/zh
Application granted granted Critical
Publication of CN111831539B publication Critical patent/CN111831539B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请实施例公开了一种测试方法及相关产品,处理器通过不同的设备信息配置不同的测试环境,以实现对云端设备运行参数的配置。通过本申请,可以实现在同一个人工智能处理器上模拟多种目标芯片的测试环境。

Description

一种测试方法及相关产品
技术领域
本申请涉及计算机技术领域,尤其涉及一种测试方法及相关产品。
背景技术
传统技术中,当人工智能芯片流片成功后,算法应用开发者才能在对应版本的人工智能处理器(硬件实体)上进行开发和测试。
从上述描述可以知道,传统技术中,同一型号的人工智能处理器只能在特定的运行环境下实现特定处理任务的调试以及测试过程,该人工智能处理器的特定运行环境由其硬件架构信息确定。那么,基于同一个人工智能处理器如何实现多种类型的测试环境的模拟,是本领域技术人员的研究热点问题。
发明内容
本申请实施例提供一种测试方法,可以在一个服务器板卡上实现多种不同类型的测试环境的模拟,并基于该确定好的测试环境实现人工智能芯片的调试以及测试过程。
第一方面,本申请实施例提供了一种测试方法,该方法包括:
获取目标芯片的第一设备信息;
根据所述目标芯片的第一设备信息确定第一测试环境;
发送所述第一测试环境至云端设备,以配置所述云端设备中人工智能处理器的当前运行环境参数,使所述人工智能处理器的当前运行环境参数与所述目标芯片的第一设备信息一致。
实施本申请实施例,处理器通过不同的设备信息配置不同的测试环境,并将该测试环境发送给云端设备,以使云端设备根据获取到的测试环境设置云端设备中的人工智能处理器的当前运行环境参数,并基于该确定好的测试环境实现目标芯片的调试以及测试过程。
在其中一个可能的实现方式中,所述第一设备信息包括所述目标芯片的芯片运行环境参数;所述芯片运行环境参数包括所述目标芯片的运行主频率以及访存带宽。
在其中一个可能的实现方式中,所述的根据所述目标芯片的第一设备信息确定第一测试环境,发送所述第一测试环境至云端设备,还包括:
根据所述芯片运行环境参数,确定至少一个第一寄存器的值以及至少一个第二寄存器的值;
发送所述至少一个第一寄存器的值和所述至少一个第二寄存器的值至所述云端设备。
在其中一个可能的实现方式中,所述第一设备信息还包括所述目标芯片的硬件架构信息;所述的根据所述目标芯片的第一设备信息确定第一测试环境,发送所述第一测试环境至云端设备,还包括:
将所述目标芯片的硬件架构信息传送至所述云端设备的人工智能处理器。
在其中一个可能的实现方式中,所述方法还包括:
接收所述人工智能处理器在所述当前运行环境参数下处理预设任务时,获得的第一测试结果;其中,所述第一测试结果用于指示所述人工智能处理器处理所述预设任务的处理性能;
若所述第一测试结果不符合预设条件,则重新获取所述目标芯片的第一设备信息。
在其中一个可能的实现方式中,所述第一测试结果包括所述目标芯片处理所述预设任务的运行时间、所述目标芯片处理所述预设任务的功耗中的至少一种。
在其中一个可能的实现方式中,所述第一测试环境包括所述目标芯片的主频率、所述目标芯片的访存带宽和所述目标芯片的计算能力;
所述目标芯片的运行主频率小于或等于所述人工智能处理器的实际主频率;
所述目标芯片的访存带宽小于或等于所述人工智能处理器的实际访存带宽;
所述目标芯片的计算能力小于或等于所述人工智能处理器的实际计算能力。
第二方面,本申请实施例提供了一种测试方法,应用于测试系统,所述测试系统包括处理器和云端设备;所述方法包括:
所述处理器获取目标芯片的第一设备信息;
所述处理器根据所述目标芯片的第一设备信息确定第一测试环境;
所述处理器发送所述第一测试环境至所述云端设备,以确定所述云端设备中人工智能处理器的当前运行环境参数;
所述云端设备根据所述第一测试环境设置所述人工智能处理器的当前运行环境参数,使所述人工智能处理器的当前运行环境参数与所述目标芯片的第一设备信息一致。
实施本申请实施例,处理器通过不同的设备信息配置不同的测试环境,并将该测试环境发送给云端设备,以使云端设备根据获取到的测试环境设置云端设备中的人工智能处理器的当前运行环境参数,并基于该确定好的测试环境实现目标芯片的调试以及测试过程。
在其中一个可能的实现方式中,所述第一设备信息包括所述目标芯片的芯片运行环境参数;所述芯片运行环境参数包括所述目标芯片的运行主频率以及访存带宽。
在其中一个可能的实现方式中,所述处理器根据所述目标芯片的第一设备信息确定第一测试环境,还包括:
根据所述芯片运行环境参数,确定至少一个第一寄存器的值以及至少一个第二寄存器的值;
发送所述至少一个第一寄存器的值和所述至少一个第二寄存器的值至所述云端设备。
在其中一个可能的实现方式中,所述云端设备根据所述第一测试环境设置所述人工智能处理器的当前运行环境参数,还包括:
所述云端设备的MCU根据获取的至少一个第一寄存器的值和至少一个第二寄存器的值,设置所述人工智能处理器的当前运行环境。
在其中一个可能的实现方式中,所述方法还包括:
所述人工智能处理器在所述当前运行环境参数下处理预设任务;
所述处理器接收所述人工智能处理器在所述当前运行环境下处理所述预设任务时的第一测试结果;其中,所述第一测试结果用于指示所述人工智能处理器处理所述预设任务的处理性能;
若所述第一测试结果不符合预设条件,则所述处理器重新获取所述目标芯片的第一设备信息。
在其中一个可能的实现方式中,所述测试系统还包括用于监测所述人工智能处理器的当前运行环境的硬件监测工具;所述方法还包括:
所述硬件监测工具获取所述第一测试结果,并将所述第一测试结果传送至所述处理器。
第三方面,本申请实施例提供了一种测试装置,还装置用于执行上述第一方面的方法的单元。具体地,所述测试装置应用于处理器单元;其中,
所述处理器单元,用于获取目标芯片的第一设备信息;
所述处理器单元,还用于根据所述目标芯片的第一设备信息确定第一测试环境;
所述处理器单元,还用于发送所述第一测试环境至云端设备,以配置所述云端设备中人工智能处理器的当前运行环境参数,使所述人工智能处理器的当前运行环境参数与所述目标芯片的第一设备信息一致。
在其中一个可能的实现方式中,所述第一设备信息包括所述目标芯片的芯片运行环境参数;所述芯片运行环境参数包括所述目标芯片的运行主频率以及访存带宽。
在其中一个可能的实现方式中,所述处理器单元,还用于根据所述目标芯片的第一设备信息确定第一测试环境,发送所述第一测试环境至云端设备,还包括:
所述处理器单元,还用于根据所述芯片运行环境参数,确定至少一个第一寄存器的值以及至少一个第二寄存器的值;
所述处理器单元,还用于发送所述至少一个第一寄存器的值和所述至少一个第二寄存器的值至所述云端设备。
在其中一个可能的实现方式中,所述第一设备信息还包括所述目标芯片的硬件架构信息;所述处理器单元,还用于根据所述目标芯片的第一设备信息确定第一测试环境,发送至所述第一测试环境至云端设备,还包括:
所述处理器单元,还用于将所述目标芯片的硬件架构信息传送至所述云端设备的人工智能处理器。
在其中一个可能的实现方式中,所述处理器单元,还可以包括:
所述处理器单元,还用于接收所述人工智能处理器在所述当前运行环境参数下处理预设任务时,获得的第一测试结果;其中,所述第一测试结果用于指示所述人工智能处理器处理所述预设任务的处理性能;
若所述第一测试结果不符合预设条件,则所述处理器单元重新获取所述目标芯片的第一设备信息。
在其中一个可能的实现方式中,所述第一测试结果包括所述目标芯片处理所述预设任务的运行时间、所述目标芯片处理所述预设任务的功耗中的至少一种。
在其中一个可能的实现方式中,所述第一测试环境包括所述目标芯片的频率、所述目标芯片的访存带宽和所述目标芯片的计算能力;
所述目标芯片的运行主频率小于或等于所述人工智能处理器的实际主频率;
所述目标芯片的访存带宽小于或等于所述人工智能处理器的实际访存带宽。
第四方面,本申请实施例提供了一种测试设备,该测试设备包括用于执行上述第二方面的方法和单元。具体地,所述测试设备应用于测试系统,所述测试系统包括处理器单元和云端设备;其中,
所述处理器单元,用于获取目标芯片的第一设备信息;
所述处理器单元,还用于根据所述目标芯片的第一设备信息确定第一测试环境;
所述处理器单元,还用于发送所述第一测试环境至所述云端设备,以确定所述云端设备中人工智能处理器的当前运行环境参数;
所述云端设备,用于根据所述第一测试环境设置所述人工智能处理器的当前运行环境参数,使所述人工智能处理器的当前运行环境参数与所述目标芯片的第一设备信息一致。
在其中一个可能的实现方式中,所述第一设备信息包括所述目标芯片的芯片运行环境参数;所述芯片运行环境参数包括所述目标芯片的运行主频率以及访存带宽。
在其中一个可能的实现方式中,所述处理器单元,还用于根据所述目标芯片的第一设备信息确定第一测试环境,还包括:
所述处理器单元,还用于根据所述芯片运行环境参数,确定至少一个第一寄存器的值以及至少一个第二寄存器的值;
所述处理器单元,还用于发送所述至少一个第一寄存器的值和所述至少一个第二寄存器的值至所述云端设备。
在其中一个可能的实现方式中,所述云端设备,用于根据所述第一测试环境设置所述人工智能处理器的当前运行环境参数,还包括:
所述云端设备,用于所述云端设备的MCU根据获取的至少一个第一寄存器的值和至少一个第二寄存器的值,设置所述人工智能处理器的当前运行环境。
在其中一个可能的实现方式中,所述设备还包括:
所述云端设备,还用于所述云端设备中的所述人工智能处理器在所述当前运行环境参数下处理预设任务;
所述处理器单元,还用于接收所述人工智能处理器在所述当前运行环境下处理所述预设任务时,获得的第一测试结果;其中,所述第一测试结果用于指示所述人工智能处理器处理所述预设任务的处理性能;
所述处理器单元,还用于在所述第一测试结果不满足预设条件时,重新获取所述目标芯片的第一设备信息。
在其中一个可能的实现方式中,所述测试系统还包括用于监测所述人工智能处理器的当前运行环境的硬件监测工具;所述设备还包括:
所述硬件监测工具获取所述第一测试结果,并将所述第一测试结果传送至所述处理器。
第五方面,本申请实施例提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面或第二方面的方法。
第六方面,本申请实施例还提供了一种计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面或第二方面的方法。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1是本申请实施例提供的一种人工智能软件开发平台的系统架构图;
图2是本申请实施例提供的一种测试方法的应用场景示意图;
图3是本申请另一实施例提供的一种测试方法的应用场景示意图;
图4是本申请实施例提供的一种测试方法的流程示意图;
图5A是本申请实施例提供的一种硬件设备配置频率值、访存带宽值以及计算能力模式值的过程示意图;
图5B是本申请实施例提供的一种硬件设备配置功耗值的过程示意图;
图5C是本申请实施例提供的另一种测试方法的流程示意图;
图6是本申请实施例提供的一种云端设备的结构示意图;
图7是本申请实施例提供的另一种云端设备的结构示意图;
图8是本申请实施例提供的另一种云端设备的结构示意图;
图9是本申请实施例提供的一种计算机设备的结构示意图;
图10是本申请实施例提供的另一种计算机设备的结构示意图;
图11是本申请实施例提供的一种测试系统的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
为了便于更好的理解本技术方案,下面先解释本申请实施例所涉及的技术术语:
流片:在集成电路设计领域,流片是指试生产,也即在设计完满足预设功能的集成电路之后,先生产几片或几十片供测试用,如果满足测试需求,则按照当前满足测试需求的集成电路的结构进行大规模生产。
二进制指令:是底层的人工智能处理器可以识别的信息。
人工智能处理器:也称之为专用处理器,针对特定应用或者领域的处理器。例如:图形处理器(Graphics Processing Unit,缩写:GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的专用处理器。又例如:神经网络处理器(Neural Processing Unit,缩写:NPU),是一种在人工智能领域的应用中针对矩阵乘法运算的专用处理器,采用“数据驱动并行计算”的架构,特别擅长处理视频、图像类的海量多媒体数据。
可重构体系结构:如果某一人工智能处理器能够利用可重用的硬件资源,根据不同的应用需求,灵活的改变自身的体系结构,以便为每个特定的应用需求提供与之相匹配的体系结构,那么这一人工智能处理器就称为可重构的计算系统,其体系结构称为可重构的体系结构。
首先,介绍下本申请的主要发明构思。
现有技术中,算法应用开发者只有在对应版本硬件实体上完成人工智能算法模型与人工智能处理器之间的适配调试工作。可以理解的是,现有技术的实现方案并不能实现未流片的芯片与算法之间的调试过程,这样就需要专门的时间去完成算法模型与芯片之间的适配工作,因而产品问市的期限就要往后拖延,很容易因时间问题错过占领市场的机会。
基于此,本申请提出一种技术方案,不管人工智能处理器是否流片,根据端侧的人工智能处理器的设备信息,从云端设备中匹配出合适的人工智能处理器来模拟端侧的人工智能处理器,其中,该云端设备包含的人工智能处理器可以是人工智能处理器硬件实体。具体地,用户可以通过一人工智能软件开发平台输入端侧的人工智能处理器的设备信息,该软件开发平台可以将该设备信息转换为云端设备中人工智能处理器的测试环境,并将该测试环境发送至云端设备。之后,云端设备可以根据其接收到的测试环境,通过云端设备的硬件电路配置其中的人工智能处理器的运行环境参数,从而使得该云端设备中的人工智能处理器的当前运行环境参数与端侧的人工智能处理器的设备信息一致,进而可以通过在云端设备的人工智能处理器上模拟端侧的人工智能处理器的运行过程。应当清楚的是,本申请实施例中,云端设备的人工智能处理器的当前运行环境参数可以与其实际运行环境参数相同,也可以与其实际运行参数不同。进一步地,还可以根据云端设备地人工智能处理器对特定处理任务的测试结果,确定端侧的人工智能处理器的设备信息是否符合预期条件。当端侧的人工智能处理器的设备信息不符合预期条件时,可以进一步调整端侧的人工智能处理器的设备信息,直至该端侧的人工智能处理器的设备信息符合预期条件。
也就是说,本申请实施例中,通过对云端设备的运行环境参数进行调整,使得云端设备中的同一人工智能处理器能够模拟多个不同的端侧的人工智能处理器,从而即使端侧的人工智能处理器处于未流片状态,也能够实现对该未流片的人工智能处理器的设备信息进行调试,及算法模型与该未流片的人工智能处理器的匹配及调试。
而现有技术中,只有当人工智能芯片流片成功后,开发者才能在对应版本的人工智能处理器(硬件实体)上进行开发和测试。基于现有技术的技术现状,本领域的技术人员并不会想到在同一人工智能处理器上模拟多个不同的人工智能处理器。
进一步可选地,软件开发平台对客户提供的算法模型经过一系列处理,得到对应的机器学习任务,该机器学习任务在云侧的人工智能处理器上运行,得到运行结果。本申请实施例可以根据运行结果,在软件开发平台上对机器学习任务进行调整,实现端侧的人工智能处理器与算法模型之间的适配。
基于此,本申请实施例提供了一种测试方法,用户通过在人工智能软件开发平台设置不同型号的芯片所需的测试环境,从而进一步实现在同一云端设备(如板卡)上针对多种端侧人工智能芯片的调试以及测试过程。
参见图1所示,是本申请实施例提供的一种人工智能软件开发平台的系统架构图,如图1所示,该系统架构可以包括:云端设备101、人工智能软件开发平台102以及端侧设备103,其中,该端侧设备可以是手机等终端设备,也可以是摄像头等边缘端设备。
其中,人工智能软件开发平台102提供了用于应用开发、性能调优、功能调试等一系列工具包。其中,应用开发工具包括机器学习库、运行时库、编译器和特定领域(如视频分析)的软件开发工具。其中,机器学习库用于提供各种机器学习算子,运行时库用于人工智能芯片的内存管理以及运行管理等等。本申请实施例中的编译器可以包括C++语言的传统编译器,还可以包括基于类C语言的机器学习编译器,也可以基于其他高级语言或者专门设计的领域专用编程语言(Domain Specific Language)的机器学习编译器。可选地,该软件开发平台可以运行在云端设备上,也可以运行在本地(host)的计算机设备上,该本地的计算机设备可以包括通用处理器(如CPU)和显示器等,此处不做具体限定。进一步可选地,上述人工智能软件开发平台可以以客户端的形式运行在本地的计算机设备上,或者云端设备上,本申请实施例不作具体限定。
可选地,云侧设备101是完整的计算机系统,云端设备101中可以包括服务器板卡,该服务器板卡可以包括至少一个人工智能处理器,该人工智能处理器可以是基于非重构体系结构的处理器,也可以是基于可重构体系结构的处理器。进一步可选地,该服务器板卡还可以包括CPU等通用处理器,FPGA等处理器等等。
具体实现中,端侧设备可以是未流片状态的设备,也可以是已流片的设备。可选地,该端侧设备可以是人工智能处理器,端侧设备103用于部署离线运行文件以及已经流片成功的目标芯片。可选地,离线运行文件为云端设备中的人工智能处理器在处理预设任务的过程中,其运行结果满足设定好的条件时对应的二进制指令经过固化操作得到的。基于云端设备101生成的离线运行文件可以迁移部署在本申请实施例所涉及的端侧设备103中,从而可以实现离线运行文件的无缝迁移。本申请实施例中,为了能够实现离线运行文件既可以运行在云端设备的人工智能处理器上,也可以运行在端侧设备上,且机器学习任务在云端设备的人工智能处理器上执行时生成的运行结果与在端侧设备上执行时生成的运行结果完全一致或在一定的允许误差范围之内,在本技术方案中,云端设备的人工智能处理器的硬件架构信息兼容端侧设备的硬件架构信息,云端设备的人工智能处理器的指令集兼容端侧设备的指令集,从而可以实现离线运行文件的无缝迁移。这样,可以提高该离线运行文件的可移植性,进而提高该系统架构的运算能力及效率。同时,编程人员无需针对端侧设备和云端设备分别进行编程及调试,简化了编程过程。
进一步可选地,当云端设备中存在多种不同架构的人工智能处理器时,软件开发平台可以根据该目标芯片的设备信息,从云端设备的多种人工智能处理器中选择一个与其硬件架构信息适配的人工智能处理器,之后再将根据该目标芯片的设备信息确定的第一测试环境发送至云端设备,以配置该云端设备中该选定的人工智能处理器的当前运行环境参数。
为了便于更好的理解本申请实施例提供的一种测试方法,下面先对本申请实施例所描述的方法可以适用的应用场景进行阐述。
在其中一个可能的实现方式中,如图2所示的本申请实施例提供的测试方法的应用场景示意图,可以包括云端设备以及人工智能软件开发客户端。具体地,云端设备可以包括处理器和至少一个人工智能处理器。在本申请实施例中,人工智能处理器可以包括8个集群(cluster),每个cluster中包括4个人工智能处理器核。进一步可选地,云端设备上运行有人工智能软件开发客户端。
具体实现中,云端设备上的处理器获取目标芯片的第一设备信息,这里,第一设备信息包括所述目标芯片的芯片运行环境参数(例如,芯片运行环境参数包括目标芯片的运行主频率以及所述目标芯片的访存带宽)。之后,该处理器根据目标芯片的第一设备信息确定第一测试环境,这里,第一测试环境包括所述目标芯片的主频率、所述目标芯片的访存带宽以及所述目标芯片的计算能力。其中,目标芯片的访存带宽可以是各个cluster的访存带宽值,也可以是各个人工智能处理器核的访存带宽。
在软件开发平台102确定了第一测试环境之后,将其发送给云端设备。在这种情况下,云端设备可以将其上的人工智能处理器的当前运行环境参数设置为与所述目标芯片的第一设备信息一致,从而人工智能处理器在该当前运行环境参数下处理预设任务。在人工智能处理器处理预设任务时,通过硬件监测程序监控人工智能处理器在当前运行环境参数下的测试结果,该测试结果用于指示人工智能处理器处理预设任务的处理性能。
需要说明的是,在实际应用中,人工智能处理器处理预设任务的过程,从实质上来看,是指:运行与预设任务适配的二进制指令,得到上述二进制指令对应的运行结果的过程。这里,运行结果包括目标芯片处理预设任务的精度等。当运行结果满足设定好的条件时(例如,目标芯片处理预设任务的精度满足设定好的阈值),可以对二进制指令进行固化,从而可以得到经过固化后的离线运行文件。具体实现中,离线运行文件可以运行在待部署的端侧设备上。从上述实现流程可以知道,通过将云端设备中的人工智能处理器的芯片运行环境参数设置为与目标芯片的运行环境参数相等,从而可以基于该人工智能处理芯片实现目标芯片的提前调试、测试过程。
需要说明的是,在本申请实施例中,云端设备中的人工智能处理器的计算能力大于或等于目标芯片的计算能力,人工智能处理器的运行环境参数范围可以涵盖目标芯片的运行环境参数(例如,所述目标芯片的运行主频率小于或等于所述人工智能处理器的实际主频率;所述目标芯片的访存带宽小于或等于所述人工智能处理器的实际访存带宽)。也就是说,云端设备的人工智能处理器的硬件架构信息兼容端侧设备的硬件架构信息,从而可以实现在同一个人工智能处理器上模拟多种未流片的目标芯片的测试环境,进而基于确定好的测试环境实现目标芯片的提前调试、测试过程。
在其中另一个可能的实现方式中,如图3示出的本申请实施例提供的另一种测试方法的应用场景示意图,可以包括端侧设备、云端设备以及人工智能软件开发客户端。
具体实现中,人工智能软件客户端运行在本地计算机设备上。如前所述,该本地的计算机设备可以包括通用处理器(如CPU)和显示器等。用户1通过第一账号登录该人工智能软件开发客户端,在用户1成功登录人工智能软件开发客户端之后,通过本地计算机设备中的处理器获取目标芯片的第一设备信息,如前所述,第一设备信息包括所述目标芯片的芯片运行环境参数(例如,芯片运行环境参数包括目标芯片的运行主频率、访存带宽)。之后,本地计算机设备中的处理器根据目标芯片的第一设备信息确定第一测试环境,这里,第一测试环境包括所述目标芯片的主频率、所述目标芯片的访存带宽以及所述目标芯片的计算能力。在确定了第一测试环境之后,本地计算机设备可以将第一测试环境发送给云端设备。在这种情况下,云端设备可以将上的人工智能处理器的当前运行环境参数设置为与所述目标芯片的第一设备信息一致,从而人工智能处理器在该当前运行环境参数下处理预设任务。在人工智能处理器处理预设任务时,通过硬件监测程序监控人工智能处理器在当前运行环境参数下的测试结果,该测试结果用于指示人工智能处理器处理预设任务的处理性能。
需要说明的是,在实际应用中,人工智能处理器处理预设任务的过程,从实质上来看,是指:运行与预设任务适配的二进制指令,得到上述二进制指令对应的运行结果的过程。这里,运行结果包括目标芯片处理预设任务的精度等。当运行结果满足设定好的条件时(例如,目标芯片处理预设任务的精度满足设定好的阈值),可以对二进制指令进行固化,从而可以得到经过固化后的离线运行文件。具体实现中,离线运行文件可以运行在待部署的端侧设备上。从上述实现流程可以知道,通过将云端设备中的人工智能处理器的芯片运行环境参数设置为与目标芯片的运行环境参数相等,从而可以基于该人工智能处理芯片实现目标芯片的提前调试、测试过程。
需要说明的是,在本申请实施例中,云端设备中的人工智能处理器的硬件架构信息(例如,硬件架构信息包括版本信息以及型号信息,其中,型号信息可以表征人工智能处理器的计算能力)大于或等于目标芯片的计算能力,人工智能处理器的运行环境参数范围可以涵盖目标芯片的运行环境参数(例如,所述目标芯片的运行主频率小于或等于所述人工智能处理器的实际主频率;所述目标芯片的访存带宽小于或等于所述人工智能处理器的实际访存带宽),也就是说,该云端设备的人工智能处理器的硬件架构信息能够兼容端侧设备的人工智能处理器,从而可以实现在同一个人工智能处理器上模拟多种不同型号的目标芯片的测试环境,进而基于确定好的测试环境实现端侧人工智能芯片的提前调试、测试过程。
基于上述应用场景,下面结合图4所示的本申请实施例提供的一种测试方法的流程示意图,具体说明在本申请实施例中是如何实现针对目标芯片的提前调试以及测试过程,可以包括但不限于如下步骤:
步骤S400、处理器获取目标芯片的第一设备信息;
具体实现中,目标芯片可以为处于未流片状态下的芯片,也可以为已流片的芯片。该处理器可以是云端设备的处理器,也可以是本地计算机设备的处理器。
具体地,所述目标芯片的第一设备信息可以包括目标芯片的硬件架构信息和芯片运行环境参数。例如,目标芯片的硬件架构信息可以包括目标芯片的版本、目标芯片的型号信息(在实际应用中,目标芯片的型号信息可以表征目标芯片的计算能力)。目标芯片的运行环境参数可以包括目标芯片的运行主频率和访存带宽。这里,目标芯片的运行主频率是指芯片在单位时间内发出的脉冲数。具体来说,脉冲是一种特殊的电压或电流变化。在实际应用中,芯片的运行主频率用于衡量芯片的处理速度。例如,芯片的主频率越高,其运算速度就越快。访存带宽是指,外部动态随机存取存储器DRAM到芯片之间的存储带宽。
步骤S402、处理器根据所述目标芯片的第一设备信息确定第一测试环境。
具体地,在本申请实施例中,第一设备信息与第一测试环境之间一一对应,如前所述,第一设备信息包括所述目标芯片的硬件架构信息、目标芯片的运行主频率以及访存带宽,处理器根据第一设备信息确定好的第一测试环境中,第一测试环境包括所述目标芯片的主频率、所述目标芯片的访存带宽和所述目标芯片的计算能力。
在其中一个可能的实现方式中,所述根据所述目标芯片的第一设备信息确定第一测试环境,包括:
根据预置的设备信息和测试环境之间的对应关系,确定所述目标芯片的第一设备信息对应的第一测试环境。
具体来说,处理器可以根据不同的目标芯片的设备信息确定不同的测试环境,也即,设备信息与测试环境之间存在一一对应关系。例如,设备信息和测试环境之间的对应关系可以包括但不限于表1所示:
表1设备信息与测试环境之间的对应关系表
设备信息 测试环境
设备信息1 测试环境1
设备信息2 测试环境2
设备信息3 测试环境3
如表1所示,处理器根据设备信息1确定好的测试环境为测试环境1;处理器根据设备信息2确定好的测试环境为测试环境2;处理器根据设备信息3确定好的测试环境为测试环境3。
在一种可能的实现方式中,处理器根据第一设备信息确定好的第一测试环境与云端设备中的人工智能处理器的实际环境相同,例如,根据第一设备信息确定好的第一测试环境为:目标芯片的计算能力为第一计算能力,目标芯片的运行主频率为1GHz,目标芯片的访存带宽为32GB/s。而云端设备中人工智能处理器的实际环境为:计算能力为第一计算能力,运行主频率为1GHz,访存带宽为32GB/s。在这种情况下,云端设备中的人工智能处理器可以基于自身原本的实际环境模拟目标芯片的测试环境。
在其中一个可能的实现方式中,处理器根据第一设备信息确定好的第一测试环境与云端设备中的人工智能处理器的实际环境不同,例如,根据第一设备信息确定好的第一测试环境为:目标芯片的计算能力为第二计算能力(该第二计算能力可能小于或等于云端设备的人工智能处理器的实际计算能力),目标芯片的运行主频率为500Hz,目标芯片的访存带宽为32GB/s。而云端设备中人工智能处理器的实际环境为:人工智能处理器的计算能力为第一计算能力,运行主频率为1GHz,访存带宽为32GB/s。在这种情况下,云端设备可以将其上的人工智能处理器的实际环境调整为与上述测试环境一致,从而可以模拟目标芯片的测试环境。
在其中一个可能的实现方式中,所述根据所述目标芯片的第一设备信息确定第一测试环境,还包括:
接收输入的配置文件;
根据所述配置文件确定所述目标芯片的第一设备信息对应的第一测试环境。
例如,输入的配置文件可以如下所示:
/proc/driver/cambricon/mlus/(bdf number)/config
enable 1
freq 500cluster 8bandwidth 32 32 32 32 32 32 32 32capability 1H8(这里,1H8可以表征计算能力)
enable 0
这里,bdf number,也即标识信息,用于区分不同的多卡环境。
enable为使能标志位,1表示的enable,0表示disable。
根据上述配置文件确定好的所述目标芯片的第一设备信息对应的测试环境为:目标芯片的频率为500Hz,目标芯片8个集群(cluster)的访存带宽为30GB/s,目标芯片的计算能力为第一计算能力。
步骤S404、处理器发送所述第一测试环境至云端设备,以确定所述云端设备中人工智能处理器的当前运行环境参数。
可选地,所述的根据所述目标芯片的第一设备信息确定第一测试环境,发送所述第一测试环境至云端设备,还包括:
根据所述目标芯片的芯片运行环境参数,确定至少一个第一寄存器的值以及至少一个第二寄存器的值;
发送所述至少一个第一寄存器的值和所述至少一个第二寄存器的值至所述云端设备。
例如,在本申请实施例中,第一寄存器用于记录并存储频率值,第二寄存器用于记录并存储访存带宽值。具体地,第一寄存器以及第二寄存器的数量均为至少一个,例如,第一寄存器的数量为1个,第二寄存器的数量可以等于人工智能处理器中集群的数量,具体可以为8个。软件开发平台对应的处理器可以根据其获取的目标芯片的芯片运行环境参数,确定第一寄存器的值以及各个第二寄存器的值。
步骤S406、云端设备接收所述第一测试环境,根据所述第一测试环境设置云端设备的人工智能处理器的当前运行环境参数,使所述人工智能处理器的当前运行环境参数与所述目标芯片的第一设备信息一致。
具体地,云端设备在接收到第一测试环境之后,将其中的人工智能处理器的当前运行环境参数设置为与所述第一设备信息相等。可以理解的是,云端设备将人工智能处理器的当前运行环境参数设置为与所述第一设备信息相等的这一过程,依赖于对应的硬件设备(例如,云端设备的微控制单元MCU)来完成,例如,MCU可以通过屏蔽云端设备的人工智能处理器的部分功能,使得云端设备的人工智能处理器能够模拟端侧设备。当然,在其他实施例中,云端设备的人工智能处理器还可以根据其当前运行环境参数屏蔽其自身的部分功能,使得云端设备的人工智能处理器能够模拟端侧设备。参见图5A,是本申请实施例提供的一种硬件设备配置频率值、访存带宽值以及计算能力模式值的过程示意图。
本申请实施例中,软件开发平台102通过驱动更改同一云端设备的人工智能处理器所支持的不同的运行环境参数,使得高配置版本的人工智能处理器中的部分功能被屏蔽,仅仅在实现的功能上与对应的端侧设备的功能相适配。因此,高配置版本的人工智能处理器的芯片运行环境参数的取值范围包含端侧的人工智能处理器所支持的不同的芯片运行环境参数。
可选地,通过硬件监测程序获取人工智能处理芯片在处理预设任务时的第一测试结果。在实际应用中,硬件监测程序可以运行在处理器上,也可以运行在人工智能处理器上,本申请实施例不作具体限定。进一步可选地,该硬件监测程序可以是软件开发平台的一部分,用户可以通过该硬件监测程序实时获得云端设备的人工智能处理器的当前运行环境参数。为了便于阐述,在本申请实施例中,以硬件监测程序(Cambricon Neuware Minitor,CNMON)运行在人工智能处理器为例进行阐述。
具体实现中,硬件监测程序将人工智能处理器的主频率、访存带宽值以及计算能力模式值写入到proc文件中,proc_write将频率值和访存带宽值换算为对应的寄存器值,并分别写入各自对应的寄存器中。这里,主频率对应的寄存器为第一寄存器,n个cluster各自的带宽对应的n个寄存器分别为第二寄存器[n],计算能力模式值保存到人工智能处理器的私密数据(private data)中。
这里,主频率与寄存器值之间的换算关系可以表示为:
主频率=25*(fbdiv*refdiv)/(postdiv1*postdiv2)
在上述主频率与寄存器值的换算关系表达式中,fbdiv(PLL feedback dividevalue,fbdiv)表示PLL反馈分频系数,refdiv(reference divide value,refdiv)表示参考时钟分频系数,postdiv1(post divide1,postdiv1)表示输出分频系数1,postdiv2(postdivide2,postdiv2)表示输出分频系数2。
访存带宽值与寄存器值之间的换算关系可以表示为:
访存带宽值=对应寄存器值/0×100
在上述访存带宽值与寄存器值的换算关系表达式中,这里100为用十六进制表示的十进制数256。
之后,硬件监测器工具CNMON通过调用获取频率或带宽的接口,读取寄存器值,并将其换算为对应的真实值。而计算能力模式值传递给运行时(runtime)。这里,运行时是指一个程序在运行的状态。也就是说,当你打开一个程序使它在计算机设备上运行的时候,那个程序就是处于运行时。
最终,处理器会根据对应至少一个第一寄存器中写入的频率值以及至少一个第二寄存器写入的访存带宽值分别进行频率和带宽的调节工作,从而将人工智能处理器的当前运行环境参数设置为与目标芯片的第一设备信息相等。人工智能处理器根据其接收到的计算能力模式值设置其自身的硬件架构信息。具体地,将自身的芯片运行环境参数设置为与目标芯片的运行环境参数相等。可以理解的是,人工智能处理器在设置好了自身的芯片的运行环境参数之后,可以在运行环境下处理预设任务。
进一步可选地,当云端设备中存在多个不同型号的人工智能处理器时,云端设备可以根据其接收到的目标芯片的硬件架构信息,从多个不同型号的人工智能处理器中选定一个与该目标芯片适配的人工智能处理器。
在其中一个可能的实现方式中,在执行完上述步骤S406之后,还可以执行步骤S408-S4012:
步骤S408、当人工智能处理器设置完自身的运行环境参数之后,在所述当前运行环境参数下处理预设任务。
这里,处理预设任务是指在当前的运行环境参数下运行与预设任务匹配的离线运行文件,继而得到运行离线运行文件对应的运行结果。接下来具体阐述处理器是如何生成离线运行文件的:
具体实现中,处理器根据获取到目标芯片的第一设备信息,在人工智能软件开发平台中设置编译接口对应的软件参数,软件参数是指为目标芯片配置的机器学习库中不同功能模块间的传递参数。之后,处理器根据该软件参数生成目标芯片的二进制指令。
具体地,处理器根据软件参数生成目标芯片的二进制指令,可以包括:
处理器结合编程框架获取的机器学习模型,调用机器学习库内部编译接口进行编译,在编译过程完成之后,可以得到二进制指令。进一步地,通过上述步骤S401-步骤S406,通过驱动配置相应的硬件运行环境,之后,通过人工智能处理器运行生成的二进制指令,可以得到二进制指令对应的运行结果。
当处理器确定人工智能处理器发送的运行某一个二进制指令时的运行结果满足设定好的阈值时,处理器获取所述运行结果对应的二进制指令,并对该二进制指令进行固化,得到固化后的离线运行文件。这里,离线运行文件为允许运行在目标芯片上,并且离线运行文件包括用于表征自身属性的信息。例如,离线运行文件包括:离线模型的版本、人工智能处理器核的版本信息、二进制指令、常数表、输入/输出数据规模、数据布局描述信息和参数信息。
具体来说,离线模型的版本是指离线运行文件的版本信息;人工智能处理器核的版本信息是指目标芯片的硬件架构信息;数据布局描述信息是指基于硬件特性对输入/输出数据进行处理;常数表、输入/输出数据规模和参数信息基于开发好的深度学习算法模型。在常数表中,存储有执行二进制指令运算过程中需要使用的数据。
在实际应用中,处理器可以通过设备(例如,云端设备)的通信接口将上述离线运行文件发送至端侧设备。在这种情况下,对于端侧设备来说,端侧设备在接收了云端设备发送的离线运行文件之后,可以在端侧设备上解析并运行所述离线运行文件,并得到满足前述设定好的阈值的运行结果。
需要说明的是,在其中一个可能的实现方式中,端侧设备上的目标芯片在运行上述离线运行文件得到的运行结果与云端设备上的人工智能处理器运行同一个离线运行文件得到的运行结果一致。在其中一个可能的实现方式中,端侧设备上的目标芯片在运行上述离线运行文件得到的运行结果与云端设备上的人工智能处理器运行同一个离线运行文件得到的运行结果之间满足预设的误差范围。
可以理解的是,对于端侧设备来说,在端侧设备的硬件流片之前,云端设备可以实现目标芯片的调试以及测试过程,继而,可以将运行结果满足设定好的阈值所对应的离线运行文件部署在与目标芯片的设备信息匹配的端侧设备上,从而可以实现离线运行文件的无缝迁移。
在实际应用中,前述所描述的配置驱动运行环境以及生成离线运行文件之后,人工智能处理器可以处理预设任务。在本申请实施例中,并不限定配置驱动运行环境和生成离线运行文件的步骤的先后顺序。
当人工智能处理器在处理预设任务时,运行在人工智能处理器上的硬件监测器工具CNMON获取人工智能处理器在当前运行环境下处理上述预设任务时的第一测试结果,这里,第一测试结果用于指示所述人工智能处理器处理所述预设任务的处理性能。进一步地,第一测试结果可以包括所述目标芯片处理所述预设任务的运行时间、所述目标芯片处理所述预设任务的功耗中的至少一种。具体地,预设条件中的运行时间可以包括设定好的所述目标芯片处理预设任务的最大运行时间,也可以为设定好的目标芯片处理预设任务的时间范围。或者,预设条件中的功耗可以包括设定好的目标芯片处理预设任务时的最大功耗,也可以为设定好的目标芯片处理预设任务时的功耗范围,本申请实施例不作具体限定。
步骤S4010、人工智能处理器将第一测试结果发送给处理器。
步骤S4012、处理器接收所述人工智能处理器在所述当前运行环境下,处理所述预设任务时的第一测试结果。
步骤S4014、若所述第一测试结果不符合预设条件,则处理器可以重新获取所述目标芯片的第一设备信息,并将根据该第一设备信息确定的第一测试环境发送至云端设备,以使云端设备可以根据第一测试环境重新配置其中人工智能处理器的当前运行环境参数;或者,处理器可以获取功耗值,并将该功耗值发送给云端设备,以使云端设备可以根据功耗值重新配置其上人工智能处理器的当前运行环境参数中的主频率。
在实际应用中,当第一测试结果不满足预设条件时,处理器可以重新获取新的第一设备信息,并根据最新获取的第一设备信息配置测试环境,以实现在该新的测试环境下得到的测试结果满足预设条件。
如前所述,第一测试结果包括目标芯片处理预设任务的运行时间、目标芯片处理预设任务的功耗中的至少一种,当第一测试结果不满足预设条件时,可以包括如下三种情形:(1)目标芯片处理预设任务的运行时间不满足预设条件;(2)目标芯片处理预设任务的功耗不满足预设条件;(3)目标芯片处理预设任务的运行时间以及目标芯片处理预设任务的功耗不满足预设条件。
针对上述三种情形中的任意一种情形,处理器可以重新获取目标芯片的第一设备信息,以重新配置人工智能处理器的当前运行环境参数。
例如,处理器确定第一设备信息(这里,第一设备信息包括目标芯片的计算能力为第一计算能力,目标芯片的运行主频率为500Hz,目标芯片的访存带宽为32GB/s)对应的第一测试结果不满足预设条件。在这种情况下,处理器重新获取第一设备信息,例如,处理器重新获取的第一设备信息为目标芯片的计算能力为第一计算能力,目标芯片的运行主频率为600Hz,目标芯片的访存带宽为32GB/s,此时,处理器根据重新获取的第一设备信息配置对应的测试环境(例如,该测试环境中人工智能处理芯片的计算能力为第一计算能力,运行主频率为600Hz,访存带宽为32GB/s),并基于配置好的测试环境得到测试结果,当测试结果不满足预设条件时,重复执行上述步骤,直至测试结果满足预设条件。
一般来说,芯片的运行主频率越高,芯片的功耗越大,也即,频率与功耗之间呈正比关系。在上述三种情形中,当目标芯片处理预设任务的功耗不满足预设条件时,处理器可以通过调整目标芯片的运行主频率来实现目标芯片处理预设任务时的功耗达到预设条件。例如,处理器重新获取的第一设备信息中,目标芯片的运行主频率小于之前的目标芯片的运行主频率,可以理解的是,通过频率调节功耗的这一实现方式,为调节功耗的一种间接实现方法。
针对上述第二种情形,若第一测试结果中表明功耗不满足预设条件,则可以通过上述的处理器重新获取第一设备信息,并根据该第一设备信息重新配置人工智能处理器的当前运行环境参数(包括重新配置人工智能处理器的主频率、访存带宽和计算能力等等)。在其中一种实现方式中,针对上述第二种情形,若第一测试结果中表明功耗不满足预设条件还可以通过功耗限额(power capping)调节这一直接方法实现将目标芯片处理预设任务的功耗满足预设条件。
在本申请实施例中,第三寄存器用于记录并存储power值,第三寄存器包括至少N个比特位,例如,N=8,其中,所述至少N个比特位中的第一比特位用于表征所述powercapping的使能标志位,所述第一比特位包括所述至少N个比特位中的第0比特位或第N-1比特位。例如,第7比特位为使能标志位。第一比特位可以为使能状态或非使能状态,例如,1表示enable,0表示disable。参见图5B,是本申请实施例提供的一种硬件设备配置功耗值的过程示意图。具体实现中,当第一比特位为1时,软件开发平台所在的处理器接收用户输入的power值,并将该power值存储在第三寄存器中。之后,云端设备可以从该第三寄存器中读取该power值,并根据power值从预置的频率和功耗的对应关系中确定当前的power值对应的频率值,继而,云端设备(例如,MCU)通过调整频率值对应的第一寄存器实现功耗的调节。
如前所述,调节目标芯片的运行主频率是通过调整第一寄存器中的值实现的,而power capping调节也是通过调整第一寄存器中的值来实现,因此,可以知道的是,通过调节频率实现功耗调节的间接方式与power capping调节实现功耗调节的直接方式间在并行状态下时存在冲突的问题,具体的冲突体现在:
情形一,power capping调节频率值时,按照第一比特位的状态进行设置,在调节前,并不读取第一寄存器值,若在power capping未关闭(也即,第一比特位为1)的情况下采用调节频率值的方式进行调频(也即,根据功耗值调节功耗的同时,根据频率值调节功耗),此时,power capping无法获知第一寄存器值已经发生改变,在这种情况下,产生冲突。
情形二,当power capping关闭(也即,第一比特位由1为0)时,需要将第一寄存器值设置为预设值,例如,预设值为1GB/s,如果在此之前,采用调节频率值的方式修改过第一寄存器值,也就意味着,采用调节频率值的方式修改好的第一寄存器值会被覆盖,在这种情况下,产生冲突。
针对上述两种产生冲突的情形,本申请还提供了一种解决上述冲突的方法,接下来对其进行具体阐述:
具体实现中,将配置调节频率值、调节访存带宽值以及计算能力值这一功能和power capping处于互斥状态:
具体地,为驱动调节频率值、调节访存带宽值以及计算能力值这一功能(记为第一配置方式)和power capping(记为第二配置方式)各自设置一个标志位(flag),该标志位用于记录使能状态(enable)和非使能状态(disable),例如,1表示enable,0表示disable;这里,两个功能的flag不能同时为1。进一步可选地,powercapping对应地标志位可以是其中的第一比特位。
当云端设备中的MCU检测到power capping对应的flag为1时,则可以通过调节功耗值的方式配置第一寄存器的值。当云端设备的MCU检测到驱动调节频率值、调节访存带宽值以及计算能力值这一功能对应的flag为1时,则可以通过重新获取第一设备信息的方式配置第一寄存器的值。
进一步地,当将上述第一配置方式或第二配置方式的标志位设置为0的过程,可以通过轮询机制确定,以进一步避免第一配置方式和第二配置方式之间的冲突。具体地,当云端设备中的MCU检测到power capping的第一比特位由1变为0时,例如,bit[7]由1变成0,在这种情况下,MCU将第一寄存器中的频率值设置为预设值,例如,预设值为1GB/s。在MCU将第一寄存器中的频率值设置为预设值的过程中,通过轮询(polling)机制确定第一寄存器中的频率值是否已经被恢复成预设值,只有在第一寄存器中的频率值已被恢复成预设值的情况下,将power capping的标志位flag设置为0。这里,预设值为设定的频率值数值范围内的某个值,并且,该预设值小于人工智能处理器当前运行环境参数中的目标芯片的运行主频率。可以理解的是,在MCU将第一寄存器中的频率值设置为预设值的过程中,需要花费一定的时长,当MCU执行上述恢复操作的时长大于设定好的预设时长时,报错。在其中一个可能的实现方式中,若MCU检测到power capping的第一比特位为0时,第一寄存器中的频率值为预设值,此时,MCU无需将第一寄存器值恢复成预设值。
同样地,第一配置方式也需要添加非使能状态(例如,0)恢复预设频率值和访存带宽值的功能,并通过轮询(polling)机制确认第一寄存器值恢复成预设值完毕之后,将第一配置方式的标志位flag设置为0。具体地,第一配置方式的标志位设置位0的过程与上述power capping的标志位为0的过程基本一致,具体可参见上文中的描述。
为了便于更好的理解本申请实施例所提供的一种测试方法,下面结合具体的实例进行阐述:云端设备中包括处理器和第一人工智能处理器,该第一人工智能处理器的计算能力为第一计算能力(这里,第一计算能力大于或等于第二计算能力),运行主频率为1GHz,访存带宽值为32GB/s。在第一人工智能处理器上,可以模拟第二人工智能处理器(这里,第二人工智能处理器为与第一人工智能处理器不同的芯片)的测试环境,这里,第二人工智能处理器的计算能力为第二计算能力,频率为500Hz,访存带宽为32GB/s。具体来说,处理器在获取到第二人工智能处理器的第一设备信息之后,根据该第一设备信息确定第一测试环境,这里,确定好的第一测试环境为计算能力为第二计算能力,频率为500Hz,访存带宽为32GB/s,之后,将第一测试环境发送给云端设备,云端设备在接收到上述第一测试环境之后,将第一人工智能处理器的当前运行环境参数设置为频率500Hz,访存带宽为32GB/s,使得第一人工智能处理器在当前的运行环境参数下处理预设任务。当第一人工智能处理器在当前的运行环境参数下处理预设任务时,运行在人工智能处理器上的硬件监测器工具CNMON获取第一人工智能处理器在当前运行环境下处理上述预设任务时的第一测试结果,整个实现过程可以实现目标芯片的提前调试、测试过程。
实施本申请实施例,可以根据目标芯片的设备信息确定测试环境,并基于该测试环境下实现目标芯片的调试以及测试。
在其中一个可能的实现方式中,所述处理器还可以用于获取目标芯片的第二设备信息,并根据所述目标芯片的第二设备信息确定第二测试环境;其中,当所述第二设备信息与所述第一设备信息不同时,所述第二测试环境与所述第一测试环境不同;之后,将所述第二测试环境发送给云端设备,云端设备在接收到第二测试环境之后,根据所述第二测试环境设置第一人工智能处理器的当前运行环境参数,使得第一人工智能处理器在当前的运行环境参数下处理预设任务。与此同时,通过运行在人工智能处理器上的硬件监测程序获取所述人工智能处理器在当前的运行环境参数下处理预设任务时的第二测试结果,并将该第二测试结果发送给处理器。
实施本申请实施例,可以实现在同一个人工智能处理器上模拟多种不同型号的目标芯片的测试环境,进而基于确定好的测试环境实现端侧人工智能芯片的提前调试、测试过程。
进一步地,如图5C所示,为本申请提供的另一种测试方法流程图。所述方法应用于处理器上;包括:
步骤S501):获取目标芯片的第一设备信息;
步骤S502):根据所述目标芯片的第一设备信息确定第一测试环境;
步骤S503):发送所述第一测试环境至云端设备,以配置所述云端设备中人工智能处理器的当前运行环境参数,使所述人工智能处理器的当前运行环境参数与所述目标芯片的第一设备信息一致。
需要强调的是,图4所示的所有相关技术方案内容均适用于图5C所示的技术方案,这里不再赘述。
以上实施例中仅以软件开发平台运行在云端设备上的情况举例说明具体的实现过程,如上文记载,本申请的软件开发平台也可以运行在本地计算机设备上。当该软件开发平台运行在本地计算机设备上时,对云端设备的人工智能处理器的运行环境参数的配置过程与上述实施例基本一致,具体可参见上文的描述。
上述描述了本申请实施例的测试方法,下文将结合图6-图11,描述本申请实施例的云端设备、计算机设备以及测试系统。
图6示出的本申请实施例的云端设备的结构示意图,该云端设备60至少可以包括:
接收单元600,用于接收第一测试环境,以确定人工智能处理器的当前运行环境参数;
设置单元602,用于根据所述第一测试环境设置人工智能处理器的当前运行环境参数,使所述人工智能处理器的当前运行环境参数与目标芯片的第一设备信息一致。
在其中一个可能的实现方式中,所述云端设备60还可以包括:
MCU单元,用于根据获取的至少一个第一寄存器的值和至少一个第二寄存器的值,设置所述人工智能处理器的当前运行环境。
在其中一个可能的实现方式中,基于图3所示的应用场景,如图7所示,本申请实施例还提供了一种云端设备70,该云端设备70至少可以包括:MLU710、接收器720、接收器730、发送器740和MCU750。
其中,MLU710、存储器720、接收器730和发送器840通过内部连接通路互相通信,该存储器720用于存储指令,该MLU710用于执行该存储器720存储的指令,以控制接收器730接收信号,并控制发送器740发送信号。
其中,接收器730用于接收第一测试环境,以确定人工智能处理器MLU710的当前运行环境参数;
MCU750,用于根据所述第一测试环境设置所述云端设备中MLU710的当前运行环境参数,使所述MLU710的当前运行环境参数与所述目标芯片的第一设备信息一致;
所述MLU710,还用于在确定好的所述当前运行环境参数下处理预设任务。
在其中一个可能的实现方式中,基于图2所示的应用场景,如图8所示,本申请实施例还提供了一种云侧设备80,该云侧设备80至少可以包括:处理器810、存储器820、接收器830、发送器840和MLU850。其中,处理器810、存储器820、接收器830、发送器840和MLU850通过内部连接通路互相通信,该存储器820用于存储指令,该处理器810和/或MLU850用于执行该存储器820存储的指令,以控制接收器830接收信号,并控制发送器840发送信号。
其中,处理器810,用于获取目标芯片的第一设备信息;
所述处理器810,还用于根据所述目标芯片的第一设备信息确定第一测试环境;
所述处理器810,还用于发送所述第一测试环境至人工智能处理器(MLU850),以确定所述人工智能处理器(MLU850)的当前运行环境参数;
所述处理器810,还用于根据所述第一测试环境设置所述云端设备中人工智能处理器(MLU850)的当前运行环境参数,使所述人工智能处理器(MLU850)的当前运行环境参数与所述目标芯片的第一设备信息一致;
MLU850,还用于在所述当前运行环境参数下处理预设任务。
图9示出的本申请实施例提供的本地的计算机设备的结构示意图,该计算机设备90至少可以包括:
获取单元900,用于获取目标芯片的第一设备信息;
确定单元902,用于根据所述目标芯片的第一设备信息确定第一测试环境;
发送单元904,用于发送所述第一测试环境至人工智能处理器,以确定所述人工智能处理器的当前运行环境参数。
在其中一个可能的实现方式中,所述计算机设备90还可以包括:
接收单元,用于接收所述人工智能处理器在所述当前运行环境下处理所述预设任务时的第一测试结果;其中,所述第一测试结果用于指示所述人工智能处理器处理所述预设任务的处理性能。
在其中一个可能的实现方式中,所述计算机设备90还可以包括:
重新获取单元,用于在所述第一测试结果不满足预设条件时,重新获取所述目标芯片的第一设备信息
在其中一个可能的实现方式中,如图10所示,本申请实施例还提供了一种计算机设备100,该计算机设备100至少可以包括:处理器1010、接收器1020、接收器1030和发送器1040。
其中,处理器1010、存储器1020、接收器1030和发送器1040通过内部连接通路互相通信,该存储器1020用于存储指令,该人工智能处理器1010用于执行该存储器1020存储的指令,以控制接收器1030接收信号,并控制发送器1040发送信号。
其中,处理器1010,用于获取目标芯片的第一设备信息;
所述处理器1010,还用于根据所述目标芯片的第一设备信息确定第一测试环境;
发送器1040,用于发送所述第一测试环境至云端设备中的人工智能处理器,以确定所述人工智能处理器的当前运行环境参数;
接收器1030,用于接收所述人工智能处理器在所述当前运行环境下处理所述预设任务时的第一测试结果;其中,所述第一测试结果用于指示所述人工智能处理器处理所述预设任务的处理性能;
在其中一个可能的实现方式中,所述处理器1010,还用于在所述第一测试结果不满足预设条件时,重新获取所述目标芯片的第一设备信息。
图11示出的本申请实施例提供的测试系统110的示意性框图,该测试系统包括计算机设备1110和云端设备1120。其中,所述计算机设备1110包括处理器。
可以理解的是,在本申请实施例中的处理器以及云端设备的具体实现请参考前述描述,此处不多加赘述。
实施本申请实施例,可以实现在同一个人工智能处理器上模拟多种未流片的目标芯片的测试环境,进而基于确定好的测试环境实现目标芯片的提前调试、测试过程。
应理解,本申请实施例提供的方法可以适用的应用场景只是作为一种示例,实际应用中并不限于此。
还应理解,本申请中涉及的第一、第二、第三以及各种数字编号仅仅为描述方便进行的区分,并不用来限制本申请的范围。
应理解,本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本申请中字符“/”,一般表示前后关联对象是一种“或”的关系。
此外,在本申请的各个实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚的了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块和单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
所述作为分离部件说明的单元可以是物理上分开的,也可以不是物理上分开的,作为单元显示的部件可以是物理单元,也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。
此外,在本申请各个实施例中所涉及的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现,本申请对此不作限定。
本申请实施例还提供了一种计算机存储介质,该计算机可读存储介质中存储有指令,当其在计算机或处理器或MLU上运行时,使得计算机或处理器或MLU执行上述任一个实施例所述方法中的一个或多个步骤。上述装置的各组成模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在所述计算机可读取存储介质中,基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机产品存储在计算机可读存储介质中。
上述计算机可读存储介质可以是前述实施例所述的云侧设备或计算机设备的内部存储单元,例如硬盘或内存。上述计算机可读存储介质也可以是上述云侧设备或计算机设备的外部存储设备,例如配备的插接式硬盘,智能存储卡(SmartMediaCard,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,上述计算机可读存储介质还可以既包括上述云侧设备或计算机设备的内部存储单元也包括外部存储设备。上述计算机可读存储介质用于存储上述计算机程序以及上述云侧设备或计算机设备所需的其他程序和数据。上述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可通过计算机程序来指令相关的硬件来完成,该计算机的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可存储程序代码的介质。
本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本申请实施例装置中的模块可以根据实际需要进行合并、划分和删减。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (10)

1.一种测试方法,其特征在于,包括:
获取目标芯片的第一设备信息;
根据所述目标芯片的第一设备信息确定第一测试环境;
发送所述第一测试环境至云端设备,以配置所述云端设备中人工智能处理器的当前运行环境参数,使所述人工智能处理器的当前运行环境参数与所述目标芯片的第一设备信息一致;其中,所述第一设备信息包括所述目标芯片的芯片运行环境参数;所述芯片运行环境参数包括所述目标芯片的运行主频率以及访存带宽;
所述第一设备信息还包括所述目标芯片的硬件架构信息;所述根据所述目标芯片的第一设备信息确定第一测试环境,发送所述第一测试环境至云端设备,还包括:
将所述目标芯片的硬件架构信息传送至所述云端设备,以使所述云端设备选择一个与所述目标芯片的硬件架构信息适配的人工智能处理器。
2.根据权利要求1所述的方法,其特征在于,所述的根据所述目标芯片的第一设备信息确定第一测试环境,发送所述第一测试环境至云端设备,还包括:
根据所述芯片运行环境参数,确定至少一个第一寄存器的值以及至少一个第二寄存器的值;
发送所述至少一个第一寄存器的值和所述至少一个第二寄存器的值至所述云端设备。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收所述人工智能处理器在所述当前运行环境参数下处理预设任务时,获得的第一测试结果;其中,所述第一测试结果用于指示所述人工智能处理器处理所述预设任务的处理性能;
若所述第一测试结果不符合预设条件,则重新获取所述目标芯片的第一设备信息。
4.根据权利要求3所述的方法,其特征在于,所述第一测试结果包括所述目标芯片处理所述预设任务的运行时间、所述目标芯片处理所述预设任务的功耗中的至少一种。
5.根据权利要求1所述的方法,其特征在于,所述第一测试环境包括所述目标芯片的主频率、所述目标芯片的访存带宽和所述目标芯片的计算能力;
所述目标芯片的运行主频率小于或等于所述人工智能处理器的实际主频率;
所述目标芯片的访存带宽小于或等于所述人工智能处理器的实际访存带宽;
所述目标芯片的计算能力小于或等于所述人工智能处理器的实际计算能力。
6.一种测试方法,其特征在于,所述测试方法应用于测试系统,所述测试系统包括处理器和云端设备;所述方法包括:
所述处理器获取目标芯片的第一设备信息;所述第一设备信息包括所述目标芯片的芯片运行环境参数;所述芯片运行环境参数包括所述目标芯片的运行主频率以及访存带宽;
所述处理器根据所述目标芯片的第一设备信息确定第一测试环境;
所述处理器发送所述第一测试环境至所述云端设备,以确定所述云端设备中人工智能处理器的当前运行环境参数;
所述第一设备信息还包括所述目标芯片的硬件架构信息,所述处理器发送所述第一测试环境至所述云端设备,还包括:
所述处理器将所述目标芯片的硬件架构信息传送至所述云端设备;
所述云端设备选择一个与所述目标芯片的硬件架构信息适配的人工智能处理器,根据所述第一测试环境设置所述人工智能处理器的当前运行环境参数,使所述人工智能处理器的当前运行环境参数与所述目标芯片的第一设备信息一致。
7.根据权利要求6所述的方法,其特征在于,其特征在于,所述处理器根据所述目标芯片的第一设备信息确定第一测试环境,还包括:
根据所述芯片运行环境参数,确定至少一个第一寄存器的值以及至少一个第二寄存器的值;
发送所述至少一个第一寄存器的值和所述至少一个第二寄存器的值至所述云端设备。
8.根据权利要求6所述的方法,其特征在于,所述云端设备根据所述第一测试环境设置所述人工智能处理器的当前运行环境参数,还包括:
所述云端设备的MCU根据获取的至少一个第一寄存器的值和至少一个第二寄存器的值,设置所述人工智能处理器的当前运行环境。
9.根据权利要求6所述的方法,其特征在于,所述方法还包括:
所述人工智能处理器在所述当前运行环境参数下处理预设任务;
所述处理器接收所述人工智能处理器在所述当前运行环境下处理所述预设任务时的第一测试结果;其中,所述第一测试结果用于指示所述人工智能处理器处理所述预设任务的处理性能;
若所述第一测试结果不符合预设条件,则所述处理器重新获取所述目标芯片的第一设备信息。
10.根据权利要求6所述的方法,其特征在于,所述测试系统还包括用于监测所述人工智能处理器的当前运行环境的硬件监测工具;所述方法还包括:
所述硬件监测工具获取所述第一测试结果,并将所述第一测试结果传送至所述处理器。
CN201910315961.4A 2019-04-18 2019-04-18 一种测试方法及相关产品 Active CN111831539B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910315961.4A CN111831539B (zh) 2019-04-18 2019-04-18 一种测试方法及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910315961.4A CN111831539B (zh) 2019-04-18 2019-04-18 一种测试方法及相关产品

Publications (2)

Publication Number Publication Date
CN111831539A CN111831539A (zh) 2020-10-27
CN111831539B true CN111831539B (zh) 2024-09-24

Family

ID=72915032

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910315961.4A Active CN111831539B (zh) 2019-04-18 2019-04-18 一种测试方法及相关产品

Country Status (1)

Country Link
CN (1) CN111831539B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113742153B (zh) * 2021-09-15 2023-12-26 北京字节跳动网络技术有限公司 设备测试方法、装置、可读介质及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103201723A (zh) * 2012-08-03 2013-07-10 华为技术有限公司 用于配置内存的方法和内存配置管理服务器
CN104502690A (zh) * 2014-12-30 2015-04-08 中科创达软件股份有限公司 一种cpu功耗测试方法和系统
TW201723847A (zh) * 2015-12-30 2017-07-01 Chunghwa Telecom Co Ltd 應用於雲端虛擬機自動化測試環境部屬與測試之系統與方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8875102B1 (en) * 2009-03-12 2014-10-28 Google Inc. Multiple browser architecture and method
TWI476586B (zh) * 2011-07-13 2015-03-11 Inst Information Industry 以雲端技術為基礎之測試系統、方法以及其電腦可讀取記錄媒體
JP5681279B2 (ja) * 2011-08-01 2015-03-04 日本電気株式会社 試験装置、システム、プログラム、及び、方法
WO2013184137A1 (en) * 2012-06-08 2013-12-12 Hewlett-Packard Development Company, L.P. Test and management for cloud applications
JP2015049876A (ja) * 2013-09-05 2015-03-16 株式会社日立製作所 テストシステムおよび方法
US9983979B1 (en) * 2014-11-12 2018-05-29 VCE IP Holding Company LLC Optimized dynamic matrixing of software environments for application test and analysis
CN104572419A (zh) * 2015-01-30 2015-04-29 浪潮电子信息产业股份有限公司 一种服务器动态功耗的测试方法
CN104820627A (zh) * 2015-05-05 2015-08-05 浪潮电子信息产业股份有限公司 一种自动化进行cpu计算性能的测试方法
CN108763090B (zh) * 2018-05-31 2024-04-05 天航长鹰(江苏)科技有限公司 测试环境部署方法、装置、计算机设备和存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103201723A (zh) * 2012-08-03 2013-07-10 华为技术有限公司 用于配置内存的方法和内存配置管理服务器
CN104502690A (zh) * 2014-12-30 2015-04-08 中科创达软件股份有限公司 一种cpu功耗测试方法和系统
TW201723847A (zh) * 2015-12-30 2017-07-01 Chunghwa Telecom Co Ltd 應用於雲端虛擬機自動化測試環境部屬與測試之系統與方法

Also Published As

Publication number Publication date
CN111831539A (zh) 2020-10-27

Similar Documents

Publication Publication Date Title
EP3754496B1 (en) Data processing method and related products
JP7270764B2 (ja) 人工知能チップ検証
Kobayashi et al. OpenCL-ready high speed FPGA network for reconfigurable high performance computing
CN109034394B (zh) 一种机器学习模型的更新方法和装置
US9921569B2 (en) Field device commissioning system and method
GB2425622A (en) Programming real-time systems using data flow diagrams
CN111830390B (zh) 一种测试方法及相关产品
CN110750312A (zh) 硬件资源配置方法、装置、云侧设备和存储介质
US10387584B1 (en) Streaming on hardware-software platforms in model based designs
CN110750359B (zh) 硬件资源配置方法、装置、云侧设备和存储介质
CN117112447B (zh) 一种数据传输方法、装置、电子设备及可读存储介质
CN111831539B (zh) 一种测试方法及相关产品
CN112434478B (zh) 仿真逻辑系统设计的虚拟接口的方法及相关设备
CN114064079A (zh) 算法应用元的打包方法及装置、设备、存储介质
CN113326670A (zh) 原型验证系统、方法、处理单元、及设备
US10198539B1 (en) Systems and methods for dynamic RTL monitors in emulation systems
CN111950219B (zh) 用于实现模拟器的方法、装置、设备以及介质
CN108334313A (zh) 用于大型soc研发的持续集成方法、装置及代码管理系统
US11574090B2 (en) System and method for simulating field device in industrial plant
WO2020138386A1 (ja) 以前のトレースデータを使用する協調シミュレーションリピータ
CN112114931A (zh) 深度学习程序配置方法、装置、电子设备及存储介质
CN115409194B (zh) 量子程序的生成系统及量子计算机操作系统
CN115510782B (zh) 定位验证错误的方法、电子设备和存储介质
CN115409193B (zh) 量子程序的生成方法、装置、介质及量子计算机操作系统
EP4270121A1 (en) Method and system for seamless transition of runtime system from controller device to digitalization platform

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant