CN109656566B - 异构计算系统可执行文件获取方法、运行方法及相关产品 - Google Patents
异构计算系统可执行文件获取方法、运行方法及相关产品 Download PDFInfo
- Publication number
- CN109656566B CN109656566B CN201811535069.9A CN201811535069A CN109656566B CN 109656566 B CN109656566 B CN 109656566B CN 201811535069 A CN201811535069 A CN 201811535069A CN 109656566 B CN109656566 B CN 109656566B
- Authority
- CN
- China
- Prior art keywords
- artificial intelligence
- intelligence processor
- interface function
- program
- identifier
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4403—Processor initialisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44568—Immediately runnable code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及一种异构计算系统的可执行文件获取方法、运行方法及相关产品。该异构计算系统的可执行文件获取方法中,通过CPU程序和人工智能处理器程序,电子设备允许用户根据需求编写相应的程序实现所需功能,扩大了机器学习库的适用范围。
Description
技术领域
本申请涉及计算机应用技术领域,特别是涉及一种异构计算系统可执行文件获取方法、运行方法及相关产品。
背景技术
随着电子设备技术的发展,其处理的数据量越来越大,使得电子设备中的CPU的运算性能遇到了瓶颈,于是出现了异构计算系统,比如由一个或者多个通用计算单元(比如CPU)加上一个或者多个专用计算单元(比如图形处理器(Graphics Processing Unit,GPU))构建的系统就是异构计算系统,由两者协同起来共同执行通用计算任务就是异构计算,以加速数据的处理能力。
人工智能处理器(比如机器学习处理器(Machine Learning Unit,MLU))能够与CPU构成异构计算系统,用于处理利用神经网络编程语言编写的人工智能处理器程序,以加快各种机器学习或深度学习算法的处理速度。传统技术中,用户一般利用电子设备调用机器学习库中预设的支持所需功能的算子,或者利用机器学习库中多个预设的支持不同功能的算子进行拼接以实现所需实现的功能。
但是,上述通过调用机器学习库中单个的算子或拼接的算子的方式并不能全面的实现用户所要实现的新的功能,适用范围窄。
发明内容
基于此,有必要针对传统技术中通过调用机器学习库中单个的算子或拼接的算子的方式并不能全面的实现用户所要实现的新的功能,导致适用范围窄的问题,提供一种异构计算系统可执行文件获取方法、运行方法及相关产品。
第一方面,本申请实施例提供一种异构计算系统的可执行文件获取方法,所述异构计算系统包括通用处理器CPU和人工智能处理器,所述法包括:
获取人工智能处理器程序和CPU程序,所述人工智能处理器程序包括入口函数,所述CPU程序包括所述入口函数的标识以及接口函数集合;
对所述人工智能处理器程序进行编译生成第一编译文件,并将所述第一编译文件链接至机器学习库的链接库;
对所述CPU程序进行编译得到第二编译文件,并将所述第二编译文件链接至所述链接库生成所述异构计算系统的可执行文件。
本实施例提供的异构计算系统的可执行文件获取方法,电子设备可以获取人工智能处理器程序和CPU程序,人工智能处理器程序包括入口函数,CPU程序包括入口函数的标识以及接口函数集合;对人工智能处理器程序进行编译生成第一编译文件,并将第一编译文件链接至机器学习库的链接库;对CPU程序进行编译得到第二编译文件,并将第二编译文件链接至链接库生成异构计算系统的可执行文件。本实施例中,电子设备允许用户根据自己所需的功能编写能够实现所需功能的算子对应的人工智能处理器程序,并利用机器学习库中的多个接口函数构成的接口函数集合接收用户输入的人工智能处理器程序所需的数据,从而使得电子设备中的CPU在执行上述可执行文件时,能够调用目标人工智能处理器执行上述人工智能处理器程序,以实现该人工智能处理器程序对应的功能,也即,电子设备允许用户根据所需的功能并借助机器学习库中的接口函数自定义新的算子,解决了现有技术中通过调用机器学习库中单个的算子或拼接的算子的方式不能实现用户所要实现的新的功能的问题,扩大了机器学习库的适用范围。
在其中一个实施例中,所述接口函数集合用于获取运行所述人工智能处理器程序所需的参数。
在其中一个实施例中,所述接口函数集合用于获取运行所述人工智能处理器程序所需的参数,包括:
所述接口函数集合中的初始化声明接口函数用于声明结构体变量;
所述接口函数集合中的输入地址接口函数用于获取所述结构体变量中的输入地址;
所述接口函数集合中的输出地址接口函数用于获取所述结构体变量中的输出地址;
所述接口函数集合中的静态地址接口函数用于获取所述结构体变量中的静态地址;
所述接口函数集合中的常量参数接口函数用于获取所述结构体变量中的常量参数。
在其中一个实施例中,所述接口函数集合还用于获取人工智能处理器程序的标识,所述人工智能处理器程序的标识根据所述接口函数集合获取的所述结构体变量中的参数、所述结构体变量中参数的数量和描述符、以及所述人工智能处理器程序的入口函数的标识得到。
在其中一个实施例中,所述接口函数集合还用于获取人工智能处理器的标识,以使所述人工智能处理器的标识对应的人工智能处理器执行所述人工智能处理器程序。
在其中一个实施例中,所述对所述人工智能处理器程序进行编译生成第一编译文件,并将所述第一编译文件链接至机器学习库的链接库,包括:
获取预设的人工智能编译器和链接器;
根据所述人工智能编译器对所述人工智能处理器程序进行编译,生成第一编译文件;
利用所述链接器将所述编译文件链接至所述链接库。
在其中一个实施例中,所述对所述CPU程序进行编译得到第二编译文件,并将所述第二编译文件链接至所述链接库生成所述异构计算系统的可执行文件,包括:
获取预设的CPU编译器;
根据所述CPU编译器对所述CPU程序进行编译,得到第二编译文件;根据所述链接器将所述第二编译文件链接至所述链接库生成所述异构计算系统的可执行文件。
第二方面,本申请实施例提供一种异构计算系统的运行方法,该方法包括:
获取上述任一实施例所述的可执行文件;
运行所述可执行文件中的初始化声明接口函数、输入地址接口函数、输出地址接口函数、静态地址接口函数和常量参数接口函数,输出所述可执行文件中的人工智能处理器程序运行所需的参数;
根据所述接口函数集合获取的所述结构体变量中的参数、所述结构体变量中参数的数量和描述符、以及所述人工智能处理器程序的入口函数的标识,运行所述可执行文件中的用于获取人工智能处理器程序的标识的接口函数,输出所述人工智能处理器程序的标识;
将所述人工智能处理器程序的标识传输给所述可执行文件中的用于获取人工智能处理器的标识的接口函数,并根据所述用于获取人工智能处理器的标识的接口函数中的人工智能处理器的标识,将所述人工智能处理器程序传输给所述人工智能处理器的标识对应的目标人工智能处理器,以使得所述目标人工智能处理器执行所述人工智能处理器程序。
本实施例提供的异构计算系统的运行方法,电子设备可以上述任一实施例中的可执行文件;运行可执行文件中的初始化声明接口函数、输入地址接口函数、输出地址接口函数、静态地址接口函数和常量参数接口函数,输出可执行文件中的人工智能处理器程序运行所需的参数;根据人工智能处理器程序的标识根据接口函数集合获取的结构体变量中的参数、结构体变量中参数的数量和描述符、以及人工智能处理器程序的入口函数的标识,运行可执行文件中的用于获取人工智能处理器程序的标识的接口函数,输出人工智能处理器程序的标识;将人工智能处理器程序的标识传输给可执行文件中的用于获取人工智能处理器的标识的接口函数,并根据用于获取人工智能处理器的标识的接口函数中的人工智能处理器的标识,将人工智能处理器程序传输给人工智能处理器的标识对应的目标人工智能处理器,以使得目标人工智能处理器执行人工智能处理器程序。本实施例中,电子设备在运行可执行文件时,可以根据可执行文件中的多个接口函数构成的接口函数集合中的人工智能处理器程序所需的数据如入口函数名、输入地址、人工智能处理器程序的标识和人工智能处理器的标识等,调用人工智能处理器的标识对应的目标人工智能处理器执行上述人工智能处理器程序的标识对应的人工智能处理器程序,以实现用户编写的人工智能处理器程序对应的功能,从而,电子设备可以允许用户根据所需的功能并借助机器学习库中的接口函数自定义新的算子,解决了现有技术中通过调用机器学习库中单个的算子或拼接的算子的方式不能实现用户所要实现的新的功能的问题,扩大了机器学习库的适用范围。
第三方面,本申请实施例提供一种异构计算系统的可执行文件获取装置,所述异构计算系统包括通用处理器CPU和人工智能处理器,所述装置包括:
第一获取模块,用于获取人工智能处理器程序和CPU程序,所述人工智能处理器程序包括入口函数,所述CPU程序包括所述入口函数的标识以及接口函数集合;
第一生成模块,用于对所述人工智能处理器程序进行编译生成第一编译文件,并将所述第一编译文件链接至机器学习库的链接库;
第二生成模块,用于对所述CPU程序进行编译得到第二编译文件,并将所述第二编译文件链接至所述链接库生成所述异构计算系统的可执行文件。
在其中一个实施例中,所述接口函数集合用于获取运行所述人工智能处理器程序所需的参数。
在其中一个实施例中,所述接口函数集合用于获取运行所述人工智能处理器程序所需的参数,包括:
所述接口函数集合中的初始化声明接口函数用于声明结构体变量;
所述接口函数集合中的输入地址接口函数用于获取所述结构体变量中的输入地址;
所述接口函数集合中的输出地址接口函数用于获取所述结构体变量中的输出地址;
所述接口函数集合中的静态地址接口函数用于获取所述结构体变量中的静态地址;
所述接口函数集合中的常量参数接口函数用于获取所述结构体变量中的常量参数。
在其中一个实施例中,所述接口函数集合还用于获取人工智能处理器程序的标识,所述人工智能处理器程序的标识根据所述接口函数集合获取的所述结构体变量中的参数、所述结构体变量中参数的数量和描述符、以及所述人工智能处理器程序的入口函数的标识得到。
在其中一个实施例中,所述接口函数集合还用于获取人工智能处理器的标识,以使所述人工智能处理器的标识对应的人工智能处理器执行所述人工智能处理器程序。
在其中一个实施例中,所述第一生成装置包括:
第一获取单元,用于获取预设的人工智能编译器和链接器;
第一生成单元,用于根据所述人工智能编译器对所述人工智能处理器程序进行编译,生成第一编译文件;
第一链接单元,用于利用所述链接器将所述编译文件链接至所述链接库。
在其中一个实施例中,所述第二生成模块包括:
第二获取单元,用于获取预设的CPU编译器;
第二生成单元,用于根据所述CPU编译器对所述CPU程序进行编译,得到第二编译文件;
第二链接单元,用于根据所述链接器将所述第二编译文件链接至所述链接库生成所述异构计算系统的可执行文件。
第四方面,本申请实施例提供一种异构计算系统的运行装置,所述装置包括:
第二获取模块,获取上述任一实施例所述的可执行文件;
第一处理模块,用于运行所述可执行文件中的初始化声明接口函数、输入地址接口函数、输出地址接口函数、静态地址接口函数和常量参数接口函数,输出所述可执行文件中的人工智能处理器程序运行所需的参数;
第二处理模块,用于根据所述接口函数集合获取的所述结构体变量中的参数、所述结构体变量中参数的数量和描述符、以及所述人工智能处理器程序的入口函数的标识,运行所述可执行文件中的用于获取人工智能处理器程序的标识的接口函数,输出所述人工智能处理器程序的标识;
第三处理模块,用于将所述人工智能处理器程序的标识传输给所述可执行文件中的用于获取人工智能处理器的标识的接口函数,并根据所述用于获取人工智能处理器的标识的接口函数中的人工智能处理器的标识,将所述人工智能处理器程序传输给所述人工智能处理器的标识对应的目标人工智能处理器,以使得所述目标人工智能处理器执行所述人工智能处理器程序。
第五方面,本申请实施例提供一种CPU,所述CPU与人工智能处理器构成异构计算系统,所述CPU用于实现所述CPU用于实现如下步骤:
获取人工智能处理器程序和CPU程序,所述人工智能处理器程序包括入口函数,所述CPU程序包括所述入口函数的标识以及接口函数集合;
对所述人工智能处理器程序进行编译生成第一编译文件,并将所述第一编译文件链接至机器学习库的链接库;
对所述CPU程序进行编译得到第二编译文件,并将所述第二编译文件链接至所述链接库生成所述异构计算系统的可执行文件。
所述CPU还用于实现如下步骤:
获取上述任一实施例所述的可执行文件;
运行所述可执行文件中的初始化声明接口函数、输入地址接口函数、输出地址接口函数、静态地址接口函数和常量参数接口函数,输出所述可执行文件中的人工智能处理器程序运行所需的参数;
根据所述接口函数集合获取的所述结构体变量中的参数、所述结构体变量中参数的数量和描述符、以及所述人工智能处理器程序的入口函数的标识,运行所述可执行文件中的用于获取人工智能处理器程序的标识的接口函数,输出所述人工智能处理器程序的标识;
将所述人工智能处理器程序的标识传输给所述可执行文件中的用于获取人工智能处理器的标识的接口函数,并根据所述用于获取人工智能处理器的标识的接口函数中的人工智能处理器的标识,将所述人工智能处理器程序传输给所述人工智能处理器的标识对应的目标人工智能处理器,以使得所述目标人工智能处理器执行所述人工智能处理器程序。
第六方面,本申请实施例提供一种主板,应用于异构计算系统中,所述主板包括:上述实施例所述的CPU、与所述CPU连接的第一存储器、人工智能处理器和与所述人工智能处理器连接的第二存储器;
所述第一存储器用于存储CPU程序和人工智能处理器程序,所述第二存储器用于存储所述人工智能处理器所需的输入数据和输出数据,所述人工智能处理器用于执行所述人工智能处理器程序。
第七方面,本申请实施例提供一种电子设备,其特征在于,应用于异构计算系统中,所述电子设备包括上述实施例所述的主板,所述主板中的CPU用于实现如下步骤:
获取人工智能处理器程序和CPU程序,所述人工智能处理器程序包括入口函数,所述CPU程序包括所述入口函数的标识以及接口函数集合;
对所述人工智能处理器程序进行编译生成第一编译文件,并将所述第一编译文件链接至机器学习库的链接库;
对所述CPU程序进行编译得到第二编译文件,并将所述第二编译文件链接至所述链接库生成所述异构计算系统的可执行文件。
所述CPU还用于实现如下步骤:
获取上述任一实施例所述的可执行文件;
运行所述可执行文件中的初始化声明接口函数、输入地址接口函数、输出地址接口函数、静态地址接口函数和常量参数接口函数,输出所述可执行文件中的人工智能处理器程序运行所需的参数;
根据所述接口函数集合获取的所述结构体变量中的参数、所述结构体变量中参数的数量和描述符、以及所述人工智能处理器程序的入口函数的标识,运行所述可执行文件中的用于获取人工智能处理器程序的标识的接口函数,输出所述人工智能处理器程序的标识;
将所述人工智能处理器程序的标识传输给所述可执行文件中的用于获取人工智能处理器的标识的接口函数,并根据所述用于获取人工智能处理器的标识的接口函数中的人工智能处理器的标识,将所述人工智能处理器程序传输给所述人工智能处理器的标识对应的目标人工智能处理器,以使得所述目标人工智能处理器执行所述人工智能处理器程序。
本实施例提供的异构计算系统的可执行文件获取装置、异构计算系统的运行装置、CPU、主板和电子设备中,电子设备可以获取人工智能处理器程序和CPU程序,人工智能处理器程序包括入口函数,CPU程序包括入口函数的标识以及接口函数集合;对人工智能处理器程序进行编译生成第一编译文件,并将第一编译文件链接至机器学习库的链接库;对CPU程序进行编译得到第二编译文件,并将第二编译文件链接至链接库生成异构计算系统的可执行文件。本实施例中,电子设备允许用户根据自己所需的功能编写能够实现所需功能的算子对应的人工智能处理器程序,并利用机器学习库中的多个接口函数构成的接口函数集合接收用户输入的人工智能处理器程序所需的数据,从而使得电子设备中的CPU在执行上述可执行文件时,能够调用目标人工智能处理器执行上述人工智能处理器程序,以实现该人工智能处理器程序对应的功能,也即,电子设备允许用户根据所需的功能并借助机器学习库中的接口函数自定义新的算子,解决了现有技术中通过调用机器学习库中单个的算子或拼接的算子的方式不能实现用户所要实现的新的功能的问题,扩大了机器学习库的适用范围。
附图说明
图1为一个实施例提供的异构计算系统的结构示意图;
图2为一个实施例提供的异构计算系统可执行文件获取方法的流程示意图;
图3为一个实施例提供的异构计算系统的运行方法的流程示意图;
图4为另一个实施例提供的异构计算系统可执行文件获取方法的流程示意图;
图5为一个实施例提供的异构计算系统可执行文件获取装置结构示意图;
图6为一个实施例提供的异构计算系统的运行装置结构示意图;
图7为一个实施例提供的主板的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本实施例提供的异构计算系统的可执行文件获取方法,可以应用于如图1所示的异构计算系统,该系统可以包括CPU和至少一个人工智能处理器,比如人工智能处理器-1、人工智能处理器-2…人工智能处理器-n等。其中,CPU可以通过一定的指令使得其中一个人工智能处理器执行指定的人工智能处理器程序,以使得CPU和人工智能处理器可以进行并行计算,即CPU可以执行CPU程序,人工智能处理器可以执行人工智能处理器程序,从而CPU和人工智能处理器可以并行完成异构计算。可选的,上述人工智能处理器可以为机器学习处理器MLU、也可以为神经网络处理器,本申请实施例对人工智能处理器的类型并不做限定。
传统技术中,用户一般利用电子设备调用机器学习库中预设的支持所需功能的算子,或者利用机器学习库中多个预设的支持不同功能的算子进行拼接以实现所需实现的功能。但是有时通过调用机器学习库中单个的算子或拼接的算子的方式并不能实现用户所需实现的新的功能,导致传统技术的适用范围较窄。本申请实施例旨在解决传统技术的如上技术问题。
需要说明的是,本申请实施例提供的异构计算系统的可执行文件获取方法和异构计算系统的运行方法,其执行主体可以包含CPU和人工智能处理器的主板,也可以是包含上述主板的电子设备。下述方法实施例中,均以执行主体是电子设备为例来进行说明。
图2为一个实施例提供的异构计算系统的可执行文件获取方法流程示意图。本实施例涉及的是电子设备对获取的CPU程序和人工智能处理器程序进行编译链接以生成可执行文件的实现过程。如图2所示,该方法可以包括:
S201,获取人工智能处理器程序和CPU程序,所述人工智能处理器程序包括入口函数,所述CPU程序包括所述入口函数的标识以及接口函数集合。
具体的,电子设备可以从与该CPU连接的第一存储器获取所需的CPU程序。可选的,上述CPU程序可以为通过C语言、JAVA语言、C++语言等高级语言编写的程序。可选的,上述人工智能处理器程序可以为通过神经网络编程语言编写的程序,进一步的,神经编程语言为用于编写人工智能处理器程序的语言。上述人工智能处理器标识为执行上述人工智能处理器程序的目标人工智能处理器对应的人工智能处理器标识。可选的,上述CPU程序和人工智能处理器程序可以集成在同一个程序中,也可以为两个独立的程序。可选的,上述CPU程序和人工智能处理器程序可以通过预设的指令实现相互调用。可选的,电子设备中的CPU可以利用上述接口函数集合中的各个接口函数实现所需数据的输入和输出,比如可以通过其中一个接口函数输入所需变量的地址,输出一个值为所需变量的地址的输出变量。
上述CPU程序可以为用户根据需要编写的用于调用上述人工智能处理器程序的接口函数集合的程序,电子设备可以允许用户根据该CPU程序中的接口函数集合中的各个接口函数,输入人工智能处理器程序的标识和人工智能处理器的标识等。进一步的,上述人工智能处理器程序的标识可以为一个变量,电子设备还可以允许用户根据上述CPU程序中的接口函数集合中的各个接口函数输入与人工智能处理器程序的标识有关的数据,比如运行该人工智能处理器程序的标识对应的人工智能处理器程序时所需的程序入口。上述人工智能处理器程序可以为用户根据所要实现的功能编写的程序,上述所要实现的功能可以为用户通过电子设备调用机器学习库中单个的算子或拼接的算子的方式不能实现的新的功能。
可选的,上述接口函数集合可以均为机器学习库中的预设的接口函数,用户可以通过电子设备利用机器学习库中其中一个接口函数对应的算子或多个接口函数对应的算子进行拼接,以实现所要实现的功能。
进一步的,上述入口函数为人工智能处理器程序的主函数。可选的,人工智能处理器程序可以包括入口函数对应的主程序和该主程序以外的其它程序,进一步的,入口函数对应的程序和其它程序分别对应不同的程序主体,这样,人工智能处理器程序可以包括入口函数对应的程序的程序主体以及其它程序的程序主体。可选的,上述人工智能处理器标识对应的目标人工智能处理器根据CPU传输的携带人工智能处理器程序的标识的指令执行上述人工智能处理器程序时,从上述入口函数处开始执行上述人工智能处理器程序的标识对应的人工智能处理器程序。
S202,对所述人工智能处理器程序进行编译生成第一编译文件,并将所述第一编译文件链接至机器学习库的链接库。
具体的,上述第一编译文件可以为编译后的不可执行的二进制文件,上述链接库可以为指定的机器学习库中的链接库。上述机器学习库中可以包括支持不同算子的接口函数,从而允许用户通过调用其中的某个算子或将多个算子进行拼接以实现所需实现的功能。进一步的,上述机器学习中包括本申请实施例用到的接口函数集合。CPU可以通过机器学习库中的接口函数向人工智能处理器发送人工智能处理器所需的数据,以使得人工智能处理器可以执行CPU指定的人工智能处理器程序。电子设备可以利用预设的第一编译程序、预设的第一链接程序和/或预设的第一指令对上述人工智能处理器程序进行编译生成第一编译文件,并将该第一编译文件链接至机器学习库的初始链接库。可选的,电子设备可以通过如下步骤生成链接至机器学习库的链接库中的第一编译文件。
S2021,获取预设的人工智能编译器和预设的链接器。
具体的,上述人工智能编译器和预设的链接器可以分别表示可以实现编译功能的程序和可以实现链接功能的程序,如C语言编写的程序或C++编写的程序等。
S2022,根据所述人工智能编译器对所述人工智能处理器程序进行编译,生成第一编译文件。
具体的,电子设备可以利用上述人工智能编译器对上述人工智能处理器程序进行编译,将上述人工智能处理器程序转换成电子设备可以识别的二进制的第一编译文件。
S2023,利用所述链接器将所述编译文件链接至所述链接库。
本步骤中,电子设备可以利用预设的链接器将上述第一编译文件链接至上述链接库中。
通过上述S2021至S2023的步骤,电子设备可以将上述第一编译文件链接至上述链接库中,以方便电子设备根据S203中的步骤将CPU程序链接至链接有第一编译文件的链接库,从而在CPU执行可执行文件时,可以调用人工智能处理器标识对应的人工智能处理器执行上述人工智能处理器程序。
S203,对所述CPU程序进行编译得到第二编译文件,并将所述第二编译文件链接至所述链接库生成所述异构计算系统的可执行文件。
具体的,上述第二编译文件可以为编译后的不可执行的二进制文件。可选的,电子设备可以利用预设的第二编译程序、预设的第二链接程序和/或预设的第二指令对上述CPU程序进行编译链接,以生成第二编译文件,并将第二编译文件与上述链接库进行链接以生成异构计算系统可执行的可执行文件。需要说明的是,在将上述第二编译文件链接至链接库以生成异构计算系统的可执行文件时,此时的链接库已链接有上述第一编译文件。可选的,可执行文件中包括人工智能处理器标识对应的目标人工智能处理器运行人工智能处理器程序所需的数据。可选的,上述第一链接程序和第二链接程序为相同的程序。可选的,电子设备可以如下步骤生成上述可执行文件:
S2031,获取预设的CPU编译器。
本步骤中,CPU编译器可以为能够编译CPU程序的编译程序。
S2032,根据所述CPU编译器对所述CPU程序进行编译,得到第二编译文件。
本步骤中,电子设备可以利用CPU编译器对CPU程序进行编译,将CPU程序编译成二进制的第二编译文件。
S2033,根据所述链接器将所述第二编译文件链接至所述链接库生成所述异构计算系统的可执行文件。
本步骤中,电子设备可以利用上述链接器,将上述第二编译文件和上述链接库进行链接,以将上述CPU程序转换成上述异构计算系统可执行的可执行文件。
通过上述S2031至S2033的步骤,电子设备可以对CPU程序编译链接,以生成上述异构计算系统可执行的可执行文件。
本实施例提供的异构计算系统的可执行文件获取方法,电子设备可以获取人工智能处理器程序和CPU程序,人工智能处理器程序包括入口函数,CPU程序包括入口函数的标识以及接口函数集合;对人工智能处理器程序进行编译生成第一编译文件,并将第一编译文件链接至机器学习库的链接库;对CPU程序进行编译得到第二编译文件,并将第二编译文件链接至链接库生成异构计算系统的可执行文件。本实施例中,电子设备允许用户根据自己所需的功能编写能够实现所需功能的算子对应的人工智能处理器程序,并利用机器学习库中的多个接口函数构成的接口函数集合接收用户输入的人工智能处理器程序所需的数据,从而使得电子设备中的CPU在执行上述可执行文件时,能够调用目标人工智能处理器执行上述人工智能处理器程序,以实现该人工智能处理器程序对应的功能,也即,电子设备允许用户根据所需的功能并借助机器学习库中的接口函数自定义新的算子,解决了现有技术中通过调用机器学习库中单个的算子或拼接的算子的方式不能实现用户所要实现的新的功能的问题,扩大了机器学习库的适用范围。
在一个实施例中,在上述实施例的基础上,上述接口函数集合用于获取运行所述人工智能处理器程序所需的参数。
具体的,上述数为电子设备通过上述接口函数集合输出的运行上述人工智能处理器程序所需的参数。
可选的,上述接口函数集合中的初始化声明接口函数用于声明结构体变量。该初始化声明接口函数可以为用于声明人工智能处理器程序运行所需的结构体变量的接口函数。
可选的,上述接口函数集合中的输入地址接口函数用于获取所述结构体变量中的输入地址。该输入地址接口函数可以为用于将结构体变量中输入变量的输入地址作为输入的接口函数,用户可以通过该输入地址接口函数输入输出变量的地址。
可选的,上述接口函数集合中的输出地址接口函数用于获取所述结构体变量中的输出地址。该输出地址接口函数可以为用于将结构体变量中输出变量的输出地址作为输入的接口函数,用户可以通过该输出地址接口函数输入输出变量的地址。
可选的,上述接口函数集合中的静态地址接口函数用于获取所述结构体变量中的静态地址,该静态地址接口函数可以为用于将结构体变量中静态变量的地址作为输入的接口函数,用户可以该静态地址接口函数输入静态变量的静态地址。可选的,静态地址可以为根据需求设定其对应的存储空间中保存的内容。在一种可能的实现方式中,静态地址可以用于保存神经网络卷积运算中的权值。
可选的,上述接口函数集合中的常量参数接口函数用于获取所述结构体变量中的常量参数,该常量参数接口函数可以为用于将结构体变量中常量参数作为输入的接口函数,用户可以通过该常量参数接口函数输入常量参数。
需要说明的是,本申请实施例对上述初始化声明接口函数对应的具体函数并不做限定,只要能实现对结构体变量的声明即可,不同的机器学习库中初始化声明接口函数可以不同。类似的,对于输入地址接口函数、输出地址接口函数、静态地址接口函数和常量参数接口函数等接口函数对应的具体函数,本实施例也不做限定。
进一步的,上述参数可以包括输入地址、输出地址、静态地址和常量参数。可选的,上述初始化声明接口函数用于声明上述人工智能处理器程序运行所需的结构体变量。可选的,上述初始化声明接口函数可以仅用于声明上述结构体变量,而不需要用户向该接口输入任何数据,即向该接口输入的数据为空。可选的,输入地址接口函数可以用于接收用户输入的输入变量的输入地址,类似的,上述输出地址接口函数可以用于接收用户输入的输出变量的输出地址,静态地址接口函数可以用于接收用户输入的静态变量的静态地址,以及常量参数接口函数可以用于接收用于输入的常量参数。需要说明的是,上述输入变量、输出变量、静态变量和常量参数等可以分别为一个,也可以为多个,对应的地址或常量参数也为一个或多个,例如,输入变量有三个,则每个输入变量对应一个地址,即输入变量对应的地址也有三个。可选的,上述输入变量、输出变量、静态变量和常量参数等中的其中一个或多个也可以为空,即可以不向上述初始化声明接口函数、输入地址接口函数、输出地址接口函数、静态地址接口函数和常量参数接口函数中的其中一个或多个接口函数输入数据。
本实施例提供的异构计算系统的可执行文件获取方法,电子设备可以通过接口函数集合中的初始化声明接口函数、输入地址接口函数、输出地址接口函数、静态地址接口函数和常量参数接口函数等接收用户输入的输入地址、输出地址、静态地址和常量参数等参数,从而可以为需要处理上述人工智能处理器程序的目标人工智能处理器提供运行上述人工智能处理器程序所需的参数,以保证目标人工智能处理器可以正常运行上述人工智能处理器程序。
在其中一个实施例中,在上述实施例的基础上,上述接口函数集合还用于获取人工智能处理器程序的标识,所述人工智能处理器程序的标识根据所述接口函数集合获取的所述结构体变量中的参数、所述结构体变量中参数的数量和描述符、以及所述人工智能处理器程序的入口函数的标识得到。
本实施例中,上述结构体变量中参数的数量可以包括输入变量的数量、输出变量的数量、静态变量的数量和常量参数的数量。上述输入变量、输出变量、静态变量和常量参数等可以用张量表示,上述结构体变量的描述符也即上述张量的描述符,该描述符可以为上述结构体变量中各个变量的数据类型(比如整型、浮点型等)、阶(比如张量是几维的数组)和形状(比如各个维度上的长度)等。可选的,电子设备可以通过接口函数集合中的创建算子接口函数接收用户输入的结构体变量中的参数、上述结构体变量中参数的数量和描述符、以及上述人工智能处理器程序的入口函数的标识。可选的,该入口函数名需要与入口函数的名称相同。可选的,上述接口函数集合中的创建算子接口函数还用于输出上述人工智能处理器程序的标识。
本实施例提供的异构计算系统的可执行文件获取方法,上述接口函数集合可以用于获取人工智能处理器程序的标识,该人工智能处理器程序的标识根据接口函数集合获取的结构体变量中的参数、结构体变量中参数的数量和描述符、以及人工智能处理器程序的入口函数的标识得到。本实施例中,电子设备可以通过接口函数集合获取人工智能处理器程序的标识,这样,上述人工智能处理器的标识对应的目标人工智能处理器可以根据上述人工智能处理器程序的标识标识找到需要执行的人工智能处理器程序以及执行人工智能处理器程序所需的参数等数据,以保证目标人工智能处理器可以正常运行上述人工智能处理器程序。
在其中一个实施例中,在上述实施例的基础上,上述接口函数集合还用于获取人工智能处理器的标识,以使所述人工智能处理器的标识对应的人工智能处理器执行所述人工智能处理器程序。
本实施例中,电子设备可以通过接口函数集合中的调用所述人工智能处理器程序的接口函数获取用户输入的人工智能处理器程序的标识和人工智能处理器的标识,以使得人工智能处理器的标识对应的人工智能处理器可以执行上述人工智能处理器程序。从而保证了人工智能处理器的标识对应的目标人工智能处理器可以利用该人工智能处理器程序实现用户所需实现的功能。
图3为一个实施例提供的异构计算系统的运行方法。本实施例涉及的是电子设备运行上述可执行文件以使得人工智能处理器标识对应的人工智能处理器执行对应的人工智能处理器程序的实现过程。如图3所示,该方法可以包括:
S301,获取上述任一实施例提供的可执行文件。
S302,运行所述可执行文件中的初始化声明接口函数、输入地址接口函数、输出地址接口函数、静态地址接口函数和常量参数接口函数,输出所述可执行文件中的人工智能处理器程序运行所需的参数。
具体的,电子设备在运行上述可执行文件中的初始化声明接口函数时,可以根据该初始化声明接口函数声明一个结构体变量,此时的结构体变量是没有值的,运行初始化声明接口函数时,电子设备可以根据输入地址接口函数中输入的输入变量的输入地址对上述声明的结构体变量赋予输入地址;类似的,运行接口函数中的输出地址接口函数时,电子设备可以根据该输出地址接口函数中输入的输出变量的输出地址对上述声明的结构体变量赋予输出地址;运行静态地址接口函数时,电子设备可以根据该静态地址接口函数中输入的静地址对上述声明的结构体变量赋予静态地址;运行常量参数接口函数时,电子设备可以根据常量参数接口函数中输入的常量参数对上述声明的结构体变量赋予常量参数,这时的结构体变量被赋予的值包括输入地址、输出地址、静态地址和常量参数,也即,此时的结构体变量即为人工智能处理器程序运行所需的参数。
S303,根据所述接口函数集合获取的所述结构体变量中的参数、所述结构体变量中参数的数量和描述符、以及所述人工智能处理器程序的入口函数的标识,运行所述可执行文件中的用于获取人工智能处理器程序的标识的接口函数,输出所述人工智能处理器程序的标识。
具体的,电子设备运行可执行文件中的用于获取人工智能处理器程序的标识的接口函数时,可以根据用于获取人工智能处理器程序的标识的接口函数中输入的上述S302中输入的参数以及该结构体变量中参数的数量和描述符以及人工智能处理器程序的入口函数名,输出人工智能处理器程序的标识,比如该人工智能处理器程序的标识可以为OP。这样,执行上述人工智能处理器程序的人工智能处理器可以根据OP找出需要开始执行的入口函数、所需的参数的具体的值(如输入地址和输出地址等)、结构体变量中参数的数量和描述符等。
S304,将所述人工智能处理器程序的标识传输给所述可执行文件中的用于获取人工智能处理器的标识的接口函数,并根据所述用于获取人工智能处理器的标识的接口函数中的人工智能处理器的标识,将所述人工智能处理器程序传输给所述人工智能处理器的标识对应的目标人工智能处理器,以使得所述目标人工智能处理器执行所述人工智能处理器程序。
具体的,执行完S303后,电子设备可以将S303输出的人工智能处理器程序的标识比如OP传入用于获取人工智能处理器的标识的接口函数中,并根据该用于获取人工智能处理器的标识的接口函数中的人工智能处理器标识确定需要执行上述人工智能处理器程序的人工智能处理器的标识,从而将上述人工智能处理器程序传输给上述人工智能处理器标识对应的目标人工智能处理器,以供该目标人工智能处理器执行上述人工智能处理器程序,从而最终实现该人工智能处理器程序对应的功能。可选的,电子设备还可以接收到目标人工智能处理器执行完上述人工智能处理器程序后返回的是否执行成功的标志,比如1或0,其中,1表示成功,0表示失败。
本实施例提供的异构计算系统的运行方法,电子设备可以上述任一实施例中的可执行文件;运行可执行文件中的初始化声明接口函数、输入地址接口函数、输出地址接口函数、静态地址接口函数和常量参数接口函数,输出可执行文件中的人工智能处理器程序运行所需的参数;根据人工智能处理器程序的标识根据接口函数集合获取的结构体变量中的参数、结构体变量中参数的数量和描述符、以及人工智能处理器程序的入口函数的标识,运行可执行文件中的用于获取人工智能处理器程序的标识的接口函数,输出人工智能处理器程序的标识;将人工智能处理器程序的标识传输给可执行文件中的用于获取人工智能处理器的标识的接口函数,并根据用于获取人工智能处理器的标识的接口函数中的人工智能处理器的标识,将人工智能处理器程序传输给人工智能处理器的标识对应的目标人工智能处理器,以使得目标人工智能处理器执行人工智能处理器程序。本实施例中,电子设备在运行可执行文件时,可以根据可执行文件中的多个接口函数构成的接口函数集合中的人工智能处理器程序所需的数据如入口函数名、输入地址、人工智能处理器程序的标识和人工智能处理器的标识等,调用人工智能处理器的标识对应的目标人工智能处理器执行上述人工智能处理器程序的标识对应的人工智能处理器程序,以实现用户编写的人工智能处理器程序对应的功能,从而,电子设备可以允许用户根据所需的功能并借助机器学习库中的接口函数自定义新的算子,解决了现有技术中通过调用机器学习库中单个的算子或拼接的算子的方式不能实现用户所要实现的新的功能的问题,扩大了机器学习库的适用范围。
为了便于本领域技术人员的理解,以下对本发明提供的异构计算系统的可执行文件获取方法进行详细介绍,如图4所示,该方法可以包括:
S401,电子设备获取CPU程序;所述CPU程序包括所述入口函数的标识以及接口函数集合。处理完S401后,继续执行S406。
S402,电子设备获取人工智能处理器程序,所述人工智能处理器程序包括入口函数。
S403,电子设备获取获取预设的人工智能编译器和链接器。
S404,电子设备根据根据所述人工智能编译器对所述人工智能处理器程序进行编译,生成第一编译文件。
S405,电子设备利用所述链接器将所述编译文件链接至所述链接库。执行完S405后,继续执行S408。
S406,电子设备获取预设的CPU编译器。
S407,电子设备根据所述CPU编译器对所述CPU程序进行编译,得到第二编译文件。
S408,电子设备根据所述链接器将所述第二编译文件链接至所述链接库生成所述异构计算系统的可执行文件。
本实施例提供的异构计算系统可执行文件获取方法的工作原理和技术效果如上述实施例所述,在此不再赘述。
应该理解的是,虽然图2至图4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2至图4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
图5为一个实施例提供的异构计算系统的可执行文件获取装置结构示意图。如图5所示,该装置可以包括第一获取模块10、第一生成模块11和第二生成模块12。
第一获取模块10,用于获取人工智能处理器程序和CPU程序,所述人工智能处理器程序包括入口函数,所述CPU程序包括所述入口函数的标识以及接口函数集合;
第一生成模块11,用于对所述人工智能处理器程序进行编译生成第一编译文件,并将所述第一编译文件链接至机器学习库的链接库;
第二生成模块12,用于对所述CPU程序进行编译得到第二编译文件,并将所述第二编译文件链接至所述链接库生成所述异构计算系统的可执行文件。。
可选的,述接口函数集合用于获取运行所述人工智能处理器程序所需的参数。
可选的,所述接口函数集合中的初始化声明接口函数用于声明结构体变量;所述接口函数集合中的输入地址接口函数用于获取所述结构体变量中的输入地址;所述接口函数集合中的输出地址接口函数用于获取所述结构体变量中的输出地址;所述接口函数集合中的静态地址接口函数用于获取所述结构体变量中的静态地址;所述接口函数集合中的常量参数接口函数用于获取所述结构体变量中的常量参数。
可选的,所述接口函数集合还用于获取人工智能处理器程序的标识,所述人工智能处理器程序的标识根据所述接口函数集合获取的所述结构体变量中的参数、所述结构体变量中参数的数量和描述符、以及所述人工智能处理器程序的入口函数的标识得到。
可选的,所述接口函数集合还用于获取人工智能处理器的标识,以使所述人工智能处理器的标识对应的人工智能处理器执行所述人工智能处理器程序。
本实施例提供的异构计算系统的可执行文件获取装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在另一个实施例提供的异构计算系统的可执行文件获取装置中在上述图5所示实施例的基础上,可选的,上述第一生成模块12可以包括第一获取单元、第一编译单元和第一链接单元。
第一获取单元,用于获取预设的人工智能编译器和预设的链接器;
第一编译单元,用于根据所述人工智能编译器对所述人工智能处理器程序进行编译,生成第一编译文件;
第一链接单元,用于利用所述链接器将所述编译文件链接至所述链接库。
本实施例提供的异构计算系统的可执行文件获取装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在又一个实施例提供的异构计算系统的可执行文件获取装置中,在上述实施例的基础上,可选的,上述第二生成模块13可以包括第二获取单元、第二编译单元和第二链接单元。
第二获取单元,用于获取预设的CPU编译器;
第二编译单元,用于根据所述CPU编译器对所述CPU程序进行编译,得到第二编译文件;
第二链接单元,用于根据所述链接器将所述第二编译文件链接至所述链接库生成所述异构计算系统的可执行文件。
本实施例提供的异构计算系统的可执行文件获取装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
图6为一个实施例提供的异构计算系统的运行装置结构示意图。如图6所示,该装置可以包括:第二获取模块20、第一处理模块21、第二处理模块22和第三处理模块23。
第二获取模块20,用于获取上述任一实施例所述的可执行文件;
第一处理模块21,用于运行所述可执行文件中的初始化声明接口函数、输入地址接口函数、输出地址接口函数、静态地址接口函数和常量参数接口函数,输出所述可执行文件中的人工智能处理器程序运行所需的参数;
第二处理模块22,用于根据所述接口函数集合获取的所述结构体变量中的参数、所述结构体变量中参数的数量和描述符、以及所述人工智能处理器程序的入口函数的标识,运行所述可执行文件中的用于获取人工智能处理器程序的标识的接口函数,输出所述人工智能处理器程序的标识;
第三处理模块23,用于将所述人工智能处理器程序的标识传输给所述可执行文件中的用于获取人工智能处理器的标识的接口函数,并根据所述用于获取人工智能处理器的标识的接口函数中的人工智能处理器的标识,将所述人工智能处理器程序传输给所述人工智能处理器的标识对应的目标人工智能处理器,以使得所述目标人工智能处理器执行所述人工智能处理器程序。
本实施例提供的异构计算系统的运行装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。
在其中一个实施例中,提供一种CPU,所述CPU与人工智能处理器构成异构计算系统,所述CPU用于实现如下步骤:
获取人工智能处理器程序和CPU程序,所述人工智能处理器程序包括入口函数,所述CPU程序包括所述入口函数的标识以及接口函数集合;
对所述人工智能处理器程序进行编译生成第一编译文件,并将所述第一编译文件链接至机器学习库的链接库;
对所述CPU程序进行编译得到第二编译文件,并将所述第二编译文件链接至所述链接库生成所述异构计算系统的可执行文件。
所述CPU还用于实现如下步骤:
获取如权利要求1-7中任一项方法所述的可执行文件;
运行所述可执行文件中的初始化声明接口函数、输入地址接口函数、输出地址接口函数、静态地址接口函数和常量参数接口函数,输出所述可执行文件中的人工智能处理器程序运行所需的参数;
根据所述接口函数集合获取的所述结构体变量中的参数、所述结构体变量中参数的数量和描述符、以及所述人工智能处理器程序的入口函数的标识,运行所述可执行文件中的用于获取人工智能处理器程序的标识的接口函数,输出所述人工智能处理器程序的标识;
将所述人工智能处理器程序的标识传输给所述可执行文件中的用于获取人工智能处理器的标识的接口函数,并根据所述用于获取人工智能处理器的标识的接口函数中的人工智能处理器的标识,将所述人工智能处理器程序传输给所述人工智能处理器的标识对应的目标人工智能处理器,以使得所述目标人工智能处理器执行所述人工智能处理器程序。
图7为一个实施例提供的主板的结构示意图。该主板应用于异构计算系统中,所述主板包括:上述实施例所述的CPU、与所述CPU连接的第一存储器、人工智能处理器和与所述人工智能处理器连接的第二存储器;
所述第一存储器用于存储CPU程序和人工智能处理器程序,所述第二存储器用于存储所述人工智能处理器所需的输入数据和输出数据,所述人工智能处理器用于执行所述人工智能处理器程序。
在一个实施例中,提供了一种电子设备,该电子设备应用于异构计算系统中,该电子设备包括主板。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过电子设备程序来指令相关的硬件来完成,所述的电子设备程序可存储于一非易失性电子设备可读取存储介质中,该电子设备程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (16)
1.一种异构计算系统的可执行文件获取方法,其特征在于,所述异构计算系统包括通用处理器CPU和人工智能处理器,所述方法包括:
获取人工智能处理器程序和CPU程序,所述人工智能处理器程序包括入口函数,所述CPU程序包括所述入口函数的标识以及接口函数集合;所述接口函数集合用于获取运行所述人工智能处理器程序所需的参数;所述CPU程序为用户根据需要编写的用于调用所述人工智能处理器程序的接口函数集合的程序;所述接口函数集合包含初始化声明接口函数、输入地址接口函数、输出地址接口函数、静态地址接口函数、常量参数接口函数;
其中,所述接口函数集合中的初始化声明接口函数用于声明结构体变量;
所述接口函数集合中的输入地址接口函数用于获取所述结构体变量中的输入地址;
所述接口函数集合中的输出地址接口函数用于获取所述结构体变量中的输出地址;
所述接口函数集合中的静态地址接口函数用于获取所述结构体变量中的静态地址;
所述接口函数集合中的常量参数接口函数用于获取所述结构体变量中的常量参数;
对所述人工智能处理器程序进行编译生成第一编译文件,并将所述第一编译文件链接至机器学习库的链接库;所述机器学习库中包括支持不同算子的接口函数,以及所述接口函数集合;
对所述CPU程序进行编译得到第二编译文件,并将所述第二编译文件链接至所述链接库生成所述异构计算系统的可执行文件。
2.根据权利要求1所述的方法,其特征在于,所述接口函数集合还用于获取人工智能处理器程序的标识,所述人工智能处理器程序的标识根据所述接口函数集合获取的所述结构体变量中的参数、所述结构体变量中参数的数量和描述符、以及所述人工智能处理器程序的入口函数的标识得到。
3.根据权利要求2所述的方法,其特征在于,所述接口函数集合还用于获取人工智能处理器的标识,以使所述人工智能处理器的标识对应的人工智能处理器执行所述人工智能处理器程序。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述对所述人工智能处理器程序进行编译生成第一编译文件,并将所述第一编译文件链接至机器学习库的链接库,包括:
获取预设的人工智能编译器和链接器;
根据所述人工智能编译器对所述人工智能处理器程序进行编译,生成第一编译文件;
利用所述链接器将所述编译文件链接至所述链接库。
5.根据权利要求4所述的方法,其特征在于,所述对所述CPU程序进行编译得到第二编译文件,并将所述第二编译文件链接至所述链接库生成所述异构计算系统的可执行文件,包括:
获取预设的CPU编译器;
根据所述CPU编译器对所述CPU程序进行编译,得到第二编译文件;
根据所述链接器将所述第二编译文件链接至所述链接库生成所述异构计算系统的可执行文件。
6.一种异构计算系统的运行方法,其特征在于,所述方法包括:
获取如权利要求1-5中任一项方法所述的可执行文件;
运行所述可执行文件中的初始化声明接口函数、输入地址接口函数、输出地址接口函数、静态地址接口函数和常量参数接口函数,输出所述可执行文件中的人工智能处理器程序运行所需的参数;
根据所述接口函数集合获取的所述结构体变量中的参数、所述结构体变量中参数的数量和描述符、以及所述人工智能处理器程序的入口函数的标识,运行所述可执行文件中的用于获取人工智能处理器程序的标识的接口函数,输出所述人工智能处理器程序的标识;
将所述人工智能处理器程序的标识传输给所述可执行文件中的用于获取人工智能处理器的标识的接口函数,并根据所述用于获取人工智能处理器的标识的接口函数中的人工智能处理器的标识,将所述人工智能处理器程序传输给所述人工智能处理器的标识对应的目标人工智能处理器,以使得所述目标人工智能处理器执行所述人工智能处理器程序。
7.一种异构计算系统的可执行文件获取装置,其特征在于,所述异构计算系统包括通用处理器CPU和人工智能处理器,所述装置包括:
第一获取模块,用于获取人工智能处理器程序和CPU程序,所述人工智能处理器程序包括入口函数,所述CPU程序包括所述入口函数的标识以及接口函数集合;所述接口函数集合用于获取运行所述人工智能处理器程序所需的参数;所述CPU程序为用户根据需要编写的用于调用所述人工智能处理器程序的接口函数集合的程序;所述接口函数集合包含初始化声明接口函数、输入地址接口函数、输出地址接口函数、静态地址接口函数、常量参数接口函数;
其中,所述接口函数集合中的初始化声明接口函数用于声明结构体变量;
所述接口函数集合中的输入地址接口函数用于获取所述结构体变量中的输入地址;
所述接口函数集合中的输出地址接口函数用于获取所述结构体变量中的输出地址;
所述接口函数集合中的静态地址接口函数用于获取所述结构体变量中的静态地址;
所述接口函数集合中的常量参数接口函数用于获取所述结构体变量中的常量参数;
第一生成模块,用于对所述人工智能处理器程序进行编译生成第一编译文件,并将所述第一编译文件链接至机器学习库的链接库;所述机器学习库中包括支持不同算子的接口函数,以及所述接口函数集合;
第二生成模块,用于对所述CPU程序进行编译得到第二编译文件,并将所述第二编译文件链接至所述链接库生成所述异构计算系统的可执行文件。
8.根据权利要求7所述的装置,其特征在于,所述接口函数集合用于获取运行所述人工智能处理器程序所需的参数,包括:
所述接口函数集合中的初始化声明接口函数用于声明结构体变量;
所述接口函数集合中的输入地址接口函数用于获取所述结构体变量中的输入地址;
所述接口函数集合中的输出地址接口函数用于获取所述结构体变量中的输出地址;
所述接口函数集合中的静态地址接口函数用于获取所述结构体变量中的静态地址;
所述接口函数集合中的常量参数接口函数用于获取所述结构体变量中的常量参数。
9.根据权利要求8所述的装置,其特征在于,所述接口函数集合还用于获取人工智能处理器程序的标识,所述人工智能处理器程序的标识根据所述接口函数集合获取的所述结构体变量中的参数、所述结构体变量中参数的数量和描述符、以及所述人工智能处理器程序的入口函数的标识得到。
10.根据权利要求9所述的装置,其特征在于,所述接口函数集合还用于获取人工智能处理器的标识,以使所述人工智能处理器的标识对应的人工智能处理器执行所述人工智能处理器程序。
11.根据权利要求7-10任一项所述的装置,其特征在于,所述第一生成装置包括:
第一获取单元,用于获取预设的人工智能编译器和链接器;
第一生成单元,用于根据所述人工智能编译器对所述人工智能处理器程序进行编译,生成第一编译文件;
第一链接单元,用于利用所述链接器将所述编译文件链接至所述链接库。
12.根据权利要求11所述的装置,其特征在于,所述第二生成模块包括:
第二获取单元,用于获取预设的CPU编译器;
第二生成单元,用于根据所述CPU编译器对所述CPU程序进行编译,得到第二编译文件;
第二链接单元,用于根据所述链接器将所述第二编译文件链接至所述链接库生成所述异构计算系统的可执行文件。
13.一种异构计算系统的运行装置,其特征在于,所述装置包括:
第二获取模块,获取如权利要求1-5中任一项方法所述的可执行文件;
第一处理模块,用于运行所述可执行文件中的初始化声明接口函数、输入地址接口函数、输出地址接口函数、静态地址接口函数和常量参数接口函数,输出所述可执行文件中的人工智能处理器程序运行所需的参数;
第二处理模块,用于根据所述接口函数集合获取的所述结构体变量中的参数、所述结构体变量中参数的数量和描述符、以及所述人工智能处理器程序的入口函数的标识,运行所述可执行文件中的用于获取人工智能处理器程序的标识的接口函数,输出所述人工智能处理器程序的标识;
第三处理模块,用于将所述人工智能处理器程序的标识传输给所述可执行文件中的用于获取人工智能处理器的标识的接口函数,并根据所述用于获取人工智能处理器的标识的接口函数中的人工智能处理器的标识,将所述人工智能处理器程序传输给所述人工智能处理器的标识对应的目标人工智能处理器,以使得所述目标人工智能处理器执行所述人工智能处理器程序。
14.一种CPU,其特征在于,所述CPU与人工智能处理器构成异构计算系统,所述CPU用于实现如权利要求1-5任一项所述的可执行文件获取方法的步骤和如权利要求6所述的异构计算系统的运行方法的步骤。
15.一种主板,其特征在于,应用于异构计算系统中,所述主板包括:如权利要求14所述的CPU、与所述CPU连接的第一存储器、人工智能处理器和与所述人工智能处理器连接的第二存储器;
所述第一存储器用于存储CPU程序和人工智能处理器程序,所述第二存储器用于存储所述人工智能处理器所需的输入数据和输出数据,所述人工智能处理器用于执行所述人工智能处理器程序。
16.一种电子设备,其特征在于,应用于异构计算系统中,所述电子设备包括如权利要求15所述的主板。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811535069.9A CN109656566B (zh) | 2018-12-14 | 2018-12-14 | 异构计算系统可执行文件获取方法、运行方法及相关产品 |
US16/711,252 US11288050B2 (en) | 2018-12-14 | 2019-12-11 | Method for acquiring executable file of heterogeneous computing system, method for running the heterogeneous computing system and related products |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811535069.9A CN109656566B (zh) | 2018-12-14 | 2018-12-14 | 异构计算系统可执行文件获取方法、运行方法及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109656566A CN109656566A (zh) | 2019-04-19 |
CN109656566B true CN109656566B (zh) | 2020-01-10 |
Family
ID=66113414
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811535069.9A Active CN109656566B (zh) | 2018-12-14 | 2018-12-14 | 异构计算系统可执行文件获取方法、运行方法及相关产品 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11288050B2 (zh) |
CN (1) | CN109656566B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110018831B (zh) * | 2019-04-04 | 2022-11-08 | 中科寒武纪科技股份有限公司 | 程序处理方法、装置及计算机可读存储介质 |
CN112347027A (zh) * | 2019-08-09 | 2021-02-09 | 安徽寒武纪信息科技有限公司 | 数据同步方法及装置以及相关产品 |
CN112394906B (zh) * | 2019-08-15 | 2022-10-25 | 华为技术有限公司 | 一种应用切换运行的方法及设备 |
CN110865814B (zh) * | 2019-10-30 | 2021-11-16 | 上海天数智芯半导体有限公司 | 一种支持异构计算核架构的编译器实现方法和系统 |
CN113031956A (zh) * | 2019-12-25 | 2021-06-25 | 中科寒武纪科技股份有限公司 | 程序编译方法和装置以及程序运行方法和装置 |
CN111580826B (zh) * | 2020-04-30 | 2021-08-06 | 腾讯科技(深圳)有限公司 | 机器学习模型的编译优化方法和装置 |
CN111580828B (zh) * | 2020-04-30 | 2021-08-27 | 腾讯科技(深圳)有限公司 | 机器学习模型的编译优化方法和装置 |
CN116991428B (zh) * | 2023-09-28 | 2023-12-15 | 飞腾信息技术有限公司 | 一种编译方法、装置、编译器、计算设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239315A (zh) * | 2017-04-11 | 2017-10-10 | 北京深鉴智能科技有限公司 | 面向神经网络异构计算平台的编程模型 |
CN108765257A (zh) * | 2017-04-09 | 2018-11-06 | 英特尔公司 | 粗糙粒度一致性 |
CN108874727A (zh) * | 2018-05-29 | 2018-11-23 | 中国人民解放军国防科技大学 | 一种面向gpdsp的多核并行计算实现方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102741828B (zh) * | 2009-10-30 | 2015-12-09 | 英特尔公司 | 对计算机平台的异构处理器的双向通信支持 |
US10530838B1 (en) * | 2015-06-12 | 2020-01-07 | Youprogram Software Solutions Inc. | System oriented programming and implementation infrastructure, system and method |
US10664766B2 (en) * | 2016-01-27 | 2020-05-26 | Bonsai AI, Inc. | Graphical user interface to an artificial intelligence engine utilized to generate one or more trained artificial intelligence models |
US10684849B2 (en) * | 2017-09-08 | 2020-06-16 | Devfactory Innovations Fz-Llc | Automating generation of library suggestion engine models |
US20190286973A1 (en) * | 2018-03-14 | 2019-09-19 | Microsoft Technology Licensing, Llc | Hardware accelerated neural network subgraphs |
-
2018
- 2018-12-14 CN CN201811535069.9A patent/CN109656566B/zh active Active
-
2019
- 2019-12-11 US US16/711,252 patent/US11288050B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108765257A (zh) * | 2017-04-09 | 2018-11-06 | 英特尔公司 | 粗糙粒度一致性 |
CN107239315A (zh) * | 2017-04-11 | 2017-10-10 | 北京深鉴智能科技有限公司 | 面向神经网络异构计算平台的编程模型 |
CN108874727A (zh) * | 2018-05-29 | 2018-11-23 | 中国人民解放军国防科技大学 | 一种面向gpdsp的多核并行计算实现方法 |
Also Published As
Publication number | Publication date |
---|---|
US20200192649A1 (en) | 2020-06-18 |
US11288050B2 (en) | 2022-03-29 |
CN109656566A (zh) | 2019-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109656566B (zh) | 异构计算系统可执行文件获取方法、运行方法及相关产品 | |
CN111752571A (zh) | 程序升级方法、装置、设备及存储介质 | |
US10908885B2 (en) | Quantum compiler | |
EP3134810A1 (en) | Dependency-driven co-specialization of specialized classes | |
CN109032631B (zh) | 应用程序补丁包获取方法、装置、计算机设备及存储介质 | |
US20090228904A1 (en) | Declarative support for asynchronous methods | |
CN111324396A (zh) | 一种区块链智能合约执行方法、装置及设备 | |
CN111190584B (zh) | Ehis-db系统版本发布方法、装置、计算机设备和存储介质 | |
CN110347588B (zh) | 软件验证方法、装置、计算机设备和存储介质 | |
US10496433B2 (en) | Modification of context saving functions | |
CN108121285B (zh) | 基于连续功能图的应用软件协同编译方法及装置 | |
Gardner et al. | Characterizing the challenges and evaluating the efficacy of a CUDA-to-OpenCL translator | |
CN110018831B (zh) | 程序处理方法、装置及计算机可读存储介质 | |
Gosmann et al. | Automatic optimization of the computation graph in the Nengo neural network simulator | |
Ferrara et al. | CIL to Java-bytecode translation for static analysis leveraging | |
CN108460276B (zh) | 一种安卓安装包的动态链接库so文件的处理方法和装置 | |
Sotomayor et al. | Aki: Automatic kernel identification and annotation tool based on c++ attributes | |
Ghiglio et al. | Improving performance of SYCL applications on CPU architectures using LLVM-directed compilation flow | |
CN114860204A (zh) | 程序处理、运行方法、装置、终端、智能卡及存储介质 | |
Saidi et al. | A method for parallel scheduling of multi-rate co-simulation on multi-core platforms | |
CN108549585B (zh) | 修改应用数据的方法、应用测试方法和装置 | |
CN113254020A (zh) | 固件自动编译打包的系统及方法 | |
Fernández et al. | A data flow language to develop high performance computing dsls | |
CN112860228B (zh) | 一种本征值求解方法、装置、计算机设备及存储介质 | |
Pereda et al. | Static loop parallelization decision using template metaprogramming |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing Applicant after: Zhongke Cambrian Technology Co., Ltd Address before: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing Applicant before: Beijing Zhongke Cambrian Technology Co., Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |