本地数据的存取调度方法、存取调度装置以及存储介质与流程
- 国知局
- 2024-07-31 22:58:17
本技术涉及数据读写,特别是涉及一种本地数据的存取调度方法、存取调度装置以及计算机存储介质。
背景技术:
1、随着ai(人工智能,artificial intelligence)技术的广泛应用,模型越来越大,数据越来越多;这自然对算力要求越来越高,尤其是训练场景。然而,受工艺和功耗等限制,单颗soc(system on chip,片上系统)芯片,如ai专用芯片、gpu(图形处理器,graphicsprocessing unit)等的算力已不能满足需求。所以,多颗芯片联合工作,如多卡gpu分布式训练以提高算力是业界通用的方式。分布式架构中多个gpu之间的通信方式分为点对点通信(point-to-point communication)和聚合通信(collective communication)。相比点对点通信(如send和isend等)的1个sender对应1个receiver而导致的通信效率降低,聚合通信(如broadcast,scatter,gather,reduce,all-reduce,reduce-scatter,all-to-all等)的多个sender对应多个receiver大幅度的提高了通信效率,而被广泛使用。其中如何在聚合通信all-reduce和reduce-scatter中高效的存取本地数据是个难点。
2、目前传统方案是基于采用gpu编写kernel(内核)的方式来控制和协调当前迭代中的本地数据读取。这不仅会抢占gpu计算资源,而且数据传输的延迟也较大,效率较低;另外其握手开销大,调度复杂。
技术实现思路
1、为解决上述技术问题,本技术提出了一种本地数据的存取调度方法、存取调度装置以及计算机存储介质。
2、为解决上述技术问题,本技术提出了一种本地数据的存取调度方法,所述存取调度方法应用于一种处理器,所述存取调度方法包括:
3、将存取调取任务的所有迭代所需要的数据块信息存入链表;
4、在运算阶段每一次迭代时,从所述链表中读取对应的数据块信息,基于所述数据块信息获取对应的数据块进行运算,并基于运算结果更新所述数据块,直至完成所述运算阶段的所有迭代;
5、在分发阶段每一次迭代时,从更新后的数据块读取对应数据块信息,从而存取数据块的分发结果,直至完成所述分发阶段的所有迭代。
6、其中,所述将存取调取任务的所有迭代所需要的数据块信息存入链表,包括:
7、获取自身在所有迭代中的数据块顺序;
8、按照所述数据块顺序封装每一数据块的数据库信息;
9、将所有数据库信息存入所述链表。
10、其中,所述数据块信息包括数据块运算符、链表结束符、数据块大小以及数据块源地址。
11、其中,所述从所述链表中读取对应的数据块信息,基于所述数据块信息获取对应的数据块进行运算,包括:
12、从所述链表中读取对应的数据块信息,基于所述数据块信息读取当前数据块;
13、将所述当前数据块发送给下一个处理器,以及获取上一个处理器发送的上一个数据块;
14、对所述当前数据块以及所述上一个数据块进行运算,得到所述运算结果。
15、其中,所述基于所述数据块信息读取当前数据块,包括:
16、基于所述数据块信息从所述本地数据库读取所述当前数据块;
17、获取缓存的空余数据量;
18、在所述空余数据量高于预设阈值时,将所述当前数据块写入所述缓存,直至所述缓存达到写满状态。
19、其中,所述对所述当前数据块以及所述上一个数据块进行运算,包括:
20、响应于所述上一个数据块获取成功后,从所述缓存读取所述当前数据块;
21、将所述当前数据块与所述上一个数据块进行运算。
22、为解决上述技术问题,本技术还提出另一种本地数据的存取调度方法,所述存取调度方法应用于一种处理器系统,其中,所述处理器系统至少包括第一处理器、第二处理器以及第三处理器;所述存取调度方法包括:
23、所述处理器系统并行执行运算阶段的读取任务:所述第一处理器根据存取调取任务的第一链表在运算阶段的当前迭代次数,读取所述第一链表的当前数据块信息,并根据所述所述第一链表的当前数据块信息获取对应的第一当前数据块;所述第二处理器根据存取调取任务的第二链表在运算阶段的当前迭代次数,读取所述第二链表的当前数据块信息,并根据所述所述第二链表的当前数据块信息获取对应的第二当前数据块;所述第三处理器根据存取调取任务的第三链表在运算阶段的当前迭代次数,读取所述第三链表的当前数据块信息,并根据所述所述第三链表的当前数据块信息获取对应的第三当前数据块;
24、所述处理器系统并行执行运算阶段的运算任务:所述第一处理器将所述第一当前数据块发送给所述第二处理器,以使所述第二处理器将所述第一当前数据块和所述第二当前数据块进行运算,得到第二运算结果;所述第二处理器将所述第二当前数据块发送给所述第三处理器,以使所述第三处理器将所述第二当前数据块和所述第三当前数据块进行运算,得到第三运算结果;所述第三处理器将所述第三当前数据块发送给所述第一处理器,以使所述第一处理器将所述第三数据块和所述第一当前数据块进行运算,得到第一运算结果。
25、其中,所述存取调取方法还包括:
26、运算阶段结束后,所述处理器系统进入分发阶段;
27、所述处理器系统并行执行分发阶段的读取任务:在当前迭代次数,所述第一处理器从所述第一处理器的当前数据块读取第四运算结果,所述第二处理器从所述第二处理器的当前数据块读取第五运算结果,所述第三处理器从所述第三处理器的当前数据块读取第六运算结果;
28、所述处理器系统并行执行分发阶段的分发任务:所述第一处理器将所述第四运算结果发送给所述第二处理器,以使所述第二处理器存储所述第四运算结果;所述第二处理器将所述第五运算结果发送给所述第三处理器,以使所述第三处理器存储所述第五运算结果;所述第三处理器将所述第六运算结果发送给所述第一处理器,以使所述第一处理器存储所述第六运算结果。
29、为解决上述技术问题,本技术还提出一种存取调度装置,所述存取调度装置包括存储器以及与所述存储器耦接的处理器;其中,所述存储器用于存储程序数据,所述处理器用于执行所述程序数据以实现如上述的存取调度方法。
30、为解决上述技术问题,本技术还提出一种计算机存储介质,所述计算机存储介质用于存储程序数据,所述程序数据在被计算机执行时,用以实现上述的存取调度方法。
31、与现有技术相比,本技术的有益效果是:处理器将存取调取任务的所有迭代所需要的数据块信息存入链表;在运算阶段每一次迭代时,从所述链表中读取对应的数据块信息,从而存取数据块的运算结果,并更新所述数据块,直至完成所述运算阶段的所有迭代;在分发阶段每一次迭代时,从更新后的数据块读取对应数据块信息,从而存取数据块的分发结果,直至完成所述分发阶段的所有迭代。通过上述存取调度方法,采用链式dma的方式实现本地数据的存取调度,能够解放处理器资源,延时小,传输效率高,调度简单,握手开销小。
本文地址:https://www.jishuxx.com/zhuanli/20240730/195540.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。