本公开涉及芯片领域,更具体地,涉及片间通信领域。
背景技术:
1、随着神经网络规模的扩大,单机环境无法更好地独立完成训练任务,例如,单机的内存不足以放下整个神经网络模型、数据量太大无法加载等。在此情况下,通常需要引入分布式训练,即多个训练设备之间协同进行工作,通过互相之间的通信,作为整体系统来完成协同任务。
2、但是,分布式系统的基础是通信,而通信需要建立在通信介质之上。有些通信介质是可靠传输,如socket,pcie等,应用层只要下发通信需求即可,在链路上的传输是可靠传输。可靠传输指的是接收方应用收到了完整且正确的数据。但是也存在不可靠传输,例如ip协议本身是不可靠的网络层传输协议,在数据发送之后,可能存在丢包,也可能存在出错,还可能存在丢回应。如何在不可靠的链路上进行可靠的传输,是所有通信都要面对的问题。
3、目前的主流做法是,在通信传输层来执行可靠的通信协议,来完成可靠传输。比较典型的是tcp协议,其通过确认应答和序列号、超时重传、流量控制、拥塞控制这4种主要机制,来保证传输的可靠性。在其他的链路上,nvidia采用nvlink,从链路层和协议层上保证了可靠传输。公开号为cn 110278094的专利申请则公开了一种基于链路延迟的超时重传装置,用来降低聚合链路重传时的丢包概率。公开号为cn 112312513 b的专利申请则在一种用于链路失败恢复的装置中,提高重传恢复的性能。
4、申请人发现,上述现有方案存在如下技术缺陷:
5、1.重传行为发生在传输层,需要在传输层维护更多的冗余信息,来标记重传的位置;
6、2.传输层需要额外的缓存区来存储已发送的信息用于重传,这增加了存储资源的消耗;
7、3.在传输层重传时,由于应用层对这一行为并不感知,因此可能依然要进行大流量通信,这需要流控模块来协调处理。
技术实现思路
1、本公开的目的在于解决现有技术中传输层重传所带来的缺陷,提供一种能够在应用层进行重传的方案。
2、根据本公开第一方面,提供一种用于在应用层控制数据重传的方法,包括:预发送数据,所述数据包括有效载荷和用于所述有效载荷的计数值;响应于所述数据处于预发送状态,记录第一发送端信息,所述第一发送端信息表示所述数据被预发送的第一数量;接收并记录第一接收端信息,所述第一接收端信息表示数据被接收端接收到并反馈的第二数量,其中第二数量不大于第一数量;根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
3、根据本公开第二方面,提供一种用于在应用层控制数据重传的设备,包括:发送单元,用于预发送数据,所述数据包括有效载荷和用于所述有效载荷的计数值;发送端信息更新单元,用于响应于所述数据处于预发送状态,记录第一发送端信息,所述第一发送端信息表示所述数据被预发送的第一数量;接收单元,用于接收并记录第一接收端信息,所述第一接收端信息表示数据被接收端接收到并反馈的第二数量,其中第二数量不大于第一数量;重传判断单元,用于根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
4、根据本公开第三方面,提供一种用于在通信系统中在应用层控制数据重传的方法,所述通信系统包括:发送端,接收端和连接所述发送端与接收端的通信链路,所述方法包括:在发送端,向接收端预发送数据,所述数据包括有效载荷和用于所述有效载荷的计数值;响应于所述数据处于预发送状态,记录第一发送端信息,所述第一发送端信息表示所述数据被预发送的第一数量;通过所述通信链路来传输所述数据;在接收端,如果接收到所述数据,则记录所述计数值;根据所述计数值来生成第二数量,所述第二数量表示所述数据被接收端接收到并反馈的数量;向发送端反馈第一接收端信息,所述第一接收端信息包括第二数量,并且第二数量不大于第一数量;在发送端,接收并记录所述第一接收端信息;根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
5、根据本公开第四方面,提供一种在应用层控制数据重传的通信系统,所述通信系统包括:发送端,接收端和连接所述发送端与接收端的通信链路,其中,所述发送端向接收端预发送数据,所述数据包括有效载荷和用于所述有效载荷的计数值;所述发送端响应于所述数据处于预发送状态,记录第一发送端信息,所述第一发送端信息表示所述数据被预发送的第一数量;所述通信链路用于传输所述数据;所述接收端如果接收到所述数据,则记录所述计数值;所述接收端根据所述计数值来生成第二数量,所述第二数量表示所述数据被接收端数据被接收端接收到并反馈的第二数量;所述接收端向发送端反馈第一接收端信息,所述第一接收端信息包括第二数量,并且第二数量不大于第一数量;所述发送端接收并记录所述第一接收端信息;所述发送端根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
6、根据本公开第五方面,提供一种电子设备,包括:一个或多个处理器;以及存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如上所述的方法。
7、根据本公开第六方面,提供一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如上所述的方法。
8、根据本公开的技术方案,所带来的有益效果至少包括:在应用层进行软件层面的重传设计,可以降低传输层的硬件设计,因此开发快,硬件定制成本低。
1.一种用于在应用层控制数据重传的方法,包括:
2.根据权利要求1所述的方法,其中,预发送数据包括:将所述数据放置于发送端的存储空间内以备发送。
3.根据权利要求1或2所述的方法,其中,响应于所述数据处于预发送状态,记录第一发送端信息包括:
4.根据权利要求1-3中任意一项所述的方法,其中,接收并记录第一接收端信息包括:随着第一接收端信息的变化而更新第二数量。
5.根据权利要求1-3中任意一项所述的方法,其中,接收并记录第一接收端信息包括:记录具有最大的第二数量的第二接收端信息。
6.根据权利要求1-5中任意一项所述的方法,其中,响应于来自于通信链路上报的中断信号,根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
7.根据权利要求6所述的方法,其中,根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传包括:
8.根据权利要求7所述的方法,其中,根据第一发送端信息和第一接收端信息来确定中断的类型包括:
9.根据权利要求8所述的方法,其中,从发送端到接收端的数据丢失或错误包括有效载荷的丢失或错误,和/或计数值的丢失或错误。
10.根据权利要求8或9所述的方法,其中,根据所述中断的类型来确定是否进行所述数据的重传包括:
11.根据权利要求7所述的方法,其中,根据第一发送端信息和第一接收端信息来确定中断的类型包括:
12.根据权利要求11所述的方法,其中,根据所述中断的类型来确定是否进行所述数据的重传包括:
13.根据权利要求1-12中任意一项所述的方法,其中,通过应用层的缓存区来存储待重传的数据。
14.根据权利要求1-13中任意一项所述的方法,其中,通过应用层来发送重传指示,以进行所述数据的重传。
15.一种用于在应用层控制数据重传的设备,包括:
16.一种用于在通信系统中在应用层控制数据重传的方法,所述通信系统包括:发送端,接收端和连接所述发送端与接收端的通信链路,所述方法包括:
17.根据权利要求16所述的方法,其中,向接收端预发送数据包括:将所述数据放置于发送端的存储空间内以备发送。
18.根据权利要求16或17所述的方法,其中,响应于所述数据处于预发送状态,记录第一发送端信息包括:
19.根据权利要求16-18中任意一项所述的方法,其中,如果接收到所述数据,则记录所述计数值包括:以新的计数值来覆盖旧的计数值。
20.根据权利要求16-18中任意一项所述的方法,其中,如果接收到所述数据,则记录所述计数值包括:
21.根据权利要求16-20中任意一项所述的方法,其中,接收并记录第一接收端信息包括:随着第一接收端信息的变化而更新第二数量。
22.根据权利要求16-20中任意一项所述的方法,其中,接收并记录第一接收端信息包括:记录具有最大的第二数量的第二接收端信息。
23.根据权利要求16-22中任意一项所述的方法,其中,响应于特定事件的发生,所述通信链路向发送端上报中断信号。
24.根据权利要求23所述的方法,其中,响应于从发送端到接收端的数据丢失或错误,则所述通信链路向发送端上报中断信号。
25.根据权利要求24所述的方法,其中,从发送端到接收端的数据丢失或错误包括有效载荷的丢失或错误,和/或计数值的丢失或错误。
26.根据权利要求23所述的方法,其中,响应于从接收端向发送端反馈的、针对所述数据的应答丢失,则所述通信链路向发送端上报中断信号。
27.根据权利要求16-26中任意一项所述的方法,其中,响应于来自于通信链路上报的中断信号,根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传。
28.根据权利要求27所述的方法,其中,根据所述第一发送端信息和第一接收端信息来确定是否进行所述数据的重传包括:
29.根据权利要求28所述的方法,其中,根据第一发送端信息和第一接收端信息来确定中断的类型包括:
30.根据权利要求29所述的方法,其中,根据所述中断的类型来确定是否进行所述数据的重传包括:
31.根据权利要求28所述的方法,其中,根据第一发送端信息和第一接收端信息来确定中断的类型包括:
32.根据权利要求31所述的方法,其中,根据所述中断的类型来确定是否进行所述数据的重传包括:
33.根据权利要求16-32中任意一项所述的方法,其中,通过应用层的缓存区来存储待重传的数据。
34.根据权利要求16-33中任意一项所述的方法,其中,通过应用层来发送重传指示,以进行所述数据的重传。
35.一种在应用层控制数据重传的通信系统,所述通信系统包括:发送端,接收端和连接所述发送端与接收端的通信链路,其中,
36.一种电子设备,包括:
37.一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如权利要求1-14或16-34中任意一项所述的方法。
