Nothing Special   »   [go: up one dir, main page]

CN107239315B - 面向神经网络异构计算平台的编程模型 - Google Patents

面向神经网络异构计算平台的编程模型 Download PDF

Info

Publication number
CN107239315B
CN107239315B CN201710231894.9A CN201710231894A CN107239315B CN 107239315 B CN107239315 B CN 107239315B CN 201710231894 A CN201710231894 A CN 201710231894A CN 107239315 B CN107239315 B CN 107239315B
Authority
CN
China
Prior art keywords
neural network
file
host
specific processor
application specific
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
CN201710231894.9A
Other languages
English (en)
Other versions
CN107239315A (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.)
Xilinx Inc
Original Assignee
Xilinx Inc
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 Xilinx Inc filed Critical Xilinx Inc
Priority to CN201710231894.9A priority Critical patent/CN107239315B/zh
Publication of CN107239315A publication Critical patent/CN107239315A/zh
Priority to PCT/CN2018/079954 priority patent/WO2018188463A1/zh
Priority to US15/949,150 priority patent/US10732943B2/en
Application granted granted Critical
Publication of CN107239315B publication Critical patent/CN107239315B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • G06N3/105Shells for specifying net layout
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)

Abstract

本公开提供一种面向神经网络异构计算平台的编程模型。具体地说,本公开提出一种异构计算平台的编译方法和系统及其程序运行支持方法和系统。训练后的神经网络模型输入到神经网络(NN)优化编译器,生成与神经网络对应的NN汇编文件。NN汇编文件输入到NN汇编器,生成与神经网络对应的NN二进制文件。使用主机编译器工具链编译和汇编用户用高级语言开发的神经网络应用程序,依次生成相应的主机汇编文件和主机二进制文件。使用主机链接器链接NN二进制文件和主机二进制文件,以生成单一的混合链接可执行文件。本发明的技术方案具有计算性能好、可扩展性强、兼容性强、灵活度高等特点。

Description

面向神经网络异构计算平台的编程模型
技术领域
本发明涉及异构计算平台与神经网络,更具体涉及面向神经网络异构计算平台的编程模型。
背景技术
人工智能近年得到迅速发展,极大地影响了人们的生活,世界各国都给予了高度的重视,并进行大规模研发投入。人工神经网络是人工智能应用的核心。深度学习神经网络算法是最常见的一种人工神经网络模型。它的工作负载特征是计算密集(乘加操作为G量级)和数据密集(参数为M至数百M字节)。基于传统通用处理器CPU的计算平台并不能很好地满足性能要求。近几年,以NVIDIA GPU为代表的加速神经网络计算的异构平台变得流行起来。CUDA SDK提供的编译工具链和开发包简化了用户在CPU+GPU异构环境下的应用开发。随着FPGA以及各种深度学习专用芯片ASIC(如谷歌TPU)等更具性价比的加速方案不断涌现,解决好CPU+FPGA/ASIC异构计算平台面临的以下问题变得迫切:
1.基于流行C/C++高级语言的可编程性
2.降低神经网络应用的开发门槛、提供编程效率
3.优化神经网络结构、编译生成高效的计算指令
4.提高数据复用、减少CPU与FPGA/ASIC之间的数据移动
因此,需要一种面向神经网络异构计算平台的编程模型,有效解决CPU+神经网络专用处理器的异构环境下神经网络应用的开发、编译、部署和运行阶段面临的各种困难。
发明内容
根据以上的讨论,本发明主要关注面向神经网络异构计算平台上的一系列高效编译和运行时支持技术。更具体地说,本发明的目的在于提供一种面向神经网络异构计算平台的编程模型,从而创新性地有效解决CPU+神经网络专用处理器异构环境下神经网络应用的开发、编译、部署和运行阶段面临的各种困难。
为实现上述目的,根据本发明的第一方面,提供一种异构计算平台的编译方法,包括:将训练后的神经网络模型输入到神经网络(NN)优化编译器,生成与神经网络对应的NN汇编文件;将NN汇编文件输入到NN汇编器,生成与神经网络对应的NN二进制文件;使用主机编译器工具链编译和汇编用户用高级语言开发的神经网络应用程序,依次生成相应的主机汇编文件和主机二进制文件;使用主机链接器链接NN二进制文件和主机二进制文件,以生成单一的混合链接可执行文件。
根据本发明第一方面的异构计算平台的编译方法,优选地,所述的二进制文件是ELF二进制文件,所述的单一的混合链接可执行文件是单一的混合链接ELF可执行文件。
根据本发明第一方面的异构计算平台的编译方法,优选地,所述高级语言是C/C++。
根据本发明第一方面的异构计算平台的编译方法,优选地,所述的单一的混合链接可执行文件包括:ELF标准可执行文件部分和NN扩展部分。ELF标准可执行文件部分进一步包括:ELF文件头,段表,代码段,数据段。NN扩展部分进一步包括:NN头,代码段,数据段。
根据本发明的第二方面,提供一种异构计算平台的程序运行支持方法,包括:用户通过调用神经网络专用处理器开发库的高级语言应用编程接口(API),实现神经网络专用处理器内核的初始化操作和运行时的控制;启动根据本发明第一方面的异构计算平台的编译方法所得到的混合链接可执行文件;所述可执行文件中的主机的代码段和数据段被操作系统的标准加载器加载到主机的内存空间;所述可执行文件中的神经网络专用处理器的代码段和数据段被神经网络专用处理器加载器加载到神经网络专用处理器的内存空间;主机代码段中的指令和神经网络专用处理器代码段中的指令按照神经网络应用设定的顺序串行执行。
根据本发明的第三方面,提供一种异构计算平台的编译系统,包括:神经网络(NN)优化编译器,用于接收训练后的神经网络模型,生成与神经网络对应的NN汇编文件;NN汇编器,用于接收NN汇编文件,生成与神经网络对应的NN二进制文件;主机编译器,用于编译用户用高级语言开发的神经网络应用程序,生成相应的主机汇编文件;主机汇编器,用于汇编主机汇编文件,生成主机二进制文件;主机链接器,用于链接NN二进制文件和主机二进制文件,以生成单一的混合链接可执行文件。
根据本发明第三方面的异构计算平台的编译系统,优选地,所述的二进制文件是ELF二进制文件,所述的单一的混合链接可执行文件是单一的混合链接ELF可执行文件。
根据本发明第三方面的异构计算平台的编译系统,优选地,所述高级语言是C/C++。
根据本发明第三方面的异构计算平台的编译系统,优选地,所述的单一的混合链接可执行文件包括:ELF标准可执行文件部分和NN扩展部分。ELF标准可执行文件部分进一步包括:ELF文件头,段表,代码段,数据段。NN扩展部分进一步包括:NN头,代码段,数据段。
根据本发明的第四方面,提供一种异构计算平台的程序运行支持系统,包括:主机;神经网络专用处理器;神经网络应用程序;神经网络专用处理器开发库,用于封装神经网络专用处理器的各种高级语言应用编程接口,以便提供给用户开发神经网络应用时调用,实现神经网络专用处理器内核的初始化操作和运行时的控制;根据本发明第三方面的异构计算平台的编译系统,用于生成混合链接可执行文件;操作系统的标准加载器,用于将所述可执行文件中的主机的代码段和数据段加载到主机的内存空间;神经网络专用处理器加载器,用于将所述可执行文件中的神经网络专用处理器的代码段和数据段加载到神经网络专用处理器的内存空间;主机操作系统;神经网络专用处理器驱动程序,用于与主机操作系统相配合,使主机代码段中的指令和神经网络专用处理器代码段中的指令按照神经网络应用设定的顺序串行执行。
本发明的技术方案具有计算性能好、可扩展性强、兼容性强、灵活度高等特点。
附图说明
下面参考附图结合实施例说明本发明。在附图中:
图1是CPU+神经网络专用处理器异构计算平台混合编译模型;
图2是根据本发明的第一实施例的异构计算平台的编译方法的流程图;
图3是CPU+神经网络专用处理器混合链接ELF可执行文件的示意图;
图4是根据本发明的第二实施例的异构计算平台的程序运行支持模型。
具体实施方式
附图仅用于示例说明,不能理解为对本专利的限制;下面结合附图和实施例对本发明的技术方案做进一步的说明。
与单一计算平台(即只有主机或CPU的计算平台)相比,本发明还包括了以下的功能部件:1)神经网络优化编译器;2)NN汇编器;3)CPU+神经网络专用处理器异构混合(hybrid)链接ELF(Executable and Linking Format)可执行文件;4)神经网络专用处理器驱动程序;5)运行时神经网络专用处理器加载器(Loader);6)神经网络专用处理器开发库(Library)。
本领域技术人员应当理解,本申请中所使用的术语“神经网络专用处理器”,也可简称为“神经网络处理器”或“NN处理器”。由于深度学习是神经网络技术中目前最为流行的一个技术分类,因此神经网络专用处理器可以被实现为深度学习专用处理器或深度学习处理器。但是,本领域技术人员应该明白,神经网络还有其他的技术分支,例如深度神经网络(DNN,Deep Neutral Network),因此神经网络专用处理器也可以被实现为深度神经网络专用处理器或深度神经网络处理器(DNN处理器)。也就是说,有关“深度学习处理器”或“深度神经网络处理器”在异构计算平台中的编译和运行支持方面的技术也在本发明的范围之内。
如下面参考图1所述的内容中所提到的,上述的功能部件1)、2)、3)提供神经网络在CPU+神经网络专用处理器异构平台上的编译支持,即涉及本发明的第一实施例。如下面参考图4所述的内容中所提到的,功能部件4)、5)、6)为CPU+神经网络专用处理器异构神经网络应用提供相关程序运行支持,即涉及本发明的第二实施例。
第一实施例:
下面,将首先结合图1来描述第一实施例中的组成部件的功能。
图1是CPU+神经网络专用处理器异构计算平台混合编译模型。
在图1中,神经网络(Neural Network,可简称为NN)优化编译器(或称为“NN优化编译器”)以神经网络模型为输入,通过分析网络的拓扑结构获取模型中控制流和数据流信息,以此为基础在模型上施加各种优化变换技术。具体地说,该编译器合并神经网络模型中不同网络层之间的计算操作、降低计算强度。对于结构化和非结构化稀疏网络,该编译器将消除稀疏值带来的不必要计算和数据移动。此外,该编译器将充分复用神经网络专用处理器片上内存中存放的网络参数和特征图(feature map)数值,降低访存带宽需求,从而减少功耗。该编译器输出NN汇编文件到NN汇编器。
NN汇编器接收来自NN优化编译器的NN汇编文件。接收到的NN汇编文件(汇编指令)被NN汇编器转换而生成对应的二进制机器编码。此后,神经网络专用处理器的机器编码和数据被集成在一起生成标准格式的ELF二进制文件。
主机链接器用于生成CPU+神经网络专用处理器异构混合链接ELF可执行文件。在本发明的优选实施例中,可以扩展ELF可执行文件的格式,增加神经网络专用处理器的支持。具体地说,把神经网络专用处理器和主机两种ELF二进制文件链接在一起,生成单一可执行文件(ELF可执行文件),方便神经网络应用程序的部署和运行。图1中,神经网络专用处理器和主机ELF二进制文件都被示出为ELF object文件。图3给出了CPU+神经网络专用处理器混合链接ELF可执行文件的一个示例,下文将进一步详细描述。
主机链接器所使用的主机ELF二进制文件是通过主机编译器对C/C++神经网络程序进行编译,通过主机汇编器对生成的主机汇编文件进行汇编而得到的。其中,主机编译器、主机汇编器、主机链接器都是单一计算平台的编译模型中已有的功能部件。
下面从方法步骤的角度来进一步描述根据本发明第一实施例的编译模型的工作状态。
图2是根据本发明的第一实施例的异构计算平台的编译方法的流程图。
如图2中所示,根据本发明的第一实施例的异构计算平台的编译方法200开始于步骤S201。在该步骤S201,将训练后的神经网络模型输入到NN优化编译器,生成与神经网络对应的NN汇编文件。
在步骤S203,将NN汇编文件输入到NN汇编器,生成与神经网络对应的NN二进制文件。
在步骤S205,使用主机编译器工具链编译和汇编用户用高级语言开发的神经网络应用程序,依次生成相应的主机汇编文件和主机二进制文件。
在本发明的优选实施例中,以及参考图1的描述,将以上提到的高级语言都具体化为C/C++。本领域技术人员应该理解,C/C++是本领域中典型且常用的高级语言,从而使本发明的可编程性得到提升。但是,本领域技术人员也应该理解,这里所述的高级语言也可以是除了C/C++以外的其他高级语言,例如,包括但不限于:Java、Pascal、Python、Perl等等面向对象的高级语言或可能在本发明之前的编程平台上典型或常用,也可能在本发明的发明人所能预见到的未来的编程平台上典型或常用的其他高级语言。
在步骤S207,使用主机链接器链接NN二进制文件和主机二进制文件,以生成单一的混合链接可执行文件。
在本发明的优选实施例中,以及参考图1的描述,将以上提到的二进制文件都具体化为ELF二进制文件(或称为ELF文件)。本领域技术人员应该理解,ELF(Executable andLinking Format)文件使用典型且常用的标准文件格式,从而使本发明的可编程性得到提升。但是,本领域技术人员也应该理解,这里所述的二进制文件也可以是除了ELF文件以外的其他文件格式,其可能在本发明之前的编程平台上典型或常用,也可能在本发明的发明人所能预见到的未来的编程平台上典型或常用。
此外,在本发明的优选实施方式中,在步骤S207生成的单一的混合链接可执行文件可以是单一的混合链接ELF可执行文件。图3给出了这样的一种示例。
图3是CPU+神经网络专用处理器混合链接ELF可执行文件的示意图。如图3所示,在步骤S207所生成的单一的混合链接可执行文件可以包括两个部分:ELF标准可执行文件部分和NN扩展部分。其中,ELF标准可执行文件部分与普通可执行文件一样,其进一步包括:ELF文件头(图3示为“ELF Header”),段表(图3示为“Section Header Table”),代码段(图3示为“.text”),数据段(图3示为“.data”)。NN扩展部分是对ELF标准可执行文件部分的扩展,其与ELF标准可执行文件部分链接在一起,进一步包括:NN头(图3示为“NN Header”),代码段(图3示为“.text”),数据段(图3示为“.data”)。
尽管在图3中,NN扩展部分链接在ELF标准可执行文件之后,但本领域技术人员应该理解,CPU+神经网络专用处理器混合链接可执行文件的链接方式和组成结构也可以是除了图3以外的形式。也就是说,根据本发明的第一实施例所述的单一的混合链接可执行文件不限于图3中所给出的示例的形式,还可以是任意链接形式和内容构成的CPU+神经网络专用处理器混合链接可执行文件。
回到图2,步骤S207执行完之后,编译方法200可视为结束。生成的可执行文件可以被启动,从而在整个面向神经网络异构计算平台的编程模型的支持下,得到运行。
在本发明的第一实施例中,除了上述的异构计算平台的编译方法,还提出了一种异构计算平台的编译系统。
参看图1和图2,根据本发明的第一实施例的异构计算平台的编译系统可以包括NN优化编译器,其用于接收训练后的神经网络模型,生成与神经网络对应的NN汇编文件。
编译系统中的NN汇编器用于从NN优化编译器接收NN汇编文件,从而生成与神经网络对应的NN二进制文件。
另一方面,针对主机方面,编译系统的主机编译器用于编译用户用高级语言开发的神经网络应用程序,生成相应的主机汇编文件。而主机汇编器则用于汇编主机汇编文件,生成主机二进制文件。所述高级语言可以是C/C++,也可以是用于提升系统可编程性的其他高级语言。
编译系统仍然使用主机链接器来链接NN二进制文件和主机二进制文件,但是生成的是单一的混合链接可执行文件。
如上在对图2的描述中所解释的,所述的二进制文件可以是ELF二进制文件,所述的单一的混合链接可执行文件可以是单一的混合链接ELF可执行文件。
如前所述,所述的单一的混合链接可执行文件可以包括:ELF标准可执行文件部分和NN扩展部分。其中,ELF标准可执行文件部分可以进一步包括:ELF文件头,段表,代码段,数据段。NN扩展部分则可以进一步包括:NN头,代码段,数据段。可以再次参看图3所给出的示例。但是,根据本发明的第一实施例所述的单一的混合链接可执行文件不限于图3中所给出的示例的形式,还可以是任意链接形式和内容构成的CPU+神经网络专用处理器混合链接可执行文件。
第二实施例:
下面将结合图4来描述本发明的编程环境,即程序运行支持模型。
图4是根据本发明的第二实施例的异构计算平台的程序运行支持模型。
在图4中,将神经网络专用处理器简称为DPU,以与主机CPU相区别。本领域技术人员应该理解,这样的命名并不影响神经网络专用处理器的一般性。也就是说,本说明书与附图中,“神经网络专用处理器”与“DPU”是可以互换使用的术语,用于表示异构计算平台上与CPU相异的另一处理器。
如图4中所示,神经网络专用处理器驱动程序(图4中示出为“DPU驱动程序”)工作在操作系统内核态(kernel space),负责神经网络专用处理器资源运行时的动态管理和调度,并且负责运行在神经网络专用处理器上神经网络代码(以下称为神经网络专用处理器内核)的管理和控制,负责神经网络专用处理器内存空间的管理和分配。
神经网络专用处理器加载器(图4中示为“DPU loader”),在运行时,工作在操作系统用户态(user space),负责神经网络专用处理器内核的动态加载和释放,并且负责神经网络专用处理器内核代码的重定位。
神经网络专用处理器开发库(图4中示为“DPU Library”)工作在操作系统用户态(user space),用于封装神经网络专用处理器的各种C/C++应用编程接口(API)提供给用户开发各种神经网络应用时调用,从而提高神经网络专用处理器上的编程效率。
此外,再加上本领域技术人员应该知道的主机(或CPU)、神经网络专用处理器(图4中示为“DPU”)、主机操作系统和操作系统的标准加载器(OS Loader),用于配合以上提到的服务于神经网络专用处理器的部件,一起提供执行神经网络应用程序的运行支持环境。换句话说,实现神经网络应用程序的神经网络专用处理器加速。
下面分别从方法步骤的角度和系统构成的角度来进一步描述根据本发明第二实施例的异构计算平台的程序运行支持模型的工作状态。
CPU+神经网络专用处理器异构计算平台开发的神经网络应用程序,主要有两部分组成:C/C++代码、训练后的神经网络模型(网络拓扑结构和神经网络参数)。从开发、编译到部署和运行,典型的工作流程如下所示:
步骤1.用户通过调用神经网络专用处理器开发库的C/C++API编程接口,实现神经网络专用处理器内核的初始化操作和运行时的各种控制,例如dpuInit(),dpuFini(),dpuCreateKernel(),dpuDestroyKernel(),dpuRunKernel()等。其中的“dpu”表示神经网络专用处理器。
步骤2.输入训练后的神经网络模型给NN优化编译器,生成与网络对应的NN汇编文件。
步骤3.输入NN汇编文件给NN汇编器,生成与网络对应的ELF二进制文件。
步骤4.使用主机编译器工具链编译用户开发的C/C++神经网络应用程序,生成相应的主机汇编文件和主机ELF二进制文件。
步骤5.使用主机链接器链接神经网络专用处理器和主机的所有ELF二进制文件,生成单一的混合链接ELF可执行文件。
步骤6.编译完生成的单一混合链接ELF可执行文件包含了主机和神经网络专用处理器运行所需的全部信息,执行方式与普通的主机ELF可执行文件完全一样,可实现一键式部署。
步骤7.启动混合链接ELF可执行文件,ELF中主机的代码段和数据段会被操作系统的标准加载器加载到主机的内存空间;ELF中神经网络专用处理器的代码段和数据段由神经网络专用处理器加载器负责加载到神经网络专用处理器的内存空间(其中神经网络专用处理器的内存空间由神经网络专用处理器驱动程序管理)。
步骤8.主机代码段中的指令和神经网络专用处理器代码段中的指令按照神经网络应用设定的顺序串行执行,计算和数据密集的神经网络算法以神经网络专用处理器内核的形态被主机卸载(offload)至神经网络专用处理器上加速运行,更加高效地运行。
可以将以上的过程总结一下。
在根据本发明的第二实施例的异构计算平台的程序运行支持方法中,用户通过调用神经网络专用处理器开发库的高级语言应用编程接口(API),实现神经网络专用处理器内核的初始化操作和运行时的控制。
用户根据本发明第一实施例的异构计算平台的编译方法得到了混合链接可执行文件之后,启动该可执行文件。所述可执行文件中的主机的代码段和数据段被操作系统的标准加载器加载到主机的内存空间;而所述可执行文件中的神经网络专用处理器的代码段和数据段被神经网络专用处理器加载器加载到神经网络专用处理器的内存空间。
然后,主机操作系统与神经网络专用处理器驱动程序相配合,将主机代码段中的指令和神经网络专用处理器代码段中的指令按照神经网络应用设定的顺序串行执行。
在本发明的第二实施例中,除了上述的异构计算平台的程序运行支持方法,还提出了一种异构计算平台的程序运行支持系统。
如图4所示,根据本发明第二实施例的异构计算平台的程序运行支持系统不仅包括单一计算平台中常见的主机、主机操作系统、操作系统的标准加载器,还包括神经网络专用处理器、神经网络应用程序、神经网络专用处理器开发库、编译系统、神经网络专用处理器加载器、神经网络专用处理器驱动程序。
在本发明的程序运行支持系统中,神经网络专用处理器开发库用于封装神经网络专用处理器的各种高级语言(例如C/C++)应用编程接口(API),以便提供给用户开发神经网络应用时调用,实现神经网络专用处理器内核的初始化操作和运行时的控制。
程序运行支持系统中的编译系统,就是根据本发明第一实施例的异构计算平台的编译系统,用于生成混合链接可执行文件。
操作系统的标准加载器用于将所述可执行文件中的主机的代码段和数据段加载到主机的内存空间;而神经网络专用处理器加载器用于将所述可执行文件中的神经网络专用处理器的代码段和数据段加载到神经网络专用处理器的内存空间。
神经网络专用处理器驱动程序用于与主机操作系统相配合,使主机代码段中的指令和神经网络专用处理器代码段中的指令按照神经网络应用设定的顺序串行执行。
以下对本发明所提到的创新点进行进一步讨论。
目前面向神经网络领域专用处理器的设计和研发正处于百花齐放的初期阶段,如何构建面向神经网络异构计算平台的专用编译工具链在学术界和工业界还没有形成标准和规范,也没有相关的完整技术方案公布,因此本发明具有一定的先进性和创新性,总结起来具有以下优点:
1.完备性好:本发明提出的面向神经网络异构计算平台的编译和程序运行支持技术,覆盖了神经网络应用的开发、编译、部署和运行各阶段,是一套完整的、实用性强的技术解决方案。
2.性能好:本发明中的神经网络优化编译器,能够针对神经网络专用处理器中计算单元和片上内存的资源配置,平衡数据读写负载和计算操作负载,充分发挥神经网络专用处理器硬件资源并行度,精确挖掘神经网络专用处理器的计算能力、生成最高效的指令代码。
3.灵活性高:本发明中编译工具链能把各种神经网络模型编译生成神经网络专用处理器上可运行指令码,不受限于某种特定的神经网络算法,适用于神经网络专用处理器平台各种神经网络应用程序的开发,具有较好的灵活性。
4.易用性强:通过神经网络专用处理器开发库向用户提供标准C/C++API编程接口,与CUDA、OpenCL通过扩展C/C++语法提供异构编程的方式相比,免除了用户熟悉新语法的额外负担,因此可降低神经网络专用处理器平台的开发门槛、提高编程效率。
上面已经描述了本发明的各种实施例和实施情形。但是,本发明的精神和范围不限于此。本领域技术人员将能够根据本发明的教导而做出更多的应用,而这些应用都在本发明的范围之内。
也就是说,本发明的上述实施例仅仅是为清楚说明本发明所做的举例,而非对本发明实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其他不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、替换或改进等,均应包含在本发明权利要求的保护范围之内。

Claims (10)

1.一种异构计算平台的编译方法,包括:
将训练后的神经网络模型输入到用于神经网络专用处理器的神经网络(NN)优化编译器,生成与神经网络对应的NN汇编文件;
将NN汇编文件输入到NN汇编器,生成与神经网络对应的NN二进制文件;
使用主机编译器工具链编译和汇编用户用高级语言开发的神经网络应用程序,依次生成相应的主机汇编文件和主机二进制文件;
使用主机链接器链接NN二进制文件和主机二进制文件,以生成单一的混合链接可执行文件。
2.根据权利要求1所述的异构计算平台的编译方法,其中,所述的二进制文件是ELF二进制文件,所述的单一的混合链接可执行文件是单一的混合链接ELF可执行文件。
3.根据权利要求1所述的异构计算平台的编译方法,其中,所述高级语言是C/C++。
4.根据权利要求1所述的异构计算平台的编译方法,其中,所述的单一的混合链接可执行文件包括:
ELF标准可执行文件部分,其进一步包括:
ELF文件头,
段表,
代码段,
数据段,
NN扩展部分,其进一步包括:
NN头,
代码段,
数据段。
5.一种异构计算平台的程序运行支持方法,包括:
用户通过调用神经网络专用处理器开发库的高级语言应用编程接口(API),实现神经网络专用处理器内核的初始化操作和运行时的控制;
启动根据权利要求1所述的异构计算平台的编译方法所得到的混合链接可执行文件;
所述可执行文件中的主机的代码段和数据段被操作系统的标准加载器加载到主机的内存空间;
所述可执行文件中的神经网络专用处理器的代码段和数据段被神经网络专用处理器加载器加载到神经网络专用处理器的内存空间;
主机代码段中的指令和神经网络专用处理器代码段中的指令按照神经网络应用设定的顺序串行执行。
6.一种异构计算平台的编译系统,包括:
用于神经网络专用处理器的神经网络(NN)优化编译器,用于接收训练后的神经网络模型,生成与神经网络对应的NN汇编文件;
NN汇编器,用于接收NN汇编文件,生成与神经网络对应的NN二进制文件;
主机编译器,用于编译用户用高级语言开发的神经网络应用程序,生成相应的主机汇编文件;
主机汇编器,用于汇编主机汇编文件,生成主机二进制文件;
主机链接器,用于链接NN二进制文件和主机二进制文件,以生成单一的混合链接可执行文件。
7.根据权利要求6所述的异构计算平台的编译系统,其中,所述的二进制文件是ELF二进制文件,所述的单一的混合链接可执行文件是单一的混合链接ELF可执行文件。
8.根据权利要求6所述的异构计算平台的编译系统,其中,所述高级语言是C/C++。
9.根据权利要求6所述的异构计算平台的编译系统,其中,所述的单一的混合链接可执行文件包括:
ELF标准可执行文件部分,其进一步包括:
ELF文件头,
段表,
代码段,
数据段,
NN扩展部分,其进一步包括:
NN头,
代码段,
数据段。
10.一种异构计算平台的程序运行支持系统,包括:
主机;
神经网络专用处理器;
神经网络应用程序;
神经网络专用处理器开发库,用于封装神经网络专用处理器的各种高级语言应用编程接口,以便提供给用户开发神经网络应用时调用,实现神经网络专用处理器内核的初始化操作和运行时的控制;
根据权利要求6所述的异构计算平台的编译系统,用于生成混合链接可执行文件;
操作系统的标准加载器,用于将所述可执行文件中的主机的代码段和数据段加载到主机的内存空间;
神经网络专用处理器加载器,用于将所述可执行文件中的神经网络专用处理器的代码段和数据段加载到神经网络专用处理器的内存空间;
主机操作系统;
神经网络专用处理器驱动程序,用于与主机操作系统相配合,使主机代码段中的指令和神经网络专用处理器代码段中的指令按照神经网络应用设定的顺序串行执行。
CN201710231894.9A 2017-04-11 2017-04-11 面向神经网络异构计算平台的编程模型 Active CN107239315B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201710231894.9A CN107239315B (zh) 2017-04-11 2017-04-11 面向神经网络异构计算平台的编程模型
PCT/CN2018/079954 WO2018188463A1 (zh) 2017-04-11 2018-03-22 面向神经网络异构计算平台的编程模型
US15/949,150 US10732943B2 (en) 2017-04-11 2018-04-10 Programming model of neural network-oriented heterogeneous computing platform

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710231894.9A CN107239315B (zh) 2017-04-11 2017-04-11 面向神经网络异构计算平台的编程模型

Publications (2)

Publication Number Publication Date
CN107239315A CN107239315A (zh) 2017-10-10
CN107239315B true CN107239315B (zh) 2019-11-15

Family

ID=59984035

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710231894.9A Active CN107239315B (zh) 2017-04-11 2017-04-11 面向神经网络异构计算平台的编程模型

Country Status (3)

Country Link
US (1) US10732943B2 (zh)
CN (1) CN107239315B (zh)
WO (1) WO2018188463A1 (zh)

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11868896B2 (en) 2016-01-27 2024-01-09 Microsoft Technology Licensing, Llc Interface for working with simulations on premises
US11775850B2 (en) 2016-01-27 2023-10-03 Microsoft Technology Licensing, Llc Artificial intelligence engine having various algorithms to build different concepts contained within a same AI model
US10733532B2 (en) * 2016-01-27 2020-08-04 Bonsai AI, Inc. Multiple user interfaces of an artificial intelligence system to accommodate different types of users solving different types of problems with artificial intelligence
US11836650B2 (en) 2016-01-27 2023-12-05 Microsoft Technology Licensing, Llc Artificial intelligence engine for mixing and enhancing features from one or more trained pre-existing machine-learning models
US11841789B2 (en) 2016-01-27 2023-12-12 Microsoft Technology Licensing, Llc Visual aids for debugging
CN107239315B (zh) * 2017-04-11 2019-11-15 赛灵思公司 面向神经网络异构计算平台的编程模型
WO2019136754A1 (zh) * 2018-01-15 2019-07-18 深圳鲲云信息科技有限公司 人工智能处理装置的编译方法及系统、存储介质及终端
US10892953B2 (en) * 2018-02-23 2021-01-12 Nec Corporation Network-based application acceleration
CN110308909B (zh) * 2018-03-27 2023-08-01 上海寒武纪信息科技有限公司 针对神经网络处理器的可执行程序生成装置和方法
CN110308899B (zh) * 2018-03-27 2023-12-29 上海寒武纪信息科技有限公司 针对神经网络处理器的语言源程序生成方法和装置
CN109643229B (zh) * 2018-04-17 2022-10-04 深圳鲲云信息科技有限公司 网络模型的应用开发方法、平台及计算机可读存储介质
CN109840117A (zh) * 2018-06-20 2019-06-04 中兴通讯股份有限公司 训练模型的实现方法、设备以及存储介质
CN111316227B (zh) * 2018-08-20 2021-08-13 华为技术有限公司 一种调试应用程序的方法及设备
CN109447256A (zh) * 2018-09-12 2019-03-08 上海交通大学 基于FPGA的Tensorflow系统加速的设计方法
CN111104120B (zh) * 2018-10-29 2023-12-22 赛灵思公司 神经网络编译方法、系统及相应异构计算平台
JP6950665B2 (ja) * 2018-11-02 2021-10-13 横河電機株式会社 エンジニアリング装置、エンジニアリング装置の制御方法及びプログラム
CN112912837B (zh) * 2018-11-08 2024-02-13 北京比特大陆科技有限公司 神经网络编译方法、装置、设备、存储介质及程序产品
CN109284815B (zh) * 2018-11-30 2020-11-24 安徽寒武纪信息科技有限公司 神经网络模型算法编译方法、装置及相关产品
CN109558564B (zh) * 2018-11-30 2022-03-11 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN109543825B (zh) * 2018-11-30 2020-12-01 安徽寒武纪信息科技有限公司 神经网络模型算法编译方法、装置及相关产品
US11423142B2 (en) * 2018-12-06 2022-08-23 Nec Corporation Confidential machine learning with program compartmentalization
CN109656566B (zh) 2018-12-14 2020-01-10 中科寒武纪科技股份有限公司 异构计算系统可执行文件获取方法、运行方法及相关产品
CN109711540B (zh) * 2018-12-20 2021-09-21 中科寒武纪科技股份有限公司 一种计算装置及板卡
CN111461296B (zh) * 2018-12-29 2023-09-22 中科寒武纪科技股份有限公司 数据处理方法、电子设备和可读存储介质
CN109711367B (zh) * 2018-12-29 2020-03-06 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
CN109754084B (zh) * 2018-12-29 2020-06-12 中科寒武纪科技股份有限公司 网络结构的处理方法、装置及相关产品
CN109766996A (zh) * 2018-12-29 2019-05-17 北京中科寒武纪科技有限公司 卷积神经网络的优化方法、装置、存储介质和系统
US11157692B2 (en) * 2019-03-29 2021-10-26 Western Digital Technologies, Inc. Neural networks using data processing units
CN110018831B (zh) * 2019-04-04 2022-11-08 中科寒武纪科技股份有限公司 程序处理方法、装置及计算机可读存储介质
US11941533B1 (en) 2019-05-21 2024-03-26 Perceive Corporation Compiler for performing zero-channel removal
US11175898B2 (en) * 2019-05-31 2021-11-16 Apple Inc. Compiling code for a machine learning model for execution on a specialized processor
CN112148291A (zh) * 2019-06-26 2020-12-29 中兴通讯股份有限公司 指令块的处理方法及装置、存储介质、电子装置
DE102020118563A1 (de) * 2019-07-17 2021-01-21 Steering Solutions Ip Holding Corporation Middleware-system und -verfahren
CN110515626B (zh) * 2019-08-20 2023-04-18 Oppo广东移动通信有限公司 深度学习计算框架的代码编译方法及相关产品
CN110569106B (zh) * 2019-08-27 2022-11-15 Oppo广东移动通信有限公司 代码加载方法、装置、电子设备及计算机可读介质
CN110704040A (zh) * 2019-09-30 2020-01-17 上海寒武纪信息科技有限公司 信息处理方法、装置、计算机设备及可读存储介质
CN112711409B (zh) * 2019-10-25 2024-06-04 杭州海康威视数字技术股份有限公司 应用程序开发、运行方法、系统及智能分析设备
CN110908667B (zh) * 2019-11-18 2021-11-16 北京迈格威科技有限公司 神经网络联合编译的方法、装置和电子设备
US11720351B2 (en) * 2020-03-17 2023-08-08 Onspecta, Inc. Microkernel-based software optimization of neural networks
CN111831285B (zh) * 2020-06-23 2023-03-14 西安电子科技大学 一种面向内存计算平台的代码转换方法、系统及应用
CN111915016B (zh) * 2020-07-10 2022-03-25 深圳云天励飞技术股份有限公司 一种基于tvm编译器的异构平台的部署方法及装置
CN112529175B (zh) * 2020-11-05 2022-03-18 上海交通大学 神经网络的编译方法、系统、计算机存储介质及编译设备
CN112434755B (zh) * 2020-12-15 2023-04-07 电子科技大学 一种基于异构系统的数据异常感知方法
CN113031966B (zh) * 2021-05-20 2021-09-21 之江实验室 一种智能选择编译加速库的深度学习编译优化方法
CN113778458B (zh) * 2021-08-19 2024-04-05 北京爱芯科技有限公司 数据处理器功能开发系统、方法及计算设备
CN114282641B (zh) * 2022-03-07 2022-07-05 麒麟软件有限公司 一种通用异构加速框架的构建方法
CN114385233B (zh) * 2022-03-24 2022-08-02 山东省计算中心(国家超级计算济南中心) 一种跨平台自适应数据处理工作流系统及方法
CN115981666B (zh) * 2023-03-21 2023-07-21 北京探境科技有限公司 神经网络信息整合方法、装置、系统及存储介质
CN116306856B (zh) * 2023-05-17 2023-09-05 之江实验室 一种基于搜索的深度学习模型部署方法及装置
CN116661779B (zh) * 2023-07-26 2023-09-19 北京麟卓信息科技有限公司 一种基于符号动态重定向的多编译器混合链接方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101441569A (zh) * 2008-11-24 2009-05-27 中国人民解放军信息工程大学 基于异构可重构体系结构面向任务流的新型编译方法
CN103124956A (zh) * 2010-09-27 2013-05-29 三星电子株式会社 在异类系统中使用虚拟化编译和执行应用的方法和装置
CN105426226A (zh) * 2015-11-24 2016-03-23 无锡江南计算技术研究所 一种异构代码融合的编译和生成方法
CN106155755A (zh) * 2015-06-03 2016-11-23 上海红神信息技术有限公司 程序编译方法和程序编译器

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0029115D0 (en) 2000-11-29 2001-01-10 Sgs Thomson Microelectronics Assembling an object code module
US6826550B2 (en) 2000-12-15 2004-11-30 International Business Machines Corporation Method, system, and program for converting application program code to executable code using neural networks based on characteristics of the inputs
US6964029B2 (en) * 2002-10-31 2005-11-08 Src Computers, Inc. System and method for partitioning control-dataflow graph representations
US8327316B2 (en) 2008-09-30 2012-12-04 Ics Triplex Isagraf Inc. Compilation model
KR101761650B1 (ko) 2010-09-24 2017-07-28 인텔 코포레이션 컴퓨팅 플랫폼의 이종 프로세서들 간의 공유 가상 메모리에서의 가상 함수들의 공유
US9582397B2 (en) * 2012-08-22 2017-02-28 Nxp Usa, Inc. Method and system for obtaining run-time information associated with executing an executable
US9448818B2 (en) * 2014-02-14 2016-09-20 Red Hat, Inc. Defining classes as singleton classes or non-singleton classes
KR101757407B1 (ko) * 2015-06-11 2017-07-12 라인 가부시키가이샤 바이너리 병합 장치, 방법 및 컴퓨터 프로그램
US10970628B2 (en) * 2015-11-09 2021-04-06 Google Llc Training neural networks represented as computational graphs
WO2018058426A1 (zh) * 2016-09-29 2018-04-05 清华大学 硬件神经网络转换方法、计算装置、编译方法和神经网络软硬件协作系统
US10552207B2 (en) * 2016-12-21 2020-02-04 Intel Corporation Systems and methods for multi-architecture computing including program stack translation
US9990187B1 (en) 2017-01-27 2018-06-05 Sas Institute Inc. Analytic execution for automatic decision making
CN107239315B (zh) * 2017-04-11 2019-11-15 赛灵思公司 面向神经网络异构计算平台的编程模型

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101441569A (zh) * 2008-11-24 2009-05-27 中国人民解放军信息工程大学 基于异构可重构体系结构面向任务流的新型编译方法
CN103124956A (zh) * 2010-09-27 2013-05-29 三星电子株式会社 在异类系统中使用虚拟化编译和执行应用的方法和装置
CN106155755A (zh) * 2015-06-03 2016-11-23 上海红神信息技术有限公司 程序编译方法和程序编译器
CN105426226A (zh) * 2015-11-24 2016-03-23 无锡江南计算技术研究所 一种异构代码融合的编译和生成方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
An Open-Source GPGPU Compiler;Jingyue Wu等;《CGO "16: Proceedings of the 2016 International Symposium on Code Generation and Optimization》;20160209;105 *

Also Published As

Publication number Publication date
CN107239315A (zh) 2017-10-10
US10732943B2 (en) 2020-08-04
US20180293057A1 (en) 2018-10-11
WO2018188463A1 (zh) 2018-10-18

Similar Documents

Publication Publication Date Title
CN107239315B (zh) 面向神经网络异构计算平台的编程模型
CN103858099B (zh) 用于执行应用的方法和系统、具有机器指令的电路
AU2013290313B2 (en) Method and system for automated improvement of parallelism in program compilation
KR101137126B1 (ko) 확장성 컴파일러 및 툴의 기반 구조에 대한 기술 언어
CN103019742B (zh) 一种多dsp平台上的自动代码生成方法
CN104932905A (zh) 一种aadl到c语言的代码自动生成方法
CN110149800A (zh) 一种用于处理与源程序的源代码相关联的抽象语法树的装置
CN112527262B (zh) 深度学习框架编译器宽度非一致自动向量优化方法
CN109933327B (zh) 基于代码融合编译框架的OpenCL编译器设计方法和系统
CN111104120A (zh) 神经网络编译方法、系统及相应异构计算平台
CN103116493A (zh) 一种应用于粗粒度可重构阵列的自动映射方法
CN110083385A (zh) 基于risc-v处理器的系统移植方法及相关组件
CN111309292A (zh) 一种基于MATLAB/Simulink的全模型可执行程序构建方法
CN111190585B (zh) 基于字节码增强技术实现java模式匹配特性的方法
CN113031954A (zh) 代码编译方法、装置、电子设备、存储介质及异构系统
KR20230120850A (ko) 이종 컴퓨팅 플랫폼 지원 딥러닝 컴파일러 및 그 방법
CN112083956B (zh) 一种面向异构平台的复杂指针数据结构自动管理系统
St-Amour et al. PICOBIT: a compact scheme system for microcontrollers
Papakonstantinou et al. Throughput-oriented kernel porting onto FPGAs
CN108804222B (zh) 一种临时变量的数据区分配方法
Poletto et al. tcc: A templatebased compiler for ‘c
Wei et al. DLVM: A modern compiler framework for neural network DSLs
CN101957772B (zh) 一种具有轻量级比较指令生成的编译方法
Matos et al. AC Subset for Ergonomic Source-to-Source Analyses and Transformations
CN106126312B (zh) 一种基于代数演算的中间代码优化系统

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
TA01 Transfer of patent application right

Effective date of registration: 20180118

Address after: 100083 Beijing city Haidian District Wangzhuang Road No. 1 Building No. 4 hospital 8 floor No. 807

Applicant after: Beijing insight Technology Co., Ltd.

Address before: 100083 Beijing city Haidian District Tongfang Technology Plaza, D block, 1705

Applicant before: Beijing deep Intelligent Technology Co., Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20180531

Address after: 100083, 17 floor, 4 Building 4, 1 Wang Zhuang Road, Haidian District, Beijing.

Applicant after: Beijing deep Intelligent Technology Co., Ltd.

Address before: 100083, 8 floor, 4 Building 4, 1 Wang Zhuang Road, Haidian District, Beijing.

Applicant before: Beijing insight Technology Co., Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20190930

Address after: 2100 San Jose Rojack Avenue, California, USA

Applicant after: XILINX INC

Address before: 100083, 17 floor, 4 Building 4, 1 Wang Zhuang Road, Haidian District, Beijing.

Applicant before: Beijing Shenjian Intelligent Technology Co., Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant