本发明涉及测试,尤其涉及一种测例同步执行的方法及相关设备。
背景技术:
1、pytorch原生的分布式功能测例是通过单机的测例来模拟多机的测例。其中,单台机器上有多个gpu设备,一个或者多个gpu设备组成一个分布式计算单元。每个计算单元占据一个独立的进程,每个测例都会重新创建新的进程来执行,计算单元和计算单元之间采用一种依赖于共享文件系统的同步技术来保持测例的同步执行。这种同步技术的具体实现是:首先,每个进程都有一个barrier_id,初始化为0,每个进程对应一个单独的文件,这些文件都保存在同一个目录中。当计算单元和计算单元之间需要同步时,每个单元就对本进程barrier_id加1,并将结果写入到进程对应的文件中,接着,循环遍历目录中的所有文件,读取每个文件中记录的barrier_id,统计读到的值大于等于本进程当前的barrier_id的个数,当个数等于分布式计算单元的总数时,说明所有进程都执行到了同步点,即所有计算单元完成了同步,此时,跳出循环,所有进程各自继续执行后面的程序。
2、pytorch原生对分布式功能的测试方法只测到了单机的内部通信,没有涉及不同机器间进行协同的分布式功能;而且其中的进程间同步技术依赖于共享文件系统,同一个机器的文件当然可以共享,但是不同机器之间不一定存在共享文件系统,当协同执行分布式功能的不同机器无法共享文件系统或者没有搭建共享文件系统时,原生采用的进程间同步技术就会失效。
技术实现思路
1、本发明实施例提供了一种测例同步执行的方法及相关设备,可以不依赖于共享文件系统的进程间同步技术,支持多服务器中多进程间测例同步执行。
2、第一方面,本发明实施例提供了一种测例同步执行的方法,所述方法应用于一个或多个服务器,所述一个或多个服务器对应多个进程,每个所述多个进程执行多个测例,所述方法包括:
3、确定所述多个进程的同步点;
4、在所述多个进程间创建共享数据;
5、当所述多个进程中的任意一个进程执行到所述同步点时,对所述共享数据进行处理,以得到数据处理结果;
6、基于所述数据基于处理结果,继续执行所述多个测例。
7、第二方面,本发明实施例提供了一种测例同步执行的装置,所述装置对应多个进程,所述多个进程用于执行多个测例,所述装置包括:
8、确定模块,用于确定所述多个进程的同步点;
9、创建模块,用于在所述多个进程间创建共享数据;
10、处理模块,用于当所述多个进程中的任意一个进程执行到所述同步点时,对所述共享数据进行处理,以得到数据处理结果;
11、执行模块,用于基于所述数据处理结果,继续执行所述多个测例。
12、第三方面,本发明实施例提供了一种测例同步执行的设备,包括:处理器和存储器;所述处理器和存储器相连,其中,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行第一方面任一实现方式提供的测例同步执行的方法。
13、第四方面,本发明实施例提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行第一方面任一实现方式提供的测例同步执行的方法。
14、第五方面,本发明实施例提供了一种芯片系统,所述芯片系统应用于电子设备;所述芯片系统包括一个或多个接口电路,以及一个或多个处理器;所述接口电路和所述处理器通过线路互联;所述接口电路用于从所述电子设备的存储器接收信号,并向所述处理器发送所述信号,所述信号包括所述存储器中存储的计算机指令;当所述处理器执行所述计算机指令时,所述电子设备执行第一方面任一实现方式提供的测例同步执行的方法。
15、本申请实施例,通过确定多个进程的同步点,确定一个或多个服务器中对应的多个进程需要进行同步的位置,以便各进程之间可以实现同步;进一步,通过在多个进程间创建共享数据,以便各个进程可以共享使用该共享数据;当各进程执行到同步点时,对该共享数据做处理,多个进程间可以通过共享数据的处理结果了解其他进程处理的进度,进而实现进程间通信;通过基于上述处理结果,以便各个进程继续执行多个测例。通过该设置,当在不同机器之间不存在共享文件系统时,协同执行分布式功能的不同机器无法通过共享文件系统或者没有搭建共享文件系统时,仍然可以实现多进程间测例同步执行,保证多个进程的正确执行。
1.一种测例同步执行的方法,其特征在于,所述方法应用于一个或多个服务器,所述一个或多个服务器对应多个进程,每个所述多个进程执行多个测例,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述共享数据为共享队列,所述多个进程包括主进程,当所述多个进程中的主进程执行到所述同步点时,对所述共享数据进行处理,包括:
3.根据权利要求1所述的方法,其特征在于,所述共享数据为共享队列,所述多个进程包括多个工作进程,当所述多个进程中的任意一个工作进程执行到所述同步点时,对所述共享数据进行处理,包括:
4.根据权利要求3所述的方法,其特征在于,所述基于所述数据处理结果,继续执行所述多个测例,包括:
5.根据权利要求3所述的方法,其特征在于,所述工作进程的数量与主进程生成的队列元素的数量相同,以保证所述多个工作进程最终都能从所述共享队列中读取到元素。
6.根据权利要求1所述的方法,其特征在于,所述共享数据为共享标志位,当所述多个进程中的任意一个进程执行到所述同步点时,对所述共享数据进行处理,包括:
7.根据权利要求1-6任一项所述的方法,其特征在于,所述同步点为当前测例执行结束时。
8.一种测例同步执行的装置,其特征在于,所述装置对应多个进程,所述多个进程用于执行多个测例,所述装置包括:
9.一种测例同步执行的设备,其特征在于,包括:处理器和存储器;
10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1-7任一项所述的测例同步执行的方法。
11.一种芯片系统,其特征在于,所述芯片系统应用于电子设备;所述芯片系统包括一个或多个接口电路,以及一个或多个处理器;所述接口电路和所述处理器通过线路互联;所述接口电路用于从所述电子设备的存储器接收信号,并向所述处理器发送所述信号,所述信号包括所述存储器中存储的计算机指令;当所述处理器执行所述计算机指令时,所述电子设备执行如权利要求1至7任意一项所述的方法。