[发明专利]计算图的基于流的加速器处理有效
| 申请号: | 201680063365.6 | 申请日: | 2016-10-28 |
| 公开(公告)号: | CN108351805B | 公开(公告)日: | 2022-12-23 |
| 发明(设计)人: | 保罗·罗纳德·巴勒姆;维贾伊·瓦苏德万 | 申请(专利权)人: | 谷歌有限责任公司 |
| 主分类号: | G06F9/50 | 分类号: | G06F9/50 |
| 代理公司: | 中原信达知识产权代理有限责任公司 11219 | 代理人: | 李佳;穆德骏 |
| 地址: | 美国加利*** | 国省代码: | 暂无信息 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 计算 基于 加速器 处理 | ||
1.一种计算机实现的方法,所述方法包括:
接收处理计算图的请求;
获得表示所述计算图的多个子图的数据,所述计算图包括多个节点和有向边,其中每个节点表示相应的操作,其中每个有向边将相应的第一节点连接到相应的第二节点,所述相应的第二节点表示接收由所述相应的第一节点表示的操作的输出作为输入的操作;
将所述多个子图指派给多个设备中的相应设备,包括将第一子图指派给第一设备;
确定所述第一设备包括具有多个流的硬件加速器,每个流是按次序处理其操作的独立硬件队列;
响应于确定所述第一设备包括具有多个流的硬件加速器而生成指令,所述指令当由所述第一设备执行时使所述第一设备:
将由所述第一子图中的每个节点表示的所述操作指派给所述硬件加速器的所述多个流中的对应的流,包括:将不依赖于彼此的两个操作指派给不同的流,以及将第一操作指派给单个流,所述第一操作以在第二操作执行之前必须发生的方式改变硬件的内部状态并且在所述第一操作完成之后将所述第二操作指派为在所述单个流中执行;并且
根据所述指派来执行由所述子图中的所述节点表示的所述操作;以及
将所述指令和所述数据提供给所述第一设备。
2.根据权利要求1所述的方法,其中,所述请求指定识别来自所述子图中的一个或多个相应节点的一个或多个特定输出,所述方法进一步包括:
从所述第一设备接收所述一个或多个特定输出;以及
将所述一个或多个特定输出提供给客户端。
3.根据权利要求2所述的方法,其中,所述指令进一步使所述第一设备将所述一个或多个特定输出存储在所述第一设备的存储器中。
4.根据权利要求1、2或3所述的方法,其中,针对所述子图的所述操作包括针对神经网络的部分推理或训练计算。
5.根据任一前述权利要求所述的方法,进一步包括:
分析所述子图以在链结构中识别所述子图中的节点组;
其中,所述指令使所述第一设备将所述节点组指派给一个流。
6.根据任一前述权利要求所述的方法,其中,所述指派包括:
分析所述子图以识别在所述子图中具有多个有向边作为输出的第一节点;
其中,所述指令使所述第一设备针对所述有向边中的每一个有向边来将所述有向边所指向的节点指派给所述硬件加速器的不相交流。
7.根据任一前述权利要求所述的方法,其中,所述指令使所述第一设备针对每个节点,基于到该节点的所述有向边来确定通过由该节点表示的所述操作消耗的所述硬件加速器中的相应的存储器资源量,其中,所述指派至少基于所述相应的存储器资源量。
8.根据任一前述权利要求所述的方法,其中,所述指令使所述第一设备确定由节点表示的特定操作已在特定流处结束;
响应于确定所述特定操作已结束:
确定将被释放的通过所述特定操作消耗的第一存储器量;
针对未指派节点组中的每一个未指派节点,确定通过由所述未指派节点表示的操作所消耗的相应的估计存储器量;
从所述未指派节点组中确定第一未指派节点,所述第一未指派节点表示在所述硬件加速器的流上执行的操作,所述操作利用了使所述第一存储器量的使用最大化的所述估计存储器量;并且
将由所述第一未指派节点表示的操作指派给所述特定流。
9.根据任一前述权利要求所述的方法,其中,所述指令使所述第一设备确定由节点表示的特定操作已在特定流处结束:
响应于确定所述特定操作已结束:
确定使用所述特定操作的所述输出作为输入的至少一个后续操作;并且
在所述至少一个后续操作已执行之后,重新使用为所述特定操作的所述输出而分配的存储器。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于谷歌有限责任公司,未经谷歌有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201680063365.6/1.html,转载请声明来源钻瓜专利网。





