本公开涉及芯片领域,更具体地,涉及片间通信领域。
背景技术:
1、人工智能(artificial intelligence,ai)芯片存在片间高速互联的专用通信模块及链路,nvlink,mlulink等。高速互联链路在不同产品形态上存在不同的异构拓扑,如环形、链式、树形、全连接等。同时,用户需要任意两卡间进行发送-接收(send-recv)通信,两卡间需要存在如nvlink,mlulink等的高速通信连接。但是,产品形态和用户需求间存在如下矛盾:第一,从产品成本考虑,全连接是较为高昂的一种形态,而大部分的产品形态是非全连接的;2.从编程易用性角度出发,用户需要无感的在任意两卡间进行send-recv通信,即使没有mlulink连接。
技术实现思路
1、本公开的目的在于提供一种基于多个节点来进行节点间路由的方法,以解决非全连接场景下任何两点间的发送和接收通信操作。
2、根据本公开的第一方面,提供一种基于多个节点来进行节点间路由的方法,包括:构建路由元组,所述路由元组包括会话标识符、本地数据存储空间信息、远端数据存储空间信息和控制值存储空间信息;其中,所述会话标识符用于对会话进行区分,所述本地数据存储空间信息用于指示本地节点中用于存储数据的存储空间的地址,所述远端存储空间信息用于指示下游节点中用于存储数据的存储空间的地址,所述控制值存储空间信息用于指示本地节点以及上游节点和/或下游节点中用于存储控制值的存储空间的地址;向会话路径上的多个节点发送所述路由元组,以使得接收到所述路由元组的节点能够根据所述路由元组来进行节点间路由。
3、根据本公开第二方面,提供一种基于多个节点来进行节点间路由的方法,包括:接收路由元组,所述路由元组包括会话标识符、本地数据存储空间信息、远端数据存储空间信息和控制值存储空间信息;其中,所述会话标识符用于对会话进行区分,所述本地数据存储空间信息用于指示本地节点中用于存储数据的存储空间的地址,所述远端存储空间信息用于指示下游节点中用于存储数据的存储空间的地址,所述控制值存储空间信息用于指示本地节点以及上游节点和/或下游节点中用于存储控制值的存储空间的地址;根据所述路由元组在会话路径上进行节点间路由。
4、根据本公开第三方面,提供一种基于多个节点来进行节点间路由的方法,包括:在主机侧,构建路由元组,所述路由元组包括会话标识符、本地数据存储空间信息、远端数据存储空间信息和控制值存储空间信息;其中,所述会话标识符用于对会话进行区分,所述本地数据存储空间信息用于指示本地节点中用于存储数据的存储空间的地址,所述远端存储空间信息用于指示下游节点中用于存储数据的存储空间的地址,所述控制值存储空间信息用于指示本地节点以及上游节点和/或下游节点中用于存储控制值的存储空间的地址;向会话路径上的多个节点发送所述路由元组;以及在包括多个节点的设备侧,接收所述路由元组;接收到所述路由元组的节点根据所述路由元组进行节点间路由。
5、根据本公开第四方面,提供一种基于多个节点来进行节点间路由的主机,其上运行有常驻代理程序,所述常驻代理程序用于执行如上所述的方法。
6、根据本公开第五方面,提供一种基于多个节点来进行节点间路由的设备,所述设备包括多个节点,每个节点中运行有kernel,所述kernel用于执行如上所述的方法。
7、根据本公开第六方面,提供一种基于多个节点来进行节点间路由的系统,所述系统包括如上所述的主机和如上所述的设备。
8、根据本公开第七方面,提供一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如上所述的方法。
9、根据本公开的一个实施方式,相对于现有技术,本公开的技术方案避免了引入昂贵的交换芯片、交换机带来的硬件成本。
10、根据本公开的一个实施方式,在本公开中,采用了纯软件方法,在会话不存在冲突时,可以达到端口的最大理论带宽。
11、根据本公开的一个实施方式,在多个会话同时进行冲突通信时,可以按照优先级保证不同会话的优先级,从而最大程度满足用户需求。
12、根据本公开的一个实施方式,通过常驻kernel的方式,尽量减少了对计算核数量的消耗。
1.一种基于多个节点来进行节点间路由的方法,包括:
2.根据权利要求1所述的方法,其中,控制值存储空间信息包括:
3.根据权利要求1或2所述的方法,其中,所述路由元组进一步包括优先级,用于指示所述会话的优先级。
4.根据权利要求3所述的方法,其中,会话的优先级越高,为该会话分配的带宽越高。
5.根据权利要求1-4中任意一项所述的方法,其中,所述路由元组进一步包括存储空间大小信息,用于指示存储空间的最大尺寸。
6.根据权利要求1-5中任意一项所述的方法,进一步包括,在构建路由元组之前,建立会话路径,建立会话路径包括:
7.根据权利要求1-6中任意一项所述的方法,其中,所述会话路径为最短会话路径、最空闲会话路径或带宽最高会话路径。
8.根据权利要求1-7中任意一项所述的方法,其中,所述会话路径是单向的。
9.根据权利要求1-8中任意一项所述的方法,其中,所述会话路径是会话独立的。
10.根据权利要求1-9中任意一项所述的方法,其中,所述方法由主机上的常驻代理程序来执行,所述常驻代理程序响应于来自客户端的请求,向相应会话路径上的节点发送路由元组。
11.根据权利要求1-9中任意一项所述的方法,其中,所述方法由主机上的常驻代理程序和客户端来执行,并且其中,所述客户端向相应会话路径上的发送节点和接收节点发送路由元组,并且所述常驻代理程序响应于来自所述客户端的请求,向相应会话路径上的其他节点发送路由元组。
12.根据权利要求1-11中任意一项所述的方法,进一步包括:向多个节点下发常驻kernel,以使得所述会话路径上的中间节点通过所述常驻kernel来运行所述路由元组;和/或,向多个节点下发常驻kernel,以使得所述多个节点通过常驻kernel扫描会话列表。
13.根据权利要求12所述的方法,进一步包括:向开始节点下发临时的发送kernel;以及向接收节点下发临时的接收kernel。
14.一种基于多个节点来进行节点间路由的方法,包括:
15.根据权利要求14所述的方法,其中,控制值存储空间信息包括:
16.根据权利要求15所述的方法,其中,根据本地tail值存储空间中的本地tail值与上游head值存储空间中的上游head值的差值来确定向下游节点发送的数据的数量。
17.根据权利要求14-16中任意一项所述的方法,其中,所述路由元组进一步包括优先级,用于指示所述会话的优先级。
18.根据权利要求17所述的方法,包括:
19.根据权利要求18所述的方法,其中,所述路由元组进一步包括存储空间大小信息,用于指示存储空间的最大尺寸,其中,向下游节点发送的数据分片的最大数量为存储空间的最大尺寸除以每个数据分片的大小所得的整数。
20.根据权利要求14-19中任意一项所述的方法,其中,所述会话路径为最短会话路径、最空闲会话路径或带宽最高会话路径。
21.根据权利要求14-20中任意一项所述的方法,其中,所述会话路径是单向的。
22.根据权利要求14-21中任意一项所述的方法,其中,所述会话路径是会话独立的。
23.根据权利要求14-22中任意一项所述的方法,其中,通过运行在所述会话路径的中间节点处的常驻kernel来运行所述路由元组;和/或通过运行在所述会话路径的多个节点处的常驻kernel来扫描会话列表。
24.根据权利要求23所述的方法,进一步包括:所述会话路径上的开始节点接收临时的发送kernel;以及所述会话路径上的接收节点接收临时的接收kernel。
25.一种基于多个节点来进行节点间路由的方法,包括:
26.一种基于多个节点来进行节点间路由的主机,其上运行有常驻代理程序,所述常驻代理程序用于执行如权利要求1-13中任意一项所述的方法。
27.一种基于多个节点来进行节点间路由的设备,所述设备包括多个节点,每个节点中运行有kernel,所述kernel用于执行如权利要求14-24中任意一项所述的方法。
28.一种基于多个节点来进行节点间路由的系统,所述系统包括如权利要求26所述的主机和如权利要求27所述的设备。
29.一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如权利要求1-24中任意一项所述的方法。