CN116484630A - 模拟方法、模拟装置、电子设备和计算机可读存储介质 - Google Patents
模拟方法、模拟装置、电子设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN116484630A CN116484630A CN202310482953.5A CN202310482953A CN116484630A CN 116484630 A CN116484630 A CN 116484630A CN 202310482953 A CN202310482953 A CN 202310482953A CN 116484630 A CN116484630 A CN 116484630A
- Authority
- CN
- China
- Prior art keywords
- inter
- process communication
- time slice
- simulation
- transmission
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 594
- 238000004088 simulation Methods 0.000 title claims abstract description 198
- 238000003860 storage Methods 0.000 title claims abstract description 20
- 230000006854 communication Effects 0.000 claims abstract description 318
- 238000004891 communication Methods 0.000 claims abstract description 277
- 230000008569 process Effects 0.000 claims abstract description 272
- 230000005540 biological transmission Effects 0.000 claims abstract description 173
- 238000004364 calculation method Methods 0.000 claims description 79
- 230000015654 memory Effects 0.000 claims description 36
- 239000011159 matrix material Substances 0.000 claims description 32
- 238000012360 testing method Methods 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 15
- 238000010998 test method Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 description 41
- 238000000354 decomposition reaction Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 11
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种模拟方法、模拟装置、电子设备和计算机可读存储介质。该模拟方法包括:确定并行的多个进程的模拟操作过程,其中,模拟操作过程包括进程间通信过程;根据模拟操作过程,汇总多个进程在模拟操作过程的每个时间片内的进程间通信消息,其中,在模拟操作过程中每经过预定时长为一个时间片;根据传输带宽,确定进程间通信消息在每个时间片的传输进度,以根据传输进度得到进程间通信过程所需的时间片数。该模拟方法降低了对模拟环境的要求并简化了模拟过程。
Description
技术领域
本公开的实施例涉及一种模拟方法、模拟装置、电子设备和计算机可读存储介质。
背景技术
随着处理器、高性能网络的发展,运行在各种大规模并行处理(MassivelyParallel Processing,缩写MPP)环境下的高性能计算(High Performance Computing,缩写HPC)应用的规模也迅速增长。这类应用通常涉及超大规模进程间通过高速互连网络通信,协作完成一个大型课题的求解。
发明内容
本公开至少一个实施例提供一种模拟方法,包括:确定并行的多个进程的模拟操作过程,其中,所述模拟操作过程包括进程间通信过程;根据所述模拟操作过程,汇总所述多个进程在所述模拟操作过程的每个时间片内的进程间通信消息,其中,在所述模拟操作过程中每经过预定时长为一个所述时间片;根据传输带宽,确定所述进程间通信消息在所述每个时间片的传输进度,以根据所述传输进度得到所述进程间通信过程所需的时间片数。
例如,在本公开上述实施例的至少一个示例提供的模拟方法中,所述模拟操作过程包括第一时间片,在所述第一时间片内具有多个进程间通信消息;根据传输带宽,确定所述进程间通信消息在所述每个时间片的传输进度,包括:针对所述第一时间片,将所述传输带宽分配给所述多个进程间通信消息,以得到每个所述进程间通信消息在所述第一时间片内对应的带宽;基于每个所述进程间通信消息在所述第一时间片内对应的带宽,确定每个所述进程间通信消息在所述第一时间片内的传输数据量;根据每个所述进程间通信消息在所述第一时间片内的传输数据量,确定每个所述进程间通信消息在所述第一时间片的传输进度。
例如,在本公开上述实施例的至少一个示例提供的模拟方法中,所述多个进程间通信消息包括第一进程间通信消息;基于每个所述进程间通信消息在所述第一时间片内对应的带宽,确定每个所述进程间通信消息在所述第一时间片内的传输数据量,包括:计算所述第一进程间通信消息在所述第一时间片内对应的带宽与所述第一时间片的乘积,将所述乘积作为所述第一进程间通信消息在所述第一时间片内的传输数据量。根据每个所述进程间通信消息在所述第一时间片内的传输数据量,确定每个所述进程间通信消息在所述第一时间片的传输进度,包括:根据所述第一进程间通信消息在所述第一时间片内的传输数据量以及所述第一进程间通信消息在所述第一时间片之前的传输数据量,确定所述第一进程间通信消息的总传输数据量;根据第一进程间通信消息的总传输数据量以及所述第一进程间通信消息的消息数据量,确定所述第一进程间通信消息在所述第一时间片内的传输进度。
例如,在本公开上述实施例的至少一个示例提供的模拟方法中,将所述传输带宽分配给所述多个进程间通信消息,包括:将所述传输带宽均分给所述多个进程间通信消息。
例如,在本公开上述实施例的至少一个示例提供的模拟方法中,所述模拟操作过程还包括计算过程;所述模拟方法还包括:获取所述计算过程的时长,并将所述计算过程的时长换算为时间片数。基于所述进程间通信过程所需的时间片数和所述计算过程换算的时间片数,确定所述模拟操作过程所需的时间片数。
例如,在本公开上述实施例的至少一个示例提供的模拟方法中,确定并行的多个进程的模拟操作过程,包括:根据预定测试流程,确定并行的多个进程的模拟操作过程;其中,所述预定测试流程包括:将所述多个进程排列为MP*NP矩阵,其中,MP和NP均为正整数;位于所述MP*NP矩阵的同一行的多个进程进行行方向通信;位于所述MP*NP矩阵的同一列的多个进程进行列方向通信;其中,所述进程间通信过程包括该行方向通信和列方向通信。
例如,在本公开上述实施例的至少一个示例提供的模拟方法中,所述预定测试流程还包括:选取所述MP*NP矩阵中的一列作为主列;在执行所述行方向通信和所述列方向通信前,对位于所述主列的多个进程执行第一计算操作,得到计算结果;在执行所述行方向通信和所述列方向通信后,接收所述进程间通信消息的进程利用接收的所述进程间通信消息执行第二计算操作,其中,所述计算过程包括所述第一计算操作和所述第二计算操作;其中,位于所述MP*NP矩阵的同一行的多个进程进行行方向通信,包括:位于所述主列的多个进程向同行的其他进程广播进程间通信消息,其中,所述进程间消息包括所述计算结果。
例如,在本公开上述实施例的至少一个示例提供的模拟方法中,所述多个进程分布在多个节点运行;所述多个进程间通信消息包括至少一个跨节点的进程间通信消息;所述传输带宽包括节点间的传输带宽。将所述传输带宽分配给所述多个进程间通信消息,以得到每个所述进程间通信消息在所述第一时间片内对应的带宽,包括:将所述节点间的传输带宽分配给所述至少一个跨节点的进程间通信消息,以得到每个所述跨节点的进程间通信消息在所述第一时间片内对应的带宽。
例如,在本公开上述实施例的至少一个示例提供的模拟方法中,所述多个进程间通信消息包括至少一个节点内的进程间通信消息;所述传输带宽包括节点内的传输带宽。将所述传输带宽分配给所述多个进程间通信消息,以得到每个所述进程间通信消息在所述第一时间片内对应的带宽,包括:将所述节点内的传输带宽分配给所述至少一个节点内的进程间通信消息,以得到每个所述节点内的进程间通信消息在所述第一时间片内对应的带宽。
本公开至少一个实施例提供一种模拟装置,包括确定单元、汇总单元和进度单元,确定单元配置为确定并行的多个进程的模拟操作过程,其中,所述模拟操作过程包括进程间通信过程;汇总单元配置为根据所述模拟操作过程,汇总所述多个进程在所述模拟操作过程的每个时间片内的进程间通信消息,其中,在所述模拟操作过程中每经过预定时长为一个所述时间片;进度单元配置为根据传输带宽,确定所述进程间通信消息在所述每个时间片的传输进度,以根据所述传输进度得到所述进程间通信过程所需的时间片数。
本公开至少一个实施例提供一种电子设备,包括处理器;存储器,存储有一个或多个计算机程序模块;其中,所述一个或多个计算机程序模块被配置为由所述处理器执行,用于实现本公开任一实施例提供的模拟方法。
本公开至少一个实施例提供一种计算机可读存储介质,存储有非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时可以实现本公开任一实施例提供的模拟方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1示出了一种高性能计算应用的处理流程示意图;
图2示出了本公开至少一实施例提供的一种模拟方法的流程图;
图3示出了本公开至少一实施例提供的一种预定测试流程的示意图;
图4示出了本公开至少一实施例提供的基于预定测试流程进行模拟的示意图;
图5示出了本公开至少一个实施例提供的一种模拟装置的示意框图;
图6示出了本公开至少一个实施例提供的一种电子设备的示意框图;
图7示出了本公开至少一个实施例提供的另一种电子设备的示意框图;以及
图8示出了本公开至少一个实施例提供的一种计算机可读存储介质的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
图1示出了一种高性能计算应用的处理流程示意图。
如图1所示,高性能计算应用可以包括多个进程,例如进程A0~An(n为正整数),各个进程可以独立地执行一些本地计算操作,可以执行进程之间的点对点消息,还可以执行全局或分组集合通信(例如广播、规约、发散、收集等)。
高性能计算应用的性能是个非常复杂的问题,不仅受限于本地计算部分的性能,更要受通信性能的影响。在高性能计算应用运行在大规模并行处理环境之前,通常需要对高性能计算应用进行性能优化和评估,软件模拟是一种重要的性能评估手段。
在一种模拟方案中,可以在真实环境运行一次需要被模拟的高性能计算应用,并在模拟过程中进行数据采集,采集的数据可以包括每个进程调用的消息传递接口(MPI)的参数及调用消息传递接口的时间点。例如,可以在本地小的集群环境下,使用较少的计算资源,将原先编译的应用程序通过模拟器加载,识别其中消息传递接口,在基于节点的模拟方式(node based emulation)中,消息可以以本地集群的消息传递接口实现,在正常模拟模式(normal emulation)中,节点内消息可以以共享内存方式实现,节点间消息可以以节点间RDMA(Remote Direct Memory Access,远程直接存储访问)实现。
上述模拟方式可以在较小的并行处理环境下模拟较大的高性能计算应用,且高性能计算应用无需修改。但是,这一模拟方式同时存在较多的缺点,例如,这种模拟方式需要真实地执行高性能计算的所有计算和通信,需要配置真实的并行处理(MPP)环境,因而,无法在不具备真实地并行处理环境的条件下进行模拟。由于需要完整执行所有通信,即便模拟开发人员对应用程序了解,该框架也不支持简化模拟过程。对于大规模应用,即便仅仅模拟通信也是非常耗费资源的。并且,使用较小的计算资源模拟整个大的高性能计算应用,导致其模拟速度较慢,效率较低。该模拟(simulation)方式也无法用于预测在未交付的并行处理环境中运行高性能计算应用的性能。该模拟方式更类似于常规的仿真(emulation)。
本公开至少一个实施例提供一种模拟方法、模拟装置、电子设备和计算机可读存储介质。该模拟方法包括:确定并行的多个进程的模拟操作过程,其中,模拟操作过程包括进程间通信过程;根据模拟操作过程,汇总多个进程在模拟操作过程的每个时间片内的进程间通信消息,其中,在模拟操作过程中每经过预定时长为一个时间片;根据传输带宽,确定进程间通信消息在每个时间片的传输进度,以根据传输进度得到进程间通信过程所需的时间片数。
根据本公开至少一实施例的模拟方法,按照测试程序所设定的流程来对每个进程的计算和通信过程进行逻辑模拟,以确定各个进程的模拟操作过程,即利用测试程序的流程来描述各个进程的计算和通信的过程,以确定每个进程在什么时间执行什么操作,然后基于模拟操作过程,以时间片为时间单位,汇总进程间通信消息,并根据传输带宽模拟各个进程间通信消息的传输,从而得到进程间通信过程所需的时间片数,该进程间通信过程所需的时间片数可以反映出大规模并行处理环境在运行高性能计算应用时进程间通信所需的时间的长短,从而实现了对通信过程的模拟。
基于上述这一方案,本公开至少一实施例无需真实地运行高性能计算应用,因而在不具备并行计算环境的条件下也能够进行模拟,降低了对模拟环境的要求。并且,简化了模拟过程,模拟所需的资源随之减少,模拟速度加快。
此外,本公开至少一实施例的各种参数可以基于将要运行高性能计算应用的大规模并行处理环境的参数而定的,从而模拟的结果能够较为准确地反映高性能计算应用的真实运行情况。
图2示出了本公开至少一实施例提供的一种模拟方法的流程图。
如图2所示,该方法可以包括步骤S110~S130。
步骤S110:确定并行的多个进程的模拟操作过程。其中,模拟操作过程包括进程间通信过程。
步骤S120:根据模拟操作过程,汇总多个进程在模拟操作过程的每个时间片内的进程间通信消息。其中,在模拟操作过程中每经过预定时长为一个时间片。
步骤S130:根据传输带宽,确定进程间通信消息在每个时间片的传输进度,以根据传输进度得到进程间通信过程所需的时间片数。
例如,本公开至少一实施例的模拟方法可以用于模拟高性能计算应用(HPC应用),高性能计算应用可以将需要执行的计算任务拆分给多个进程执行,该多个进程并行计算并且彼此之间进行通信,例如,一些进程计算得到中间结果后可以将中间结果发送给其他进程,一些进程可以接收其他进程的中间结果以基于该中间结果进行后续的计算。高性能计算应用既包含计算部分也包括通信部分。
例如,步骤S110可以包括:根据预定测试流程,确定并行的多个进程的模拟操作过程。例如,可以利用测试程序所设定的流程,对每个进程的计算和通信过程进行逻辑模拟,即利用测试程序的流程来描述多个进程的计算过程和进程间通信过程,以确定每个进程在什么时间执行什么操作。
例如,预定测试流程例如可以是HPL(High Performance Linpack)测试程序的测试流程,HPL测试程序是一套被用于测量高性能计算机实际峰值计算性能的基准测试程序,例如,HPL测试程序可以计算矩阵的LU分解(三角分解)结果,然后回代计算出矩阵方程的解。LU分解使用基于分块的方法,矩阵被按列划分为块,每次循环计算一个块的LU分解结果,然后更新剩余的矩阵。依次执行,直到完成整个矩阵的分解。
例如,本公开实施例可以利用HPL测试程序来描述多个进程的计算过程和进程间通信过程。但是本公开实施例不以HPL测试程序为限,除了HPL测试程序之外,在其他实施例中,也可以采用其他测试程序来描述多个进程的模拟操作过程,例如Linpack100等。
例如,预定测试流程可以包括:将多个进程排列为MP*NP矩阵,其中,MP和NP均为正整数,MP表示行方向进程数,NP表示列方向进程数;位于MP*NP矩阵的同一行的多个进程进行行方向通信;位于MP*NP矩阵的同一列的多个进程进行列方向通信;其中,进程间通信过程包括该行方向通信和列方向通信。
例如,预定测试流程还可以包括:选取MP*NP矩阵中的一列作为主列;在执行行方向通信和列方向通信前,对位于主列的多个进程执行第一计算操作,得到计算结果,其中,进程间消息包括计算结果;在执行行方向通信和列方向通信后,接收进程间通信消息的进程利用接收的进程间通信消息执行第二计算操作。计算过程包括第一计算操作和第二计算操作。位于MP*NP矩阵的同一行的多个进程进行行方向通信可以包括:位于主列的多个进程向同行的其他进程广播进程间通信消息。
图3示出了本公开至少一实施例提供的一种预定测试流程的示意图。
如图3所示,可以预先确定多个进程的数量,并将多个进程排列为MP行NP列的矩阵。进程的数量可以根据将要运行高性能计算应用的大规模并行处理环境的运算能力而定,例如该大规模并行处理环境包括多个节点,该多个节点可以同时运行100个进程,那么该多个进程的数量例如可以设定为100。可以将该100个进程排列为10行10列的矩阵,并确定每个进程的坐标(i,j)(步骤S201),i为小于等于MP的正整数,j为小于等于NP的正整数。HPL测试程序可以先选择主列(或主元)Curcol,主列Curcol可以表示当前块的进程列号,对于主列中的每个进程,可以执行协同分解计算。例如,若主列Curcol=j(步骤S202),那么列号为j的每个进程执行协同分解计算(步骤S203),上述的第一计算操作例如为该协同分解计算。列号为j的每个进程得到计算结果后,发起行方向广播(步骤S204),例如,第1行第j列的进程向第1行的其他进程广播计算结果,第2行第j列的进程向第2行的其他进程广播计算结果,等等。第j列之外的其他列的各个进程接收行方向广播(步骤S205)。行方向广播结束后,可以执行列方向交换(步骤S206),例如,同列不同行的进程进行数据交换。列方向交换之后,每个进程可以基于接收的数据执行矩阵乘(步骤S207),上述的第二计算操作例如为该矩阵乘操作。k表示当前计算的块在全局矩阵中的位置,NB表示数据划分的最小单位,k+=NB表示继续下一个块的分解、更新操作,k<N表示尚未完成所有块的分解,当满足k<N的条件时,返回步骤S202进入下一次迭代过程,直至完成整个矩阵的LU分解过程,退出循环。
例如,该预定测试流程中第一计算操作和第二计算操作可以用于模拟高性能计算应用的计算过程,行方向广播和列方向交换可以用于模拟高性能计算应用的进程间通信过程。例如,在一些实施例中,可以不用真实地执行该预定测试流程,根据该预定测试流程的步骤来确定各个进程的操作过程即可。例如,在另一些实施例中,也可以执行该预定测试流程。
例如,对于不同的高性能计算应用,第一计算操作和第二计算操作所执行的算法以及进程间通信消息的长短也会有所不同,具体可以根据实际情况而定。
例如,本公开实施例的时间片可以理解为时间段,一个时间片作为一个时间单位。从模拟操作过程开始,每经过预定时长就算作一个时间片,预定时长例如可以是1ms(毫秒),预定时长可以根据实际情况而定,本公开对此不做限制。为了便于说明,每个时间片的时长例如设定为1。
例如,模拟操作过程还包括计算过程,本公开实施例的模拟方法还可以包括:获取计算过程的时长,并将计算过程的时长换算为时间片数。
例如,在一些实施例中,进程的计算过程可以由开发人员估算所需的时长,例如,为了便于说明,第一计算过程所需的时长设为100,可以换算为100个时间片,若从第1个时间片开始计算,那么从第1个时间片至第100个时间片期间,列号为j的进程执行第一计算操作,其他列的进程处于等待状态。从第101个时间片开始,列号为j的进程发起行方向广播,产生了多个进程间通信消息。广播可以由多种不同的实现方式,例如,采用称为spread-roll的两阶段交换算法。
例如,进程组成的阵列包括第0行~第9行,第0行包括进程A00~A09,第1行包括进程A10~A19,第2行包括进程A20~A29,…,第9行包括进程A90~A99。若当前主列为第0列,那么当第0列的进程执行完第一计算操作并得到计算结果后,第0行中的A00与A01~A09中的每个进程之间均可以形成一个传输任务,例如,A00和A01之间、A00和A02之间、A00和A03之间等等均形成一个传输任务,其他行同理。
例如,在步骤S120中,以时间片作为时间单位来对进程间通信消息进行统计,例如,针对每个时间片,汇总当前时间片内产生的全部进程间通信消息,并将进程间通信消息发送给对应的传输模拟模块。在步骤S130中,利用传输模拟模块模拟进程间通信消息的传输过程。
例如,在步骤S130中,传输带宽可以根据将要运行高性能计算应用的大规模并行处理环境的传输能力而定。
例如,大规模并行处理系统的单个节点可以使用多核处理器,以运行多个进程。一个节点可以配置1~2块网卡,当本节点的进程通信对象是在本节点之外的进程时,可以通过网卡来传输数据。在至少一个实施例中,传输模拟模块可以用于模拟网卡的传输,传输模拟模块可以提供消息收发接口,消息收发接口例如包含msg_send(消息发送)/msg_recv(消息接收)/msg_sdrv(消息对发接口)三类,接口的参数可以包括:对方进程的进程号、消息长度、起始时间片号,此接口可以供模拟主流程调用。当本节点的进程通信对象是在本节点内的进程时,可以通过共享内存来传输数据,在至少一个实施例中,传输模拟模块可以用于模拟共享内存的传输。
例如,每个传输模拟模块可以维护一个发送队列和一个接收队列,每个进程在每个时间片内的进程间通信消息,可以进入对应的网卡模拟模块的发送队列或接收队列。例如,在第101个时间片内,进程A00将要向进程A01发送进程间通信消息,那么在进程A00对应的传输模拟模块的发送队列中增加该进程间通信消息,并在进程A01对应的传输模拟模块的接收队列中增加该进程间通信消息。
例如,模拟操作过程包括第一时间片,以第一时间片为例,在第一时间片内例如存在多个待传输的进程间通信消息。在步骤S130中,针对该第一时间片,可以将传输带宽分配给多个进程间通信消息,以得到每个进程间通信消息在第一时间片内对应的带宽;基于每个进程间通信消息在第一时间片内对应的带宽,确定每个进程间通信消息在第一时间片内的传输数据量;根据每个进程间通信消息在第一时间片内的传输数据量,确定每个进程间通信消息在第一时间片的传输进度。第一时间片可以是模拟操作过程中的任意一个时间片,在其他时间片内参照第一时间片的流程执行,也就是说,每个时间片内均执行该第一时间片内的操作。
例如,在一些实施例中,在每个时间片内,可以将传输带宽均分给多个进程间通信消息。例如,在每个时间片内,统计当前需要传输的进程间通信消息的数量,将带宽按照该数量进行均分。
例如,在另一些实施例中,在每个时间片内,也可以根据待传输的进程间通信消息的权重(或优先级)分配带宽。例如,权重(或优先级)高的进程间通信消息可以分配较多的带宽,反之,权重(或优先级)低的进程间通信消息可以分配较少的带宽。
例如,可以利用传输模拟模块根据传输带宽模拟消息的传输过程。例如,有100个传输模拟模块,在第一时间片内,若100个传输模拟模块均具有待传输的进程间通信消息,则可以将总传输带宽分配给该100个传输模拟模块,每个传输模拟模块基于分配的带宽,计算各自的进程间通信消息的传输数据量。在第一时间片内,若只有其中50个传输模拟模块具有待传输的进程间通信消息,则可以将总传输带宽分配给该50个传输模拟模块,该50个传输模拟模块各自基于分配的带宽计算进程间通信消息的传输数据量。
例如,多个进程间通信消息包括第一进程间通信消息,可以计算第一进程间通信消息在第一时间片内对应的带宽与第一时间片的乘积,将该乘积作为第一进程间通信消息在第一时间片内的传输数据量。一个时间片内一个进程间通信消息发送的字节数=分配的带宽*时间片长度。
例如,根据每个进程间通信消息在第一时间片内的传输数据量,确定每个进程间通信消息在第一时间片的传输进度,包括:根据第一进程间通信消息在第一时间片内的传输数据量以及第一进程间通信消息在第一时间片之前的传输数据量,确定第一进程间通信消息的总传输数据量;根据第一进程间通信消息的总传输数据量以及第一进程间通信消息的消息数据量,确定第一进程间通信消息在第一时间片内的传输进度。第一进程间通信消息可以是任意一个进程间通信消息,对其他进程间通信消息的操作可以参照对第一进程间通信消息的操作,也就是说,对于每个进程间通信消息均可以执行该第一进程间通信消息对应的操作。
例如,针对每个进程间通信消息,传输模拟模块可以确定其在各个时间片内的传输进度,当一个进程间通信消息的剩余数据量为0时,其传输进度为100%,表示该进程间通信消息传输完成。
例如,根据HPL测试程序的流程,在步骤S130中,可以得到在行方向广播阶段的每个时间片内各个进程间通信消息的传输进度,并得到从开始广播到传输完全部的行方向广播消息所需的时间片数。
例如,在一些实施例中,步骤S120和S130可以同时执行,例如,在某个时间片内,可以边汇总新产生进程间通信消息并将其加入对应的传输模拟模块的队列中,边利用模拟之前获得的进程间通信消息的传输过程。例如,在另一些实施例中,步骤S120和S130可以先后执行。
图4示出了本公开至少一实施例提供的基于预定测试流程进行模拟的示意图。
如图4所示,对于HPL测试流程,随着时间的推移,当模拟进度到达步骤S203的计算阶段时,可以将步骤S203的计算时长换算为时间片数。当模拟进度到达步骤S204和S205的行方向广播阶段时,可以在每个时间片内汇总产生的进程间通信消息,并在每个时间片内模拟进程间通信消息的传输过程,直至行方向广播阶段产生的进程间通信消息均传输完毕,可以汇总得到行方向广播阶段所需的时间片数。同样地,当模拟进度到达步骤S206的列方向交换阶段时,可以在每个时间片内汇总产生的进程间通信消息,并在每个时间片内模拟进程间通信消息的传输过程,直至列方向交换阶段产生的进程间通信消息均传输完毕,可以汇总得到列方向交换阶段所需的时间片数。当模拟进度到达步骤S207的计算阶段时,可以将步骤S207的计算时长换算为时间片数。基于此,可以得到每次迭代中进程间通信过程所需的时间片数,进而可以得到整个模拟操作过程中的进程间通信过程所需的时间片数,该进程间通信过程所需的时间片数可以反映出高性能计算应用在真实的大规模并行处理环境中运行时执行进程间通信所需的时间的长短。
例如,当采用除HPL测试程序之外的其他测试程序来确定多个进程的模拟操作过程时,也可以参照上述流程,若执行进度到达计算阶段,则将计算阶段的时间换算为时间片数,若执行进度到达传输阶段,则在每个时间片内汇总当前传输阶段产生的进程间通信消息,并在每个时间片内模拟进程间通信消息的传输过程,直至当前传输阶段产生的进程间通信消息均传输完毕,可以汇总得到当前传输阶段所需的时间片数。
例如,通过上述实施例,可以得到进程间通信过程所需的时间片数和计算过程换算的时间片数,进而可以确定整个模拟操作过程所需的时间片数。该整个模拟操作过程所需的时间片数可以反映出高性能计算应用在真实的大规模并行处理环境下运行时所需的时间的长短。
例如,该多个进程分布在多个节点运行,该多个进程间通信消息包括至少一个跨节点的进程间通信消息,传输带宽包括节点间的传输带宽。将传输带宽分配给多个进程间通信消息,以得到每个进程间通信消息在第一时间片内对应的带宽可以包括:将节点间的传输带宽分配给至少一个跨节点的进程间通信消息,以得到每个跨节点的进程间通信消息在第一时间片内对应的带宽。
例如,跨节点的进程间通信通过网卡实现,节点间的传输带宽可以根据将要运行高性能计算应用的大规模并行处理环境的网卡的带宽而定。
例如,若大规模并行处理环境中的每个节点运行一个进程,那么该多个进程中任意两个进程间的通信均为跨节点的进程间通信。若每个节点运行多个进程,那么可以根据各个节点包含的进程的标识,确定每个进程间的通信是否为跨节点的进程间通信。汇总过程中,可以将跨节点的进程间通信消息汇总在一起,并在每个时间片内,将节点间的总传输带宽分配给当前时间片内待传输的各个跨节点进程间通信消息。
例如,多个进程间通信消息包括至少一个节点内的进程间通信消息,传输带宽包括节点内的传输带宽。将传输带宽分配给多个进程间通信消息,以得到每个进程间通信消息在第一时间片内对应的带宽,包括:将节点内的传输带宽分配给至少一个节点内的进程间通信消息,以得到每个节点内的进程间通信消息在第一时间片内对应的带宽。
例如,节点内的进程间通信通过节点内的共享内存实现,节点内的传输带宽可以根据将要运行高性能计算应用的大规模并行处理环境中各个节点的共享内存的带宽而定。
例如,若大规模并行处理环境中的每个节点运行多个进程,那么可以根据各个节点包含地进程的标识,确定各个进程间的通信是否为节点内的进程间通信。汇总过程中,可以将节点内的进程间通信消息汇总在一起,并在每个时间片内,将节点内的总传输带宽分配给当前时间片内待传输的各个节点内进程间通信消息。
根据上述本公开至少一实施例的模拟方法,按照测试程序所设定的流程来对每个进程的计算和通信过程进行逻辑模拟,以确定各个进程的模拟操作过程,即利用测试程序的流程来描述各个进程的计算和通信的过程,以确定每个进程在什么时间执行什么操作,然后基于模拟操作过程,以时间片为时间单位,汇总进程间通信消息,并根据传输带宽模拟各个进程间通信消息的传输,从而得到进程间通信过程所需的时间片数,该进程间通信过程所需的时间片数可以反映出大规模并行处理环境在运行高性能计算应用时进程间通信所需的时间的长短,从而实现了对通信过程的模拟。
基于上述这一方案,本公开至少一实施例无需真实地运行高性能计算应用,因而在不具备并行计算环境的条件下也能够进行模拟,降低了对模拟环境的要求。并且,简化了模拟过程,模拟所需的资源随之减少,模拟速度加快。
此外,本公开至少一实施例的各种参数可以基于将要运行高性能计算应用的大规模并行处理环境的参数而定的,因此,模拟的结果能够较为准确地反映高性能计算应用的真实运行情况。
根据本公开至少一实施例的模拟方法,引入了时间片的概念,将进程间通信消息的传输以时间片为单位执行,可以较为准确地模拟通信过程。通过在每个时间片内向各个进程间通信消息分配总带宽,并根据分配的带宽计算各个进程间通信消息的传输进度,能够较为准确地模拟真实的传输过程。
根据本公开至少一实施例的模拟方法,大规模系统主要的瓶颈在于通信,本公开实施例的模拟方案至少能够模拟高性能计算应用的通信过程,至少能够反映高性能计算应用在大规模并行处理环境下运行时的进程间通信情况。
根据本公开至少一实施例的模拟方法,除了模拟通信过程,还可以模拟计算过程。将计算过程折算为时间片数,根据进程间通信过程所需的时间片数和计算过程所需的时间片数,可以得到整个模拟操作过程所需的时间片数。利用该整体模拟操作过程所需的时间片数可以较为准确地反映高性能计算应用的整体运行情况。
根据本公开至少一实施例的模拟方法,采用将进程排列为矩阵,主列进程分解计算,并进行行方向广播和列方向交换的预定测试流程,可以简单有效地实现对各个进程的操作模拟。
根据本公开至少一实施例的模拟方法,可以模拟跨节点的进程间通信,还可以模拟节点内的进程通信,使得模拟更为全面。
本公开至少一实施例的模拟方法,可以纯软件手段模拟网络的流量,对于应用的其他部分,可以根据应用开发人员对程序的理解直接估算执行时间。模拟的基本时间单位称为时间片,在每个时间片,模拟每个进程的操作。如果当前进程应该执行的是计算,则将这段计算的时间直接折算为时间片数;如果当前进程应该执行的是消息通信,则可以发送给传输模拟部件进行统一模拟。
例如,在每个时间片的最后,每个传输模拟部件可以统计本时间片内本传输模拟部件的消息总数,根据平均分配带宽的原则,设定本时间片每个消息传输的数据量。当消息的剩余长度减少到0时,表示这条消息传输完成。
例如,本公开至少一实施例的模拟方法借鉴HPL测试程序的测试过程,把多个进程映射到一个二维网格,每个进程的通信是和与其同行或同列的进程进行。本公开实施例在不影响模拟基本框架的情况下对模拟做了适当简化,例如忽略了行交换数据准备的拷贝时间开销,这些开销同样可以基于处理器本身的性能折算为时间片。
例如,大规模并行处理系统由于规模庞大,在节点之外的网络总是存在裁剪,例如常见的胖树网络由一层全连接的超节点和裁剪的超节点间网络组成,当消息跨越超节点时,也可以根据超节点间网络带宽上限对这些消息的带宽进行限制。
例如,对于模拟流程中多个进程的模拟方式,示例性而非限制性地提供了以下技术来实现:
例如,一些实施例中,可以基于有限状态机进行模拟,利用不同的执行状态来表征各个步骤,如协同分解计算、矩阵乘、行方向广播阶段、列方向交换阶段等,可以分别设置不同的执行状态。例如,当某个进程执行至协同分解计算阶段时,利用一个执行状态表示当前阶段为协同分解计算阶段,当该进程执行至下一个行方向广播阶段时,切换为另一个执行状态,以利用该另一个执行状态表征当前阶段为行方向广播阶段。对于计算部分,可以直接进行时间片的累加,然后进入下一执行态,当执行到通信阶段时,把消息通过接口告知传输模拟模块。执行完一次迭代后,可以进入下一次迭代程序。
例如,另一些实施例中,可以基于协程进行模拟,协程和进程类似,可以随时切换,并在切回时回到之前的中断点,从编程的角度会更便捷一些。
例如,另一些实施例中,可以基于多进程进行模拟。
图5示出了本公开至少一个实施例提供的一种模拟装置300的示意框图。
例如,如图5所示,该模拟装置300包括确定单元310、汇总单元320和进度单元330。这些组件通过总线系统和/或其它形式的连接机构(未示出)互连。例如,这些模块可以通过硬件(例如电路)模块、软件模块或二者的任意组合等实现,以下实施例与此相同,不再赘述。例如,可以通过中央处理单元(CPU)、图像处理器(GPU)、张量处理器(TPU)、现场可编程逻辑门阵列(FPGA)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元以及相应计算机指令来实现这些单元。应当注意,图5所示的模拟装置300的组件和结构只是示例性的,而非限制性的,根据需要,模拟装置300也可以具有其他组件和结构。
确定单元310配置为确定并行的多个进程的模拟操作过程,其中,模拟操作过程包括进程间通信过程。确定单元310例如可以执行图2描述的步骤S 10。
汇总单元320配置为根据模拟操作过程,汇总多个进程在模拟操作过程的每个时间片内的进程间通信消息,其中,在模拟操作过程中每经过预定时长为一个时间片。汇总单元320例如可以执行图2描述的步骤S120。
进度单元330配置为根据传输带宽,确定进程间通信消息在每个时间片的传输进度,以根据传输进度得到进程间通信过程所需的时间片数。进度单元330例如可以执行图2描述的步骤S330。
例如,确定单元310、汇总单元320和进度单元330可以为硬件、软件、固件以及它们的任意可行的组合。例如,确定单元310、汇总单元320和进度单元330可以为专用或通用的电路、芯片或装置等,也可以为处理器和存储器的结合。关于上述各个单元的具体实现形式,本公开的实施例对此不作限制。
例如,确定单元310、汇总单元320和进度单元330可以包括存储在存储器中的代码和程序;处理器可以执行该代码和程序以实现如上所述的确定单元310、汇总单元320和进度单元330的一些功能或全部功能。例如,确定单元310、汇总单元320和进度单元330可以是专用硬件器件,用来实现如上所述的确定单元310、汇总单元320和进度单元330的一些或全部功能。例如,确定单元310、汇总单元320和进度单元330可以是一个电路板或多个电路板的组合,用于实现如上所述的功能。在本公开实施例中,该一个电路板或多个电路板的组合可以包括:(1)一个或多个处理器;(2)与处理器相连接的一个或多个非暂时的存储器;以及(3)处理器可执行的存储在存储器中的固件。
需要说明的是,本公开的至少一实施例中,模拟装置300的各个单元与前述的模拟方法的各个步骤对应,关于模拟装置300的具体功能可以参考关于模拟方法的相关描述,此处不再赘述。图5所示的模拟装置300的组件和结构只是示例性的,而非限制性的,根据需要,该模拟装置300还可以包括其他组件和结构。该模拟装置300可以包括更多或更少的电路或单元,并且各个电路或单元之间的连接关系不受限制,可以根据实际需求而定。各个电路或单元的具体构成方式不受限制,可以根据电路原理由模拟器件构成,也可以由数字芯片构成,或者以其他适用的方式构成。
例如,在本公开上述实施例的至少一个示例提供的模拟装置中,模拟操作过程包括第一时间片,在第一时间片内具有多个进程间通信消息。进度单元330进一步包括分配子单元、数据量确定子单元和进度确定子单元,分配子单元配置为:针对第一时间片,将传输带宽分配给多个进程间通信消息,以得到每个进程间通信消息在第一时间片内对应的带宽。数据量确定子单元配置为:基于每个进程间通信消息在第一时间片内对应的带宽,确定每个进程间通信消息在第一时间片内的传输数据量。进度确定子单元配置为:根据每个进程间通信消息在第一时间片内的传输数据量,确定每个进程间通信消息在第一时间片的传输进度。
例如,在本公开上述实施例的至少一个示例提供的模拟装置中,多个进程间通信消息包括第一进程间通信消息。数据量确定子单元进一步配置为:计算第一进程间通信消息在第一时间片内对应的带宽与第一时间片的乘积,将乘积作为第一进程间通信消息在第一时间片内的传输数据量。进度确定子单元配置为:根据第一进程间通信消息在第一时间片内的传输数据量以及第一进程间通信消息在第一时间片之前的传输数据量,确定第一进程间通信消息的总传输数据量;根据第一进程间通信消息的总传输数据量以及第一进程间通信消息的消息数据量,确定第一进程间通信消息在第一时间片内的传输进度。
例如,在本公开上述实施例的至少一个示例提供的模拟装置中,分配子单元进一步配置为:将传输带宽均分给多个进程间通信消息。
例如,在本公开上述实施例的至少一个示例提供的模拟装置中,模拟操作过程还包括计算过程。模拟装置还包括换算单元和整合单元,该换算单元配置为:获取计算过程的时长,并将计算过程的时长换算为时间片数。整合单元配置为:基于进程间通信过程所需的时间片数和计算过程换算的时间片数,确定模拟操作过程所需的时间片数。
例如,在本公开上述实施例的至少一个示例提供的模拟装置中,确定单元进一步配置为:根据预定测试流程,确定并行的多个进程的模拟操作过程;其中,预定测试流程包括:将多个进程排列为MP*NP矩阵,其中,MP和NP均为正整数;位于MP*NP矩阵的同一行的多个进程进行行方向通信;位于MP*NP矩阵的同一列的多个进程进行列方向通信;其中,进程间通信过程包括该行方向通信和列方向通信。
例如,在本公开上述实施例的至少一个示例提供的模拟装置中,预定测试流程还包括:选取MP*NP矩阵中的一列作为主列;在执行行方向通信和列方向通信前,对位于主列的多个进程执行第一计算操作,得到计算结果;在执行行方向通信和列方向通信后,接收进程间通信消息的进程利用接收的进程间通信消息执行第二计算操作,其中,计算过程包括第一计算操作和第二计算操作;其中,位于MP*NP矩阵的同一行的多个进程进行行方向通信,包括:位于主列的多个进程向同行的其他进程广播进程间通信消息,其中,进程间消息包括计算结果。
例如,在本公开上述实施例的至少一个示例提供的模拟装置中,多个进程分布在多个节点运行;多个进程间通信消息包括至少一个跨节点的进程间通信消息;传输带宽包括节点间的传输带宽。分配子单元进一步配置为:将节点间的传输带宽分配给至少一个跨节点的进程间通信消息,以得到每个跨节点的进程间通信消息在第一时间片内对应的带宽。
例如,在本公开上述实施例的至少一个示例提供的模拟装置中,多个进程间通信消息包括至少一个节点内的进程间通信消息;传输带宽包括节点内的传输带宽。分配子单元进一步配置为:将节点内的传输带宽分配给至少一个节点内的进程间通信消息,以得到每个节点内的进程间通信消息在第一时间片内对应的带宽。
本公开的至少一个实施例还提供了一种电子设备,该电子设备包括处理器和存储器,存储器存储有一个或多个计算机程序模块。一个或多个计算机程序模块被配置为由处理器执行,用于实现上述的模拟方法。该电子设备无需真实地运行高性能计算应用,因而在不具备并行计算环境的条件下也能够进行模拟,降低了对模拟环境的要求。并且,简化了模拟过程,模拟所需的资源随之减少,模拟速度加快。此外,本公开实施例的各种参数是基于将要运行高性能计算应用的大规模并行处理环境的参数而定的,因此,模拟的结果能够较为准确地反映高性能计算应用的真实运行情况。
图6为本公开一些实施例提供的一种电子设备的示意框图。如图6所示,该电子设备400包括处理器410和存储器420。存储器420存储有非暂时性计算机可读指令(例如一个或多个计算机程序模块)。处理器410用于运行非暂时性计算机可读指令,非暂时性计算机可读指令被处理器410运行时执行上文所述的模拟方法中的一个或多个步骤。存储器420和处理器410可以通过总线系统和/或其它形式的连接机构(未示出)互连。关于该模拟方法的各个步骤的具体实现以及相关解释内容可以参见上述模拟方法的实施例,重复之处在此不作赘述。
应当注意,图6所示的电子设备400的组件只是示例性的,而非限制性的,根据实际应用需要,该电子设备400还可以具有其他组件。
例如,处理器410和存储器420之间可以直接或间接地互相通信。
例如,处理器410和存储器420可以通过网络进行通信。网络可以包括无线网络、有线网络、和/或无线网络和有线网络的任意组合。处理器410和存储器420之间也可以通过系统总线实现相互通信,本公开对此不作限制。
例如,处理器410和存储器420可以设置在服务器端(或云端)。
例如,处理器410可以控制电子设备400中的其它组件以执行期望的功能。例如,处理器410可以是中央处理单元(CPU)、图形处理单元(GPU)或者具有数据处理能力和/或程序执行能力的其它形式的处理单元。例如,中央处理单元(CPU)可以为X86或ARM架构等。处理器410可以为通用处理器或专用处理器,可以控制电子设备400中的其它组件以执行期望的功能。
例如,存储器420可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序模块,处理器410可以运行一个或多个计算机程序模块,以实现电子设备400的各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据以及应用程序使用和/或产生的各种数据等。
需要说明的是,本公开的实施例中,电子设备400的具体功能和技术效果可以参考上文中关于模拟方法的描述,此处不再赘述。
图7为本公开一些实施例提供的另一种电子设备的示意框图。该电子设备500例如适于用来实施本公开实施例提供的模拟方法。电子设备500可以是终端设备等。需要注意的是,图7示出的电子设备500仅仅是一个示例,其不会对本公开实施例的功能和使用范围带来任何限制。
如图7所示,电子设备500可以包括处理装置(例如中央处理器、图形处理器等)510,其可以根据存储在只读存储器(ROM)520中的程序或者从存储装置580加载到随机访问存储器(RAM)530中的程序而执行各种适当的动作和处理。在RAM 530中,还存储有电子设备500操作所需的各种程序和数据。处理装置510、ROM 520以及RAM530通过总线540彼此相连。输入/输出(I/O)接口550也连接至总线540。
通常,以下装置可以连接至I/O接口550:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置560;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置570;包括例如磁带、硬盘等的存储装置580;以及通信装置590。通信装置590可以允许电子设备500与其他电子设备进行无线或有线通信以交换数据。虽然图7示出了具有各种装置的电子设备500,但应理解的是,并不要求实施或具备所有示出的装置,电子设备500可以替代地实施或具备更多或更少的装置。
例如,根据本公开的实施例,上述模拟方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包括用于执行上述模拟方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置590从网络上被下载和安装,或者从存储装置580安装,或者从ROM520安装。在该计算机程序被处理装置510执行时,可以实现本公开实施例提供的模拟方法中限定的功能。
本公开的至少一个实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有非暂时性计算机可读指令,当非暂时性计算机可读指令由计算机执行时可以实现上述的模拟方法。利用该计算机可读存储介质,无需真实地运行高性能计算应用,因而在不具备并行计算环境的条件下也能够进行模拟,降低了对模拟环境的要求。并且,简化了模拟过程,模拟所需的资源随之减少,模拟速度加快。此外,本公开实施例的各种参数是基于将要运行高性能计算应用的大规模并行处理环境的参数而定的,因此,模拟的结果能够较为准确地反映高性能计算应用的真实运行情况。
图8为本公开一些实施例提供的一种存储介质的示意图。如图8所示,存储介质600存储有非暂时性计算机可读指令610。例如,当非暂时性计算机可读指令610由计算机执行时执行根据上文所述的模拟方法中的一个或多个步骤。
例如,该存储介质600可以应用于上述电子设备400中。例如,存储介质600可以为图6所示的电子设备400中的存储器420。例如,关于存储介质600的相关说明可以参考图6所示的电子设备400中的存储器420的相应描述,此处不再赘述。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
对于本公开,还有以下几点需要说明:
(1)本公开实施例附图只涉及到本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (15)
1.一种模拟方法,包括:
确定并行的多个进程的模拟操作过程,其中,所述模拟操作过程包括进程间通信过程;
根据所述模拟操作过程,汇总所述多个进程在所述模拟操作过程的每个时间片内的进程间通信消息,其中,在所述模拟操作过程中每经过预定时长为一个所述时间片;
根据传输带宽,确定所述进程间通信消息在所述每个时间片的传输进度,以根据所述传输进度得到所述进程间通信过程所需的时间片数。
2.根据权利要求1所述的模拟方法,其中,所述模拟操作过程包括第一时间片,在所述第一时间片内具有多个进程间通信消息;
根据传输带宽,确定所述进程间通信消息在所述每个时间片的传输进度,包括:针对所述第一时间片,
将所述传输带宽分配给所述多个进程间通信消息,以得到每个所述进程间通信消息在所述第一时间片内对应的带宽;
基于每个所述进程间通信消息在所述第一时间片内对应的带宽,确定每个所述进程间通信消息在所述第一时间片内的传输数据量;
根据每个所述进程间通信消息在所述第一时间片内的传输数据量,确定每个所述进程间通信消息在所述第一时间片的传输进度。
3.根据权利要求2所述的模拟方法,其中,所述多个进程间通信消息包括第一进程间通信消息;
基于每个所述进程间通信消息在所述第一时间片内对应的带宽,确定每个所述进程间通信消息在所述第一时间片内的传输数据量,包括:
计算所述第一进程间通信消息在所述第一时间片内对应的带宽与所述第一时间片的乘积,将所述乘积作为所述第一进程间通信消息在所述第一时间片内的传输数据量;
根据每个所述进程间通信消息在所述第一时间片内的传输数据量,确定每个所述进程间通信消息在所述第一时间片的传输进度,包括:
根据所述第一进程间通信消息在所述第一时间片内的传输数据量以及所述第一进程间通信消息在所述第一时间片之前的传输数据量,确定所述第一进程间通信消息的总传输数据量;
根据第一进程间通信消息的总传输数据量以及所述第一进程间通信消息的消息数据量,确定所述第一进程间通信消息在所述第一时间片内的传输进度。
4.根据权利要求2所述的模拟方法,其中,将所述传输带宽分配给所述多个进程间通信消息,包括:
将所述传输带宽均分给所述多个进程间通信消息。
5.根据权利要求1至4任一项所述的模拟方法,其中,所述模拟操作过程还包括计算过程;
所述模拟方法还包括:
获取所述计算过程的时长,并将所述计算过程的时长换算为时间片数。
基于所述进程间通信过程所需的时间片数和所述计算过程换算的时间片数,确定所述模拟操作过程所需的时间片数。
6.根据权利要求1至4任一项所述的模拟方法,其中,确定并行的多个进程的模拟操作过程,包括:
根据预定测试流程,确定并行的多个进程的模拟操作过程;
其中,所述预定测试流程包括:
将所述多个进程排列为MP*NP矩阵,其中,MP和NP均为正整数;
位于所述MP*NP矩阵的同一行的多个进程进行行方向通信;
位于所述MP*NP矩阵的同一列的多个进程进行列方向通信;
其中,所述进程间通信过程包括该行方向通信和列方向通信。
7.根据权利要求6所述的模拟方法,其中,所述预定测试流程还包括:
选取所述MP*NP矩阵中的一列作为主列;
在执行所述行方向通信和所述列方向通信前,对位于所述主列的多个进程执行第一计算操作,得到计算结果;
在执行所述行方向通信和所述列方向通信后,接收所述进程间通信消息的进程利用接收的所述进程间通信消息执行第二计算操作,其中,所述计算过程包括所述第一计算操作和所述第二计算操作;
其中,位于所述MP*NP矩阵的同一行的多个进程进行行方向通信,包括:位于所述主列的多个进程向同行的其他进程广播进程间通信消息,其中,所述进程间消息包括所述计算结果。
8.根据权利要求2所述的模拟方法,其中,所述多个进程分布在多个节点运行;所述多个进程间通信消息包括至少一个跨节点的进程间通信消息;所述传输带宽包括节点间的传输带宽;
将所述传输带宽分配给所述多个进程间通信消息,以得到每个所述进程间通信消息在所述第一时间片内对应的带宽,包括:
将所述节点间的传输带宽分配给所述至少一个跨节点的进程间通信消息,以得到每个所述跨节点的进程间通信消息在所述第一时间片内对应的带宽。
9.根据权利要求8所述的模拟方法,其中,所述多个进程间通信消息包括至少一个节点内的进程间通信消息;所述传输带宽包括节点内的传输带宽;
将所述传输带宽分配给所述多个进程间通信消息,以得到每个所述进程间通信消息在所述第一时间片内对应的带宽,包括:
将所述节点内的传输带宽分配给所述至少一个节点内的进程间通信消息,以得到每个所述节点内的进程间通信消息在所述第一时间片内对应的带宽。
10.一种模拟装置,包括:
确定单元,配置为确定并行的多个进程的模拟操作过程,其中,所述模拟操作过程包括进程间通信过程;
汇总单元,配置为根据所述模拟操作过程,汇总所述多个进程在所述模拟操作过程的每个时间片内的进程间通信消息,其中,在所述模拟操作过程中每经过预定时长为一个所述时间片;
进度单元,配置为根据传输带宽,确定所述进程间通信消息在所述每个时间片的传输进度,以根据所述传输进度得到所述进程间通信过程所需的时间片数。
11.根据权利要求10所述的模拟装置,其中,所述模拟操作过程包括第一时间片,在所述第一时间片内具有多个进程间通信消息;
所述进度单元包括:
分配子单元,配置为针对所述第一时间片,将所述传输带宽分配给所述多个进程间通信消息,以得到每个所述进程间通信消息在所述第一时间片内对应的带宽;
数据量确定子单元,配置为基于每个所述进程间通信消息在所述第一时间片内对应的带宽,确定每个所述进程间通信消息在所述第一时间片内的传输数据量;
进度确定子单元,配置为根据每个所述进程间通信消息在所述第一时间片内的传输数据量,确定每个所述进程间通信消息在所述第一时间片的传输进度。
12.根据权利要求11所述的模拟装置,其中,所述多个进程间通信消息包括第一进程间通信消息;
所述数据量确定子单元进一步配置为:计算所述第一进程间通信消息在所述第一时间片内对应的带宽与所述第一时间片的乘积,将所述乘积作为所述第一进程间通信消息在所述第一时间片内的传输数据量;
所述进度确定子单元进一步配置为:
根据所述第一进程间通信消息在所述第一时间片内的传输数据量以及所述第一进程间通信消息在所述第一时间片之前的传输数据量,确定所述第一进程间通信消息的总传输数据量;
根据第一进程间通信消息的总传输数据量以及所述第一进程间通信消息的消息数据量,确定所述第一进程间通信消息在所述第一时间片内的传输进度。
13.根据权利要求11所述的模拟装置,其中,所述分配子单元进一步配置为:将所述传输带宽均分给所述多个进程间通信消息。
14.一种电子设备,包括:
处理器;
存储器,存储有一个或多个计算机程序模块;
其中,所述一个或多个计算机程序模块被配置为由所述处理器执行,用于实现权利要求1-9任一项所述的模拟方法。
15.一种计算机可读存储介质,存储有非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时可以实现权利要求1-9任一项所述的模拟方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310482953.5A CN116484630A (zh) | 2023-04-28 | 2023-04-28 | 模拟方法、模拟装置、电子设备和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310482953.5A CN116484630A (zh) | 2023-04-28 | 2023-04-28 | 模拟方法、模拟装置、电子设备和计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116484630A true CN116484630A (zh) | 2023-07-25 |
Family
ID=87213619
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310482953.5A Pending CN116484630A (zh) | 2023-04-28 | 2023-04-28 | 模拟方法、模拟装置、电子设备和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116484630A (zh) |
-
2023
- 2023-04-28 CN CN202310482953.5A patent/CN116484630A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103229146B (zh) | 用于处理计算任务的计算机集群布置及其操作方法 | |
CN112306623A (zh) | 深度学习任务的处理方法、装置及计算机可读存储介质 | |
CN108416433A (zh) | 一种基于异步事件的神经网络异构加速方法和系统 | |
CN107168771A (zh) | 一种非一致性内存访问架构下的虚拟机调度装置及方法 | |
Duong et al. | A framework for dynamic resource provisioning and adaptation in iaas clouds | |
EP2657842A1 (en) | Workload optimization in a multi-processor system executing sparse-matrix vector multiplication | |
CN112631986A (zh) | 大规模dsp并行计算装置 | |
Langguth et al. | Memory bandwidth contention: Communication vs computation tradeoffs in supercomputers with multicore architectures | |
EP4535218A1 (en) | Simulation device, simulation system, simulation method, and storage medium | |
Rodríguez-Pascual et al. | Job migration in hpc clusters by means of checkpoint/restart | |
CN101799767B (zh) | 一种利用模拟器多种运行模式反复切换进行并行模拟的方法 | |
Mamchych et al. | A unified model and method for forecasting energy consumption in distributed computing systems based on stationary and mobile devices | |
Scogland et al. | Asymmetric interactions in symmetric multi-core systems: analysis, enhancements and evaluation | |
Martyshkin et al. | Queueing Theory to Describe Adaptive Mathematical Models of Computational Systems with Resource Virtualization and Model Verification by Similarly Configured Virtual Server | |
Cornebize et al. | Emulating high performance linpack on a commodity server at the scale of a supercomputer | |
CN116484630A (zh) | 模拟方法、模拟装置、电子设备和计算机可读存储介质 | |
CN106598913A (zh) | 一种knl集群加速求解方法及装置 | |
CN115775199B (zh) | 数据处理方法和装置、电子设备和计算机可读存储介质 | |
Parlavantzas et al. | A service‐based framework for building and executing epidemic simulation applications in the cloud | |
Wilke et al. | Using Discrete Event Simulation for Programming Model Exploration at Extreme-Scale: Macroscale Components for the Structural Simulation Toolkit (SST). | |
Chung et al. | Fpga-based accelerator platform for big data matrix processing | |
CN107329813B (zh) | 一种面向众核处理器的全局感知数据主动预取方法及系统 | |
CN102467406B (zh) | 多处理器结构的模拟方法及模拟器 | |
Perumalla et al. | Simulating billion-task parallel programs | |
Ruan et al. | Quicksand: Harnessing Stranded Datacenter Resources with Granular Computing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |