[发明专利]针对神经网络处理器的可执行程序生成装置和方法有效
申请号: | 201810257595.7 | 申请日: | 2018-03-27 |
公开(公告)号: | CN110308909B | 公开(公告)日: | 2023-08-01 |
发明(设计)人: | 请求不公布姓名 | 申请(专利权)人: | 上海寒武纪信息科技有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06N3/063 |
代理公司: | 中科专利商标代理有限责任公司 11021 | 代理人: | 任岩 |
地址: | 201203 上海市浦东*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 针对 神经网络 处理器 可执行 程序 生成 装置 方法 | ||
一种针对神经网络处理器的可执行程序生成装置及方法,其中生成装置包括:源程序分割模块,接收源文件为输入,根据源文件中的格式,识别并提取代码段和数据段的位置,并生成包含代码段的中间文件和包含数据段的中间文件;数据处理模块,用于输入包含数据的中间文件,处理数据的摆放,输出内存分配信息和数据摆放方式;神经网络算法映射模块,用于输入包含代码段的中间文件,将代码中的用块表示的神经网络算法映射为宏语句构成的算法流程,之后再映射成硬件相关的指令。本装置为用户提供了一种方便快捷的使用神经网络处理器的方法。
技术领域
本披露涉及计算机领域,进一步涉及人工智能领域。
背景技术
深度神经网络算法是最近非常流行的一种机器学习算法,被广泛的应用在了各种领域,比如图像识别,语音识别,自然语言处理等。由于深度神经网络在各种任务上都取得了良好的效果,各种各样的网络结构和算法层出不穷,给编程开发带来了挑战。而对于神经网络处理器来说,由于其独特的硬件结构,以及其上运行的神经网络算法所具有的计算密集和访存密集的特点,编程也就变得更加的复杂和困难。现在提出的神经网路处理器都是通过手写指令的方式进行编程的,这种方式非常耗时,耗损人力,同时也容易出现错误,不易调试。
在实施本披露的过程中,申请人发现上述现有技术中存在以下问题:神经网络处理器缺乏有效的编程手段,和高效的代码生成装置,导致其编程非常困难,生成出来的代码效率低下,难以充分发挥神经网络处理器的优势。
发明内容
(一)要解决的技术问题
有鉴于此,本披露的目的在于提供针对神经网络处理器的可执行程序生成装置和方法,以解决以上所述的至少部分技术问题。
(二)技术方案
根据本披露的一方面,提供一种针对神经网络处理器的可执行程序生成装置,包括:
源程序分割模块,接收源文件为输入,根据源文件中的格式,识别并提取代码段和数据段的位置,并生成包含代码段的中间文件和包含数据段的中间文件;
数据处理模块,用于输入包含数据的中间文件,处理数据的摆放,输出内存分配信息和数据摆放方式;
神经网络算法映射模块,用于输入包含代码段的中间文件,将代码中的用块表示的神经网络算法映射为宏语句构成的算法流程,之后再映射成硬件相关的指令。
在进一步的方案中,还包括并行代码生成模块,用于输入硬件相关的指令,对其进行并行化的处理和优化,输出优化后的程序。
在进一步的方案中,还包括重定位模块,输入数据摆放方式、内存分配信息和优化后的程序,将优化后的程序中的相对地址替换为绝对地址。
在进一步的方案中,还包括机器码生成模块,用于将所述重定位模块将重定位之后的程序翻译成神经网络处理器可以识别的字符串。
在进一步的方案中,所述数据处理模块还用于进行数据划分,将神经网络每一层的输入输出数据进行划分,划分后能放入神经网络处理器的片上存储单元中。
在进一步的方案中,所述神经网络算法映射模块包括:
计算划分模块,用于将大规模的计算划分成规模相对小的子计算模块;
指令映射模块,用于将算法映射成神经网络处理器指令集中的指令。
在进一步的方案中,所述代码段中包含了神经网络算法的语句、块、以及相应的定义。
根据本披露的另一方面,还提供一种采用上述装置生成可执行程序的方法,包括:采用源程序分割模块,接收源文件为输入,并根据源文件中的格式,识别出代码段和数据段的位置并提取,并生成包含代码段的中间文件和包含数据段的中间文件;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海寒武纪信息科技有限公司,未经上海寒武纪信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810257595.7/2.html,转载请声明来源钻瓜专利网。