CN114391137A - 用于多核处理系统中的域分解感知处理器分配的系统、方法和计算机可存取介质 - Google Patents
用于多核处理系统中的域分解感知处理器分配的系统、方法和计算机可存取介质 Download PDFInfo
- Publication number
- CN114391137A CN114391137A CN202080050878.XA CN202080050878A CN114391137A CN 114391137 A CN114391137 A CN 114391137A CN 202080050878 A CN202080050878 A CN 202080050878A CN 114391137 A CN114391137 A CN 114391137A
- Authority
- CN
- China
- Prior art keywords
- information
- computer
- task
- node
- accessible medium
- 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 216
- 238000012545 processing Methods 0.000 title description 19
- 238000000354 decomposition reaction Methods 0.000 title description 7
- 230000006854 communication Effects 0.000 claims abstract description 81
- 238000004891 communication Methods 0.000 claims abstract description 79
- 230000008569 process Effects 0.000 claims description 154
- 238000004088 simulation Methods 0.000 claims description 23
- 230000008859 change Effects 0.000 claims description 7
- 238000005457 optimization Methods 0.000 description 48
- 238000010586 diagram Methods 0.000 description 34
- 230000007246 mechanism Effects 0.000 description 25
- 238000007726 management method Methods 0.000 description 14
- 238000013507 mapping Methods 0.000 description 12
- 230000008901 benefit Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 239000004744 fabric Substances 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000003860 storage Methods 0.000 description 4
- 238000009826 distribution Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- JZUHIOJYCPIVLQ-UHFFFAOYSA-N 2-methylpentane-1,5-diamine Chemical compound NCC(C)CCCN JZUHIOJYCPIVLQ-UHFFFAOYSA-N 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 241001466538 Gymnogyps Species 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008275 binding mechanism Effects 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 125000001475 halogen functional group Chemical group 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 101150026430 manA gene Proteins 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000013386 optimize process Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012367 process mapping Methods 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5033—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1012—Server selection for load balancing based on compliance of requirements or conditions with available server resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1036—Load balancing of requests to servers for services different from user content provisioning, e.g. load balancing across domain name servers
Abstract
用于将多个任务分配给多个计算节点的示例性系统、方法和计算机可存取介质可以包括例如:接收与计算节点相关的第一信息,其中,第一信息可以包括计算节点中的每一个中的核的数目;通过分离计算节点中的每一个中的核的数目来生成第二信息;以及基于第二信息将任务分配给计算节点。第一信息还可以包括:(i)计算节点中的每一个之间的网络连接的距离;以及(ii)网络连接的带宽。可以基于任务来生成第二信息。可以基于任务的维数来生成第二信息。可以基于节点之间的通信数目的最小化来分配任务。
Description
相关申请的交叉引用
本申请涉及并且要求2019年6月12日提交的美国专利申请第62/860,480号和2019年12月12日提交的美国专利申请第62/947,375号的优先权,上述美国专利申请的全部公开内容通过引用并入本文。
技术领域
本公开总体上涉及多核处理,更具体地,涉及用于多核处理系统中的域分解感知处理器分配的示例性系统、方法和计算机可存取介质的示例性实施方式。
背景技术
在2007年至2018年之间,在高性能计算(“HPC”)中使用的处理器设计从每个处理器4个核增长到28个核,并且互连带宽从大约1Gbps增长到大约100Gbps。然而,自2018年中期以来,已经有将处理器核的计数提升到64(例如,每个双处理器计算节点有128个核)的新的突破性的处理器设计。这些新的处理器设计显著降低了计算成本,提供了更高的经济效率。不幸的是,互连技术没有跟上处理器价格和性能的改进。
随着每个处理器的核数的增加,对处理器与计算机之间的扩展通信的需求也增加。多轨互连端口的使用可以通过促进多于1个互连链路以在节点之间传输数据来促进以太网、Omnipath和Mellanox Infmiband之类的扩展。不幸的是,这需要互连基础设施的尺寸和成本的两倍、三倍或者甚至四倍。因此,这降低或消除了大型核计数处理器系统的价格优势。
实际上,为了使互连电缆所维持的带宽加倍,光纤或铜电缆的数目应该加倍。这导致互连结构以指数成本增加,而处理器核的成本以指数速率降低。
作为互连性能的替选,可以使用参考的空间局部性来修改进程间通信性能,其中可能交换数据的消息传递接口(Message Passing Interface“MPI”)进程在可能的程度上共同位于同一节点上。工作负荷管理器(例如,SLURM、PBS、Torque、SGE、LSF等)对进程放置策略具有有限的支持,其中没有一个实现高效的网格拓扑。对于MPI,可以将进程的放置留给工作负荷管理器,尽管OpenMPI可以提供通过用户提供的等级文件手动重载该放置的能力。然而,来自Hewlett-Packard Enterprise的专有技术Craypat在其专有MPI实现中并入了处理放置机制,其支持2D和3D网格拓扑,其主要限制限制了其使用。
快速发展的突破性的处理器设计意味着HPC系统越来越多地由异构处理器技术组成。当前,优化跨异构系统的通信的进程放置技术可能仍然是未知的。特别地,现有的MPI进程放置机制是静态的。因此,必须提前知道计算节点配置和初始进程放置映射。这种限制妨碍了工作负荷管理工具优化系统利用的能力。此外,现有的MPI进程放置机制是特定于版本的;为了利用该特征,用户必须将其应用移植到这些特定的MPI版本。
Craypat是支持网格拓扑进程放置的唯一MPI进程放置机制,Craypat可以限于二维(2D)和三维(3D)通信模式,并且不支持多程序多数据(“MPMD”)编程范例或者异构计算节点配置。
因此,提供用于多核处理系统中的处理器分配的示例性系统、方法和计算机可存取介质可能是有益的,其可以解决和/或克服上文所描述的缺陷中的至少一些。
发明内容
因此,可以提供根据本公开的示例性实施方式的用于将多个任务分配给多个计算节点的示例性系统、方法和计算机可存取介质。例如,可以接收与计算节点相关的第一信息,其中,第一信息可以包括计算节点中的每一个中的核的数目。此外,可以通过分离计算节点中的每一个中的核的数目来生成第二信息,并且基于第二信息将任务分配给计算节点。第一信息还可以非穷举地包括:(i)计算节点的网络连接的距离;(ii)网络连接的带宽;以及(iii)网络连接的接近度(例如节点内的总线位置)。第一信息还可以包括到最近相邻节点的距离。可以非穷举地基于任务的维数或者任务之间的通信模式或统计的任何其他先验知识来生成第二信息。可以基于节点间通信数目的最小化来分配任务。
在本公开的一些示例性实施方式中,可以获得与和任务中的至少一个相关联的问题特性相关的信息,并且可以基于问题特性将任务分配给计算节点。问题特性可以包括:(i)网格中的第一维数;(ii)网格的轴中的第二维数;或者(iii)网格在消息传递接口进程中的第三点数。问题特性可以是多维的。例如,沿着轴的维度可以进一步由与沿着该轴的通信相关联的百分比或权重的附加来表征。可以基于问题特性来确定最佳子网格布局,并且可以基于最佳子网格布局来分配任务。任务可以是消息传递接口进程。可以确定计算节点的计算拓扑。可以在确定计算拓扑之后生成第二信息。
在本公开的某些示例性实施方式中,可以确定与计算拓扑中的变化相关的第三信息,可以通过基于第三信息分离核的数目来生成第四信息,并且可以基于第三信息和第四信息来重新分配任务。可以轮询计算节点,并且可以基于轮询来生成第一信息。可以生成第二信息,并且可以使用工作负荷管理器来分配任务。可以执行模拟,模拟可以包括:模拟任务到计算节点的分配,并且可以基于模拟来分配任务。可以基于应用统计来执行模拟,其中,应用统计可以包括来自先前模拟的统计。
在当结合所附权利要求书阅读对本公开内容的示例性实施方式的以下详细描述时,本公开内容的示例性实施方式的这些目的、特征和优点以及其他目的、特征和优点将变得明显。
附图说明
根据以下结合示出本公开内容的说明性实施方式的附图作出的详细描述,本公开内容的其他目的、特征和优点将变得明显,在附图中:
图1是根据本公开的示例性实施方式的用于优化多核系统上的进程之间的通信的示例性系统的示例图;
图2是根据本公开的示例性实施方式的用于将图1所示的部件A1(例如,计算节点信息)划分为多个子部件的示例性系统的示例图;
图3是根据本公开的示例性实施方式的用于将图1所示的部件(例如,应用信息)划分为多个子部件的系统的示例图;
图4是根据本公开的示例性实施方式的用于将图1所示的部件(例如,通信管理)划分为多个子部件的方法的示例性流程图;
图5是根据本公开的示例性实施方式的用于与工作负荷管理器实用程序对接的示例性方法的示例性流程图;
图6是根据本公开的示例性实施方式的用于为各种执行场景提供先验数据交换估计的示例性系统的示例图;
图7是根据本公开的示例性实施方式的二维进程数据网格的示例图;
图8是根据本公开的示例性实施方式的图7中所示的二维数据网格的相关联的默认MPI进程放置的示例图;
图9是示出根据本公开的示例性实施方式的用于图8中所示的进程放置的节点内和节点间通信的示例图;
图10是示出来自图7的数据网格的示例图,图10示出了根据本公开的示例性实施方式的改进的MPI进程放置;
图11是示出根据本公开的示例性实施方式的将真实MPI进程ID映射到虚拟MPI进程ID的进程放置优化映射作为部件的示例图;
图12是示出根据本公开的示例性实施方式的图11中所示的进程放置的节点内和节点间通信的示例图;
图13是示出根据本公开的示例性实施方式的示出优化的MPI进程放置的数据网格的另一示例图;
图14是示出根据本公开的示例性实施方式的图13中所示的进程放置的节点内和节点间通信的示例图;
图15是示出根据本公开的示例性实施方式的用于非均匀计算节点的节点内和节点间通信的示例图;
图16A至图16C是示出根据本公开的示例性实施方式的各种子网格化方法之间的节点内和节点间通信的示例图;
图17是示出根据本公开的示例性实施方式的使用示例性过程的子网格化的优化的示例图;
图18是根据本公开的示例性实施方式的用于向多个计算节点分配多个任务的方法的示例性流程图;以及
图19是根据本公开内容的某些示例性实施方式的示例性系统的示例性框图的图示。
在所有附图中,除非另有说明,否则相同的附图标记和字符用于表示所示出的实施方式的相似特征、元件、部件或部分。此外,虽然现在将参照附图详细地描述本公开内容,但是本公开内容是结合说明性实施方式来完成的,并且不受附图和所附权利要求书中示出的特定实施方式限制。
具体实施方式
示例性术语
以下示例性和非限制性定义可以与本文中描述的示例性实施方式一起使用。
例如,术语“计算节点”可以指计算装置,该计算装置被配置成通过诸如共享存储器、处理器总线、以太网、Infmiband等的通信装置与其他计算装置交换数据。因此,例如,由单个处理器内的存储器高速缓存连接的处理器核的组可以是“计算节点”。通过系统总线或其他通信装置连接的共享存储器计算机内的独立处理器也可以“计算节点”。此外,通过互连结构连接的计算机可以是“计算节点”。计算装置的示例性定义还可以包括但不限于加速器,例如但不限于浮点单元、图形处理单元、现场可编程门阵列以及存储器驻留处理器。
“节点间通信”可以指有计算能力的装置之间的数据交换。
“节点内通信”可以指在计算装置内发生的数据交换。
“Halo通信模式”和“笛卡尔通信模式”可以互换使用。这样的示例性通信模式可以包括与在如笛卡尔图上的网格(例如,一维或更多维的网格)上的邻居的通信。邻居可以在一维或更多维上比一(1)个网格元素更远(例如,对角线邻居)。
“消息传递接口(MPI)”可以是可以包括进程之间的信息交换的任何合适的工具、配置和/或系统。然而,本公开不限于MPI标准;本公开适用于其他形式的消息传递,例如,使用用户可调用的功能来启动数据传输或共享存储器。
示例性MPI实现可以包括OpenMPI(参见例如,参考文献23)、MPICH(参见例如,参考文献25)、MVAPICH(参见例如,参考文献24)、Cray MPT(参见例如,参考文献29)、HPE MPI(参见例如,参考文献30)、Intel MPI(参见例如,参考文献31)和IBM MPI(参见例如参考文献32)。根据本公开的示例性实施方式的示例性系统、方法和计算机可存取介质可应用于或利用任何MPI实现。
“并行虚拟机”(参见例如,参考文献28)可以是附加的消息传递工具包,其可以与示例性系统、方法和计算机可存取介质一起使用或者由示例性系统、方法和计算机可存取介质使用。
示例性系统、方法和计算机可存取介质还可以包括或使用其他数据交换机制,例如但不限于Linux/UNIX套接字通信。OpenSHMEM(参见例如,参考文献26)通信(例如,显式共享存储器数据交换)、OpenMP(参见例如,参考文献28)(例如,隐式共享存储器数据交换)和其他合适的数据交换机制可以被并入示例性系统、方法和计算机可存取介质中,或者由示例性系统、方法和计算机可存取介质使用。
术语MPI等级、MPI线程、MPI进程、任务和进程可以互换地使用,以标识在有计算能力的装置上运行的任何可执行体。可执行体本身可以是通过编译程序而产生的一个软件,以及嵌入在处理装置内的机器语言函数,或者通过计算装置执行可编程函数的任何其他机制。进程同样可以使用处理器核,多个处理器核(可能跨越多于一个处理器)以及诸如处理器线程的处理器核的子部件。
“工作负荷管理系统”可以是适当的机制,通过该机制可以选择可用的计算装置来执行进程。例如,SGE(参见例如,参考文献14)、LSF(参见例如,参考文献16)、PBS(参见例如,参考文献17和18)、Condor(参见例如,参考文献20)、LoadLeveler(参见例如,参考文献22)、Torque(参见例如,参考文献9)、Moab(参见例如,参考文献19)、SLURM(参见例如,参考文献23)等通常可以用于在计算集群上执行该功能。该示例性机制还可以由人工计算节点和/或处理器核选择来提供。该机制不是对本公开实施方式的如下要求:可以静态地分配进程,并且可以通过本公开的操作来优化其映射。
根据本公开的示例性实施方式的示例性系统、方法和计算机可存取介质可以用于将任务分配给计算拓扑中的特定节点。例如,示例性系统、方法和计算机可存取介质可以分析计算拓扑中可用的资源,并且基于可用资源来具体分配任务。计算拓扑可以包括例如节点(例如计算机)的数目、每个节点的处理核的数目、节点之间的网络距离、以及网络的带宽。示例性系统、方法和计算机可存取介质然后可以基于每个节点的处理核的数目来细分每个节点。这可以在将MPI进程分配到计算节点上之前或者一旦可以首先建立计算拓扑(例如,MPI进程已经在为此目的而分配的计算节点上被实例化)被执行,并且可以基于计算拓扑的改变而被周期性地更新。替选地或附加地,可以分析正在执行的任务,并且可以基于正在执行的任务来具体划分节点。
根据本公开的示例性实施方式,示例性系统、方法和计算机可存取介质可以包括用于管理工作负荷管理器实用程序和MPI库的过程。MPI库可以包括例如任何消息传递库、并行虚拟机、远程直接存储器访问库、基于套接字的机制(例如,Unix套接字)、用于在两个运行进程之间隐式或显式地交换数据的任何库(无论它们是共享存储器,还是每个都拥有其专用虚拟存储器地址空间)、以及最终用户应用本身、以及填充(shimmed)通信库(例如,截取其他库调用以改变其功能的库)。
当例如基于每个节点的处理核的数目来细分每个节点时,示例性系统、方法和计算机可存取介质可以将特定任务分配给每个节点。任务可以跨越多于一个的处理器核。可以基于正在执行的任务来分配节点,这可以包括:考虑每个节点的核的数目,以及特定节点与执行该任务所需的最近节点之间的距离。一旦可以分配所有节点,示例性系统、方法和计算机可存取介质就可以向每个节点提供要执行的特定任务。
根据本公开的示例性实施方式的示例性系统、方法和计算机可存取介质可以例如:(i)获得关于每个计算节点的处理器核的数目的信息;(ii)获得关于应用的问题特性(例如,网格中的维数、所有网格轴中的维数、和/或每个MPI进程的网格点的数目)的信息;(iii)利用上述信息来确定每个计算节点的最佳子网格布局;以及(iv)利用上述过程(i)-(iii)的结果来确定用于执行的处理器节点的数目。问题特性可以是多维的。例如,沿着轴的维度可以进一步由与沿着该轴的通信相关联的百分比或权重的附加来表征。
图1示出了根据本公开的示例性实施方式的用于扩展多核系统上的进程之间的通信的示例性系统100的示例图。例如,计算节点信息105可以被获取并且被传递到子网格化优化模块110。经优化的子网格信息可以被传递到进程放置优化模块120。应用信息115可以被获取并且被传递到进程放置优化模块120。所确定的最佳进程放置可以被传递到通信管理模块125。通信管理模块125可以与示例性数据交换135对接,并且可以将通信信息传递到统计输出模块130。
子网格化模块110和进程放置优化模块120可以一起或彼此独立地使用。另外,每个过程可以:(i)被实现为独立的实用程序;(ii)被集成在工作负荷管理器的进程绑定、分发、放置等机制内;(iii)被实现为在执行应用之前由实用程序调用的工作负荷管理器实用程序的插件模块;(iv)由MPI库实现;(v)被实现为由最终用户应用调用的独立库;和/或(vi)被集成到最终用户应用。
图2示出了根据本公开的示例性实施方式的用于将图1所示的计算节点信息105划分为多个子部件的示例性系统200的示例图。计算节点信息110可以使用应用提供的信息205获得,信息205包括关于如何操作的信息或者可以用于确定适当的子网格化解决方案的与问题相关的特性,并且子网格化模块110可以使用以下来获得:(i)用户提供的信息210;(ii)系统配置信息215(例如,由工作负荷管理实用程序维护的信息);或者(iii)实时获取的信息220(一旦MPI进程已经被分派,就可以通过轮询计算节点来获得信息220);或者可以提供关于计算节点配置、互连配置等的信息的任何其他合适的机制。该信息可以被传递到子网格化优化模块110,然后可以进行到进程放置优化模块120,以基于操作环境来确定可以使节点间通信最小化的示例性子网格化解决方案。
图3示出了根据本公开的示例性实施方式的用于将图1所示的部件(例如,应用信息115)划分为多个子部件的系统的示例图。可以用于确定最佳进程放置的应用相关信息可以通过各种合适的过程来获得,例如但不限于使用以下来获得:(i)用户提供的距离数据305;(ii)用户提供的距离函数110;(iii)应用统计115;以及(iv)应用信息320。该信息可以被传递到进程放置优化模块120。例如,用户提供的距离数据305可以包括可以指定正在通信的MPI进程之间的MPI等级位置差异的数字表达式(例如数字),而用户提供的函数310可以通过示例性数学函数来表示正在通信的MPI进程的MPI等级位置差异。例如,可以重新使用可以来自先前运行的应用统计315来确定MPI进程通信交换的流行度,并且应用信息320可以向进程放置优化模块120呈现关于预期通信交换的信息。
图4示出了根据本公开的示例性实施方式的用于将图1所示的部件(例如,通信管理125)划分为多个子部件的系统400的示例图,系统400可以与数据交换机制(例如,MPI)分开实现。如果在MPI工具内实现,则可能不需要通信管理模块125。在本公开的示例性实施方式中,通信管理125可以被划分为多个子系统,例如但不限于:(i)通信控制模块405;(ii)数据交换捕捉模块410;(iii)数据交换截取模块415;(iv)数据交换重新路由模块420;(v)统计收集模块425;以及(vi)数据交换节流模块430。
通信控制模块405可以接收关于在进程放置优化120中获得的进程放置的信息,并且可以(例如使用底层数据交换机制的功能)建立新的MPI进程映射。为了与底层MPI工具(例如,数据交换机制)分离地操作,通信控制模块405可以设置数据交换捕捉模块410,使得未来的MPI调用可以在数据交换拦截模块415处被拦截。一旦可以在数据交换拦截模块415处拦截MPI数据交换,统计收集模块425就可以用于记录各种统计,并且数据交换请求可以被发送到数据交换重新路由模块420。由数据交换重新路由模块420执行的示例性重新路由过程可以使用来自子网格化优化模块110的输出来确定MPI进程的位置。由数据交换重新路由模块420执行的重新路由进程还可以记录来自统计输出模块130的通信统计。在完成数据交换路由之后,可以将数据交换传递到数据交换435,数据交换435可以用于由数据交换节流模块430执行节流。可以添加示例性节流机制,以通过测量在一段时间期间在计算节点上经过互连传递的数据量来模拟较低性能互连的性能,并且延迟消息以模拟较慢互连的性能。
示例性统计收集模块425实施方式可以跟踪例如但不限于:在MPI对等体之间传递的消息的数目;在MPI对等体之间传递的总数据量;以及在MPI对等体之间的数据交换频率(例如兆字节/秒)。该信息可以用于例如确定MPI进程或计算节点之间的流量模式。
下面是可以通过示例性统计收集模块425生成的统计输出130信息的示例。在这里我们看到1024个MPI进程分布在16个计算节点上,每个计算节点具有64个核。Host#0向其他节点发送32083M字节,同时从其他节点接收37679M字节,总共有69672M字节的节点间流量,同时节点内流量为953G字节。我们还看到驻留在计算节点0处的MPI rank#2与(也驻留在节点0处的)MPI rank#34交换了2,317,306,272字节。
#Ranks=1 024#Nodes=1 6#cores/node=64
host[0](SEND/RECV/COMB)inter-comm=32083M/37679M/69762M intra-comm=438G/51 5G/953G
host[1](SEND/RECV/COMB)inter-comm=46607M/54634M/1 0 1241 M intra-comm=438G/51 3G/953G
host[2](SEND/RECV/COMB)inter-comm=46649M/54683M/1 0 1333M intra-comm=439G/51 4G/955G
host[3](SEND/RECV/COMB)inter-comm=32083M/37679M/69|762M intra-comm=438G/51 5G/953G
Etc.
Rank[0@0]:total=401 6468064:32@0{2209450560},1@0{180701 7504}
Rank[1@0]:total=5931 341 280:33@0{231 7306272},0@0{180701 7504},2@0{180701 7504}
Rank[2@0]:total=5931 341 280:34@0{2317306272},1@0{180701 7504},3@0{180701 7504}
Rank[3@0]:total=5931 341 280:35@0{231 7306272},2@0{180701 7504},4@0{180701 7504}
Etc.
示例性子网格化优化模块110和进程放置优化模块120可以在工作负荷管理器内实现和/或利用。子网格化优化模块110和进程放置优化模块120可以:(i)与拓扑或进程分布或进程绑定机制集成;和/或(ii)是预执行插件模块的一部分。如果子网格化优化模块110和进程放置优化模块120与工作负荷管理器内部机制集成,则工作负荷管理器可以在作业提交时确定所使用的计算节点的数目。如果将子网格化优化模块110和进程放置优化模块120集成为预执行插件模块,则所使用的计算节点的数目可以在作业提交时由用户设置,并且可以由工作负荷管理器实用程序调整为较低。
图5示出了根据本公开的示例性实施方式的用于与工作负荷管理器实用程序对接的示例性系统500的示例图。如图5所示,计算节点信息模块105、子网格化优化模块110、应用信息模块115和进程放置优化模块120可以作为实用程序的插件模块被集成在实用程序内或者在实用程序外部与工作负荷管理实用程序结合使用。另外,可以将本公开的示例性实施方式实现为独立工具和/或系统,该独立工具和/或系统可以生成信息,用户可以:(i)将该信息提供给工作负荷管理器;(ii)将该信息提供给工作负荷管理器实用程序;(iii)将该信息提供给MPI库;(iv)通过公共线参数、参数、环境变量提供给用户应用;和/或(v)作为独立工具提供。
子网格化优化模块110和进程放置映射优化模块120中的每一个可以一起实现或者彼此独立地实现,和/或可以并入:(i)工作负荷管理器工具;(ii)MPI库工具;(iii)作为应用程序接口(“API”);或者(iv)其他机制,以增强其他软件工具和应用的功能。
另外,子网格化优化模块110和进程放置映射优化模块120可以用作独立的工具或系统来生成经优化的进程放置文件,诸如SLURM的等级文件机制,使得工作负荷管理器实用程序、MPI库和最终用户应用都不需要任何修改。
计算节点信息模块105、子网格化优化模块110、应用信息模块115、进程放置优化模块120和统计输出模块130可以在独立系统中实现,并且例如与图6所示的统计模拟模块605一起实现,可以使用先前记录的应用统计来促进先验的模拟和性能估计。因此,用户可以在不必在目标配置上重新运行应用的情况下估计使用各种节点和互连配置的影响。
图7至图9示出了根据本公开的示例性实施方式的子网格化优化模块110和进程放置优化模块120的操作的示例图。
具体地,图7示出了根据本公开的示例性实施方式的二维进程数据网格700的示例图。具体地,图7示出了问题数据已被分成多个片段705的用户应用。这可以被称为域分解或者分区的全局地址空间。在该示例中,问题数据或网格可以被分成四(4)行和六(6)列。每个子域可以与笛卡尔网格位置(X,Y)相关联。
图8示出了根据本公开的示例性实施方式的图7所示的二维数据网格700的相关联的默认MPI进程的示例图。具体地,图8示出了用于已分解的数据网格的公共默认MPI进程映射。如图8所示,每个计算节点805可以具有六(6)个子域。数据网格子域ID与MPI进程ID之间的关系可以计算为MPI进程ID=子域.X位置*列.Y维度+子域.Y位置。
图9示出了说明由图7所示的域分解产生的节点内和节点间通信以及图8中提供的MPI进程放置的示例图,其中每个子域例程可以与其最近的邻居交换数据。在该示例中可以有76个数据交换、40个节点内通信和36个节点间通信。当然,可以提供不同数目的数据交换、节点内通信和节点间通信。
图10示出了说明来自图7的数据网格700的示例图,该示例图示出了根据本公开的示例性实施方式的改进的MPI进程放置。如图10所示,MPI进程的分组与图8所示的不同。子网格化优化模块110用于确定每个节点可以容纳2×3子网格而不是如图8所示的1×6子网格。注意,应用可能不知道进程放置变化,子域ID与进程ID之间的关系保持相同,并且可以基于其操作继续进行。下面描述示例性子网格化过程。
图11示出了示例图,该示例图说明根据本公开的示例性实施方式的将真实MPI进程ID映射到虚拟MPI进程ID的进程放置优化映射作为部件。具体地,图11示出了进程放置优化模块120的操作。可以由外部提供的MPI工具已经将MPI进程分派到节点上。因此,示例性系统、方法和计算机可存取介质不能修改原始进程放置。可以使用示例性虚拟化过程,其中,可以由从MPI工具产生的进程产生的真实MPI进程放置可以被从进程放置优化模块120产生的映射代替。用户应用可能不知道该重新映射,并且可以照常操作。
可以通过图4所示的数据交换重新路由模块420来实现示例性的动态重映射。实时动态重映射的示例性益处可以是支持使用图1所示的通信管理模块125的多个MPI工具。进程放置优化可以通过各种示例性方法或过程来实现,例如但不限于一个或更多个数学公式,和/或将进程标识符与子网格标识符链接的过程,或者将进程标识符映射到子网格标识符的目录,或者上述的组合。进程放置优化模块120的这种实时示例性实施方式可以不具有对节点大小的先决条件,并且可以与由工作负荷管理工具动态分配的非均匀节点一起使用。
在本公开的示例性实施方式中,进程放置优化节点120可以用于笛卡尔通信模式(例如,与沿X,Y,Z坐标的对等体的通信)以及非笛卡尔通信模式。非笛卡尔通信模式可以出现在其中对等体可以使用其他网格坐标特征在它们之间通信以选择它们的通信对等体的应用中。例如,进程可以与可以相距2N距离(例如,1,2,4,8等)的对等体通信,或者与域可以包括上下文数据(例如,天气模型中的水体)的对等体通信。与使用进程标识符与子域标识符之间的数学关系来执行进程放置的现有MPI进程放置工具相比,示例性系统、方法和计算机可存取介质对进程放置优化模块120的使用可以不限于数学关系。为了操作,可以使用关于关系可以是数学的,随机的,上下文的等等以及节点之间的通信进程的信息。
图12示出了说明根据本公开的示例性实施方式的由子网格化优化模块110、进程放置优化模块120和通信管理模块125的组合操作产生的节点内和节点间通信流量的示例图。如图12所示,总共仍然可以有76个数据交换,但是节点间通信的数目可以从36个减少到20个。
图13示出了说明根据本公开的示例性实施方式的优化的MPI进程放置的数据网格的另一示例图。如图13所示,可以提供图10的替选进程放置,其中可以按YX次序(例如,矩阵转置)而非图10中所使用的XY次序来写入MPI等级。
图14示出了说明根据本公开的示例性实施方式的图13中提供的进程放置的节点内和节点间通信的示例图。如图14所示,在节点间通信上提供了矩阵转置MPI放置的效果。MPI应用针对2D问题以XY、YX对子网格进行编号,而针对3D问题以XYZ、XZY、YXZ、YZX、ZXY和ZYX对子网格进行编号,因为在该字段中可能没有设置规则。另外,图14示出了变化域分解顺序对示例性系统、方法和计算机可存取介质的影响。
图15示出了根据本公开的示例性实施方式在子网格化优化模块110和进程放置优化模块120的示例性实施方式中使用非均匀计算节点对MPI节点内和节点间通信的示例性影响。这可以使用独立的机制来执行,以独立地实现子网格化和进程放置,而不是如上所述的预先计算的静态关系。
图16A至图16C示出了说明根据本公开的示例性实施方式的各种子网格化方法之间的节点内和节点间通信的示例图。如图16A至图16C所示,与使用预先计算的静态关系相比,存在分离进程放置和子网格化机制的附加益处。例如,可以实现子网格化优化模块110和进程放置优化模块120,以利于每个节点定义多个子网格。与如图16A所示的每个节点使用单个子网格(例如,1×18子网格),如图16B所示的2×9子网格,以及如图16C所示的4×4和1×2子网格相比,可以使用多个子网格来进一步改进节点间通信优化。每个节点使用多个子网格可以利于MPMD编程范例,其中多于一个协作MPI应用可以共存于同一计算节点中。例如,这可以被称为气候学中的模型耦合。
图17示出了说明使用根据本公开的示例性实施方式的示例性过程来优化子网格化的图。如图17所示,可以提供使用图1所示的子网格化优化模块110的子网格化优化过程的示例性实施方式。在示例性2D 4×4子网格中,可以观察到,节点间通信的数目可以等于子域外围的总和:16个通信交换(例如,4+4+4+4)。为了使节点间通信的数目最小化,可以使用能够使外围最小化的子网格化过程。这可以在外围尽可能接近边长=SQRT(#核)时发生。由于边的大小可以是整数,所以给定min(#cores-sl*s2)和min(|sl-s2|),可以找到整数的最近点对,其中,注意,|sl-s2|可以是差的绝对值。示例性子网格化过程可以用于使节点间通信最小化。根据图16A至图16C,该示例性过程可以将18个子域问题的子网格划分为4×4子网格和1×2子网格。示例性子网格化过程可以如下:
可以进一步细化上述示例性子网格化过程。例如,示例性子网格化过程可以考虑问题大小和定向子网格以减少碎片。例如,使用56个核节点的32×21问题大小可以与8×7子网格一起工作得最好,从而在第一维度中产生正好4个子网格,并且在第二维度中产生正好3个子网格,从而总共产生正好12个完全填充的(例如,8×7个元素,匹配56个计算核节点)子网格。相反,使用7×8子网格将在第一维度中产生4个全子网格而在第五子网格中具有4个剩余元素,并且在第二维度中产生2个全子网格而在第三子网格中具有5个剩余元素。这可以导致8个完全填充的(例如,每个子网格7×8个元素)子网格和4个部分填充的(例如,每个子网格4×5个元素)子网格。
对上述示例性子网格化过程的另一示例性细化可以例如包括应用于问题维度的权重因子。以下是简化的代码样本,示出了将权重因子分配给两个维度中的每一个以执行使节点间通信最小化的子网格化:
可以组合上述子网格细化。这些细化不是穷举的;可以添加更多的子网格细化来应对相对处理器性能、网络拓扑等。
示例性系统、方法和计算机可存取介质可以基于每个节点的核的数目和网格维度来确定可以减少节点间通信的数目的经优化的子网格大小。另外,示例性系统、方法和计算机可存取介质可以生成MPI进程到节点的映射,以共同定位属于同一子网格的进程。该示例性过程可被实现为在启动时由应用调用的库,并且它可包括少于10行的代码改变。替选地,示例性过程可以被实现为工作负荷管理器的预步骤,以生成等级文件。另外,这种示例性过程可以作为进程放置选项嵌入在工作负荷管理器本身内。
示例性系统、方法和计算机可存取介质还可以递归地应用于由计算节点组成的系统,其中每个节点可以是互连处理器的集合,并且其中,每个处理器可以是互连处理器核的集合。
可以基于Infmiband、以太网或其他技术的互连属性还可以应用于连接单个计算节点中的处理器的处理器间结构。因此,根据本公开的示例性实施方式的示例性系统、方法和计算机可存取介质可以递归地应用于可以包括计算节点的系统,其中每个节点可以是互连处理器的集合,并且因此每个处理器可以是互连处理器核的集合。
根据本公开的示例性实施方式的示例性系统、方法和计算机可存取介质可以使用通信模式的知识来实现消息聚集-分发方法,使得在不同计算节点上的对等体对之间交换的所有消息可以首先将正被发送的所有消息聚集成单个大消息,然后单个对等体可以发送该复合消息。其对等体可以接收复合消息并且可以将消息分发给同一系统上的其他对等体。这种机制可以通过减少主机通道适配器(例如,网卡)级的拥塞来增强互连利用。例如,在2D域分解问题中,由于子网格和映射进程被组合,因此沿着计算节点上的子网格边缘的进程可以与另一计算节点上的子网格边缘上的进程通信。因此,2D问题可以导致例如四(4)个计算节点参与子网格的通信。在没有子网格和映射机制的情况下,计算节点上的进程可以与变化数目的其他计算节点通信。
根据本公开的示例性实施方式的示例性系统、方法和计算机可存取介质可以由于其子网格化和映射操作而改进网络架构互连级(例如网络交换机)处的拥塞管理。基于组合的子网格和映射机制,沿着子网格边缘的通信进程可以与比替选映射过程更少的计算节点进行通信。这可以导致网络结构互连内的拥塞较少。
根据本公开的示例性实施方式的示例性系统、方法和计算机可存取介质可以包括预加载库(例如,数据交换拦截模块410)以拦截MPI调用,并且在运行中使用数据交换拦截模块415将原始MPI通信器替换为由示例性系统、方法和计算机可存取介质提供的MPI通信器(例如,使用数据交换重新路由模块420)。使用MPT自己的进程重新映射原语,示例性系统、方法和计算机可存取介质可以生成新的通信器,其中进程位置可以用于优化节点间通信。因此,示例性系统、方法和计算机可存取介质是简单,轻量的,并且不需要实现对操作系统、工作负荷管理器(ex.SLURM)、MPI库的任何修改,并且可以在应用二进制上操作。
可以进一步扩展上述示例性实施方式以在运行中替代和替换任何MPI通信装置,而不仅仅是原始MPI_COMM_WORLD通信器,并且可以同时应用于多个MPI通信装置。因此,可以在单个应用内一次优化多于一个级别的通信的通信交换。根据本公开的示例性实施方式的示例性系统、方法和计算机可存取介质还可以利用应用的知识和系统特性,以便提供统计收集、性能监测和分析,这可以用于基于处理器/系统类型或用户凭证来提供特定于环境的行为。
初步测试观察到,在9个节点(例如,28个核/节点)上使用252个MPI进程,MPI带宽增加了52%。128个核/节点系统可以将MPI带宽增加80%以上。MPI带宽可以是所有MPI节点间通信(例如,通过Infmiband互连)的带宽和所有MPI节点内通信(例如,通过共享存储器)的带宽。
图18示出了根据本公开的示例性实施方式的用于将多个任务分配给多个计算节点的方法1800的示例性流程图。例如,在过程1805处,可以轮询计算节点。在过程1810处,可以接收与计算节点相关的第一信息,或者可以基于轮询生成第一信息。在过程1815处,可以确定计算节点的计算拓扑。在过程1820处,可以通过分离每个计算节点中的核的数目来生成第二信息。在过程1825处,可以获得关于与任务相关联的问题特性的信息。在过程1830处,可以基于问题特性来确定最佳子网格布局。在过程1835处,可以执行模拟,该模拟可以包括:模拟任务到计算节点的分配。在过程1840处,可以基于第二信息、问题特性、最佳子网格布局和/或模拟将任务分配给计算节点。在过程1845处,可以确定与计算拓扑中的变化相关的第三信息。在过程1850处,可以通过基于第三信息分离核的数目来生成第四信息。在过程1855处,可以基于第三信息和第四信息来重新分配任务。
图19示出了根据本公开内容的系统的示例性实施方式的框图。例如,本文描述的根据本公开内容的示例性过程可以由处理装置和/或计算装置1905来执行。这样的处理装置/计算装置1905可以为例如计算机/处理器1910的全部或一部分,或者包括但不限于计算机/处理器1910,该计算机/处理器1910可以包括例如一个或更多个微处理器并且使用存储在计算机可存取介质(例如,RAM、ROM、硬盘驱动器或其他存储装置)上的指令。
如图19所示,可以设置例如计算机可存取介质1915(例如,如本文上面所描述的,存储装置诸如硬盘、软盘、记忆棒、CD-ROM、RAM、ROM等或其集合)(例如,与处理装置1905进行通信)。计算机可存取介质1915可以在其上包含可执行指令1920。另外地或可替选地,存储装置1925可以与计算机可存取介质1915分开设置,其可以向处理装置1905提供指令以将处理装置配置成执行例如如本文上面所描述的某些示例性过程、进程和方法。
此外,示例性处理装置1905可以设置或包括输入/输出端口1935,输入/输出端口1935可以包括例如有线网络、无线网络、互联网、内联网、数据采集探针、传感器等。如图19所示,示例性处理装置1905可以与示例性显示装置1930通信,根据本公开内容的某些示例性实施方式,示例性显示装置1930例如可以是被配置成除了从处理装置输出信息之外还向处理装置输入信息的触摸屏。此外,示例性显示器1930和/或存储装置1925可以用于以用户可存取格式和/或用户可读格式显示和/或存储数据。
前述内容仅示出了本公开内容的原理。鉴于本文的教导,对所描述的实施方式的各种修改和变更对于本领域技术人员将是明显的。因此,应当理解,本领域技术人员将能够设计出许多系统、装置和过程,虽然本文没有明确示出或描述,但是它们体现了本公开内容的原理,并且因此可以在本公开内容的精神和范围内。如本领域普通技术人员应当理解的,各种不同的示例性实施方式可以彼此一起以及互换使用。另外,在本公开内容——包括说明书、附图及其权利要求书——中使用的某些术语可以在某些情况下同义地使用,包括但不限于例如数据和信息。应当理解,虽然这些词和/或可以彼此同义的其他词在本文可以被同义地使用,但是可以存在这样的词可以旨在不同义地使用的情况。此外,就现有技术知识在本文上面未通过引用明确地并入的程度而言,其整体明确地并入本文。所引用的所有出版物均通过引用整体并入本文。
示例性参考文献
以下出版物和信息(如适用)通过引用整体并入本文:
[1]https://ieeexplore.ieee.org/abstract/document/6702677
[2]https://pdfs.semanticscholar.org/be9c/63c174dd363343227ffd266d68f321a9f456.pdf
[3]https://www.hpcadvisorycouncil.com/pdf/WRF_Analysis_and_Profiling_AMD_6276.pdf
[4]https://slurm.schedmd.com/topology.html
[5]https://slurm.schedmd.com/sbatch.html
[6]https://slurm.schedmd.com/core_spec.html
[7]https://docs.oracle.com/cd/E19957-01/820-0698/6ncdvjcmd/index.html
[8]http://gridengine.eu/grid-engine-internals?start=10
[9]http://docs.adaptivecomputing.com/torque/4-1-3/help.htm#topics/2-jobs/requestingRes.htm
[10]https://www.ibm.com/support/knowledgecenter/en/SSETD4_9.1.2/lsf_command_ref/bsu b.1.html
[11]https://www.open-mpi.org/doc/v3.0/man1/mpiexec.1.php
[12]https://pubs.cray.com/content/S-2376/7.0.0/cray-performance-measurement-and-analysis-tools-user-guide/about-the-cray-performance-measurement-and-analysis-tools-user-guide
[13]http://www.hector.ac.uk/coe/cray-xe6-workshop-2012-Nov/pdf/craypat.pdf
[14]http://gridscheduler.sourceforge.net/
[15]https://www.ibm.com/support/knowledgecenter/SSETD4_9.1.3/lsf_welcome.html
[16]https://www.altair.com/pbs-professional/
[17]https://www.pbspro.org/
[18]https://www.mcs.anl.gov/research/projects/openpbs/
[19]https://support.adaptivecomputing.com/wp-content/uploads/2019/06/Moab-HPC-Suite_datasheet_20190611.pdf
[20]https://research.cs.wisc.edu/htcondor/
[22]https://www.ibm.com/support/knowledgecenter/SSFJTW_5.1.0/com.ibm.cluster.loadl.v5 r1.load100.doc/am2ug_ch1.htm
[23]https://www.open-mpi.org/
[24]http://mvapich.cse.ohio-state.edu/
[25]https://www.mpich.org/
[26]http://www.openshmem.org/site/
[27]https://www.openmp.org/
[28]https://www.csm.ornl.gov/pvm/
[29]https://pubs.cray.com/content/S-2529/17.05/xctm-series-programming-environ ment-user-guide-1705-s-2529/mpt
[30]https://downloads.linux.hpe.com/SDR/project/mpi/
[31]https://software.intel.com/en-us/mpi-library
[32]https://www.ibm.com/ae-en/marketplace/spectrum-mpi
Claims (54)
1.一种非暂态计算机可存取介质,其上存储有用于将多个任务分配给多个计算节点的计算机可执行指令,其中,当计算机装置执行所述指令时,所述计算机装置被配置成执行以下过程,所述过程包括:
接收与所述计算节点相关的第一信息,其中,所述第一信息包括所述计算节点中的每一个中的核的数目;
通过分离所述计算节点中的每一个中的核的数目来生成第二信息;以及
基于所述第二信息将所述任务分配给所述计算节点。
2.根据权利要求1所述的计算机可存取介质,其中,所述第一信息还包括:(i)所述计算节点中的每一个之间的网络连接的距离;以及(ii)所述网络连接的带宽。
3.根据权利要求1所述的计算机可存取介质,其中,所述第一信息还包括到至少一个最近相邻节点的距离。
4.根据权利要求1所述的计算机可存取介质,其中,所述计算机装置被配置成:基于所述任务来生成所述第二信息。
5.根据权利要求4所述的计算机可存取介质,其中,所述计算机装置被配置成:基于所述任务的维数来生成所述第二信息。
6.根据权利要求4所述的计算机可存取介质,其中,所述计算机装置还被配置成:
获得与和所述任务中的至少一个相关联的至少一个问题特性相关的信息;以及
基于所述至少一个问题特性将所述任务分配给所述计算节点。
7.根据权利要求6所述的计算机可存取介质,其中,所述至少一个问题特性包括以下中的至少一个:(i)网格中的第一维数;(ii)所述网格的至少一个轴中的第二维数;或者(iii)所述网格在消息传递接口进程中的第三点数。
8.根据权利要求6所述的计算机可存取介质,其中,所述计算机装置被配置成:
基于所述至少一个问题特性来确定最佳子网格布局;以及
基于所述最佳子网格布局来分配所述任务。
9.根据权利要求1所述的计算机可存取介质,其中,所述计算机装置被配置成:基于所述节点之间的通信数目的最小化来分配所述任务。
10.根据权利要求1所述的计算机可存取介质,其中,所述任务是消息传递接口进程。
11.根据权利要求1所述的计算机可存取介质,其中,所述计算机装置还被配置成:确定所述计算节点的计算拓扑。
12.根据权利要求11所述的计算机可存取介质,其中,所述计算机装置被配置成:在确定所述计算拓扑之后生成所述第二信息。
13.根据权利要求11所述的计算机可存取介质,其中,所述计算机装置还被配置成:
确定与所述计算拓扑中的变化相关的第三信息;
通过基于所述第三信息分离所述核的数目来生成第四信息;以及
基于所述第三信息和所述第四信息来重新分配所述任务。
14.根据权利要求1所述的计算机可存取介质,其中,所述计算机装置被配置成:
轮询所述计算节点;以及
基于所述轮询来生成所述第一信息。
15.根据权利要求1所述的计算机可存取介质,其中,所述计算机装置被配置成:生成所述第二信息,并且使用工作负荷管理器来分配所述任务。
16.根据权利要求1所述的计算机可存取介质,其中,所述计算机装置还被配置成:
执行至少一个模拟,所述至少一个模拟包括:模拟所述任务到所述计算节点的分配;以及
基于所述至少一个模拟来分配所述任务。
17.根据权利要求1所述的计算机可存取介质,其中,所述计算机装置被配置成:基于至少一个应用统计来执行所述至少一个模拟。
18.根据权利要求17所述的计算机可存取介质,其中,所述至少一个应用统计包括来自至少一个先前模拟的统计。
19.一种用于将多个任务分配给多个计算节点的系统,包括:
计算机硬件装置,所述计算机硬件装置被配置成:
接收与所述计算节点相关的第一信息,其中,所述第一信息包括所述计算节点中的每一个中的核的数目;
通过分离所述计算节点中的每一个中的核的数目来生成第二信息;以及
基于所述第二信息将所述任务分配给所述计算节点。
20.根据权利要求19所述的系统,其中,所述第一信息还包括:(i)所述计算节点中的每一个之间的网络连接的距离;以及(ii)所述网络连接的带宽。
21.根据权利要求19所述的系统,其中,所述第一信息还包括到至少一个最近相邻节点的距离。
22.根据权利要求19所述的系统,其中,所述计算机硬件装置被配置成:基于所述任务来生成所述第二信息。
23.根据权利要求22所述的系统,其中,所述计算机硬件装置被配置成:基于所述任务的维数来生成所述第二信息。
24.根据权利要求22所述的系统,其中,所述计算机硬件装置还被配置成:
获得与和所述任务中的至少一个相关联的至少一个问题特性相关的信息;以及
基于所述至少一个问题特性将所述任务分配给所述计算节点。
25.根据权利要求24所述的系统,其中,所述至少一个问题特性包括以下中的至少一个:(i)网格中的第一维数;(ii)所述网格的至少一个轴中的第二维数;或者(iii)所述网格在消息传递接口进程中的第三点数。
26.根据权利要求24所述的系统,其中,所述计算机硬件装置被配置成:
基于所述至少一个问题特性来确定最佳子网格布局;以及
基于所述最佳子网格布局来分配所述任务。
27.根据权利要求19所述的系统,其中,所述计算机硬件装置被配置成:基于所述节点之间的通信数目的最小化来分配所述任务。
28.根据权利要求19所述的系统,其中,所述任务是消息传递接口进程。
29.根据权利要求19所述的系统,其中,所述计算机硬件装置还被配置成:确定所述计算节点的计算拓扑。
30.根据权利要求29所述的系统,其中,所述计算机硬件装置被配置成:在确定所述计算拓扑之后生成所述第二信息。
31.根据权利要求29所述的系统,其中,所述计算机硬件装置还被配置成:
确定与所述计算拓扑中的变化相关的第三信息;
通过基于所述第三信息分离所述核的数目来生成第四信息;以及
基于所述第三信息和所述第四信息来重新分配所述任务。
32.根据权利要求19所述的系统,其中,所述计算机硬件装置被配置成:
轮询所述计算节点;以及
基于所述轮询来生成所述第一信息。
33.根据权利要求19所述的系统,其中,所述计算机硬件装置被配置成:生成所述第二信息,并且使用工作负荷管理器来分配所述任务。
34.根据权利要求19所述的系统,其中,所述计算机硬件装置还被配置成:
执行至少一个模拟,所述至少一个模拟包括:模拟所述任务到所述计算节点的分配;以及
基于所述至少一个模拟来分配所述任务。
35.根据权利要求19所述的系统,其中,所述计算机硬件装置被配置成:基于至少一个应用统计来执行所述至少一个模拟。
36.根据权利要求35所述的系统,其中,所述至少一个应用统计包括来自至少一个先前模拟的统计。
37.一种用于将多个任务分配给多个计算节点的方法,包括:
接收与所述计算节点相关的第一信息,其中,所述第一信息包括所述计算节点中的每一个中的核的数目;
通过分离所述计算节点中的每一个的核的数目来生成第二信息;以及
使用计算机硬件装置,基于所述第二信息将所述任务分配给所述计算节点。
38.根据权利要求37所述的方法,其中,所述第一信息还包括:(i)所述计算节点中的每一个之间的网络连接的距离,以及(ii)所述网络连接的带宽。
39.根据权利要求37所述的方法,其中,所述第一信息还包括到至少一个最近相邻节点的距离。
40.根据权利要求37所述的方法,还包括:基于所述任务来生成所述第二信息。
41.根据权利要求40所述的方法,还包括:基于所述任务的维数来生成所述第二信息。
42.根据权利要求40所述的方法,还包括:
获得与和所述任务中的至少一个相关联的至少一个问题特性相关的信息;以及
基于所述至少一个问题特性将所述任务分配给所述计算节点。
43.根据权利要求42所述的方法,其中,所述至少一个问题特性包括以下中的至少一个:(i)网格中的第一维数;(ii)所述网格的至少一个轴中的第二维数;或者(iii)所述网格在消息传递接口进程中的第三点数。
44.根据权利要求42所述的方法,还包括:
基于所述至少一个问题特性来确定最佳子网格布局;以及
基于所述最佳子网格布局来分配所述任务。
45.根据权利要求37所述的方法,还包括:基于所述节点之间的通信数目的最小化来分配所述任务。
46.根据权利要求37所述的方法,其中,所述任务是消息传递接口进程。
47.根据权利要求37所述的方法,还包括:确定所述计算节点的计算拓扑。
48.根据权利要求47所述的方法,还包括:在确定所述计算拓扑之后生成所述第二信息。
49.根据权利要求47所述的方法,还包括:
确定与所述计算拓扑的改变相关的第三信息;
通过基于所述第三信息分离核的数目来生成第四信息;以及
基于所述第三信息和所述第四信息来重新分配所述任务。
50.根据权利要求37所述的方法,还包括:
轮询所述计算节点;以及
基于所述轮询来生成所述第一信息。
51.根据权利要求37所述的方法,还包括:生成所述第二信息,并且使用工作负荷管理器来分配所述任务。
52.根据权利要求37所述的方法,还包括:
执行至少一个模拟,所述至少一个模拟包括:模拟所述任务到所述计算节点的分配;以及
基于所述至少一个模拟来分配所述任务。
53.根据权利要求37所述的方法,还包括:基于至少一个应用统计来执行所述至少一个模拟。
54.根据权利要求53所述的方法,其中,所述至少一个应用统计包括来自至少一个先前模拟的统计。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962860480P | 2019-06-12 | 2019-06-12 | |
US62/860,480 | 2019-06-12 | ||
US201962947375P | 2019-12-12 | 2019-12-12 | |
US62/947,375 | 2019-12-12 | ||
PCT/US2020/036331 WO2020251850A1 (en) | 2019-06-12 | 2020-06-05 | System, method and computer-accessible medium for a domain decomposition aware processor assignment in multicore processing system(s) |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114391137A true CN114391137A (zh) | 2022-04-22 |
Family
ID=73782086
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080050878.XA Pending CN114391137A (zh) | 2019-06-12 | 2020-06-05 | 用于多核处理系统中的域分解感知处理器分配的系统、方法和计算机可存取介质 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20220253336A1 (zh) |
EP (1) | EP3983893A4 (zh) |
JP (1) | JP2022537944A (zh) |
KR (1) | KR20230091834A (zh) |
CN (1) | CN114391137A (zh) |
CA (1) | CA3143231A1 (zh) |
WO (1) | WO2020251850A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113254021B (zh) * | 2021-04-16 | 2022-04-29 | 云南大学 | 一种编译器协助的强化学习多核任务分配算法 |
US20230053594A1 (en) * | 2021-08-20 | 2023-02-23 | Yokogawa Electric Corporation | Distributive deployment of process automation software applications |
WO2023175578A1 (en) * | 2022-03-17 | 2023-09-21 | New York University In Abu Dhabi Corporation | Systems, methods and computer-accessible medium for an inter-process communication coupling configuration |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020049859A1 (en) * | 2000-08-25 | 2002-04-25 | William Bruckert | Clustered computer system and a method of forming and controlling the clustered computer system |
US6725211B1 (en) * | 2000-09-28 | 2004-04-20 | International Business Machines Corporation | Work load assessment heuristic for optimal task parallelism determination |
US7395536B2 (en) * | 2002-11-14 | 2008-07-01 | Sun Microsystems, Inc. | System and method for submitting and performing computational tasks in a distributed heterogeneous networked environment |
JP4063651B2 (ja) * | 2002-12-12 | 2008-03-19 | 富士通株式会社 | ジョブスケジューリング方法および装置 |
US7395414B2 (en) * | 2005-02-11 | 2008-07-01 | International Business Machines Corporation | Dynamic recalculation of resource vector at issue queue for steering of dependent instructions |
US7461241B2 (en) * | 2006-07-31 | 2008-12-02 | International Business Machines Corporation | Concurrent physical processor reassignment method |
US8122132B2 (en) * | 2008-12-16 | 2012-02-21 | International Business Machines Corporation | Techniques for dynamically assigning jobs to processors in a cluster based on broadcast information |
CA2801382C (en) * | 2010-06-29 | 2018-12-18 | Exxonmobil Upstream Research Company | Method and system for parallel simulation models |
EP2608084B1 (en) * | 2011-12-22 | 2015-03-18 | Airbus Operations S.L. | Heterogeneous parallel systems for accelerating simulations based on discrete grid numerical methods |
US9660874B2 (en) * | 2012-12-13 | 2017-05-23 | Level 3 Communications, Llc | Devices and methods supporting content delivery with delivery services having dynamically configurable log information |
US10521520B2 (en) * | 2013-02-14 | 2019-12-31 | Nocturnal Innovations LLC | Highly scalable cluster engine for hosting simulations of objects interacting within a space |
KR101684677B1 (ko) * | 2013-12-26 | 2016-12-09 | 한국전자통신연구원 | 멀티코어 시스템의 시스템 성능 최적화 장치 및 방법 |
JP6380051B2 (ja) * | 2014-11-28 | 2018-08-29 | 富士通株式会社 | 有限要素演算プログラム、有限要素演算装置および有限要素演算方法 |
US9742867B1 (en) * | 2016-03-24 | 2017-08-22 | Sas Institute Inc. | Network data retrieval |
US10896064B2 (en) * | 2017-03-27 | 2021-01-19 | International Business Machines Corporation | Coordinated, topology-aware CPU-GPU-memory scheduling for containerized workloads |
-
2020
- 2020-06-05 CA CA3143231A patent/CA3143231A1/en active Pending
- 2020-06-05 KR KR1020227000997A patent/KR20230091834A/ko active Search and Examination
- 2020-06-05 JP JP2021574183A patent/JP2022537944A/ja active Pending
- 2020-06-05 US US17/618,797 patent/US20220253336A1/en active Pending
- 2020-06-05 CN CN202080050878.XA patent/CN114391137A/zh active Pending
- 2020-06-05 WO PCT/US2020/036331 patent/WO2020251850A1/en unknown
- 2020-06-05 EP EP20822783.5A patent/EP3983893A4/en active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2022537944A (ja) | 2022-08-31 |
WO2020251850A1 (en) | 2020-12-17 |
EP3983893A1 (en) | 2022-04-20 |
EP3983893A4 (en) | 2023-03-08 |
US20220253336A1 (en) | 2022-08-11 |
KR20230091834A (ko) | 2023-06-23 |
CA3143231A1 (en) | 2020-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7543184B2 (en) | System and method for distributing system tests in parallel computing environments | |
Jeannot et al. | Near-optimal placement of MPI processes on hierarchical NUMA architectures | |
CN114391137A (zh) | 用于多核处理系统中的域分解感知处理器分配的系统、方法和计算机可存取介质 | |
KR20170109600A (ko) | 칩 컴퓨팅 시스템 상의 네트워크에서 프로세서들에 프로세스들의 매핑 | |
Guo et al. | Modeling, analysis, and experimental comparison of streaming graph-partitioning policies | |
Chan et al. | The impact of heterogeneous multi-core clusters on graph partitioning: an empirical study | |
Shih et al. | A performance-based parallel loop scheduling on grid environments | |
Hashmi et al. | Machine-agnostic and Communication-aware Designs for MPI on Emerging Architectures | |
Hassan Temucin et al. | Micro-Benchmarking MPI Partitioned Point-to-Point Communication | |
Pottier et al. | Modeling the performance of scientific workflow executions on hpc platforms with burst buffers | |
Zarrin et al. | Dynamic, scalable and flexible resource discovery for large-dimension many-core systems | |
Kumar et al. | Analysis on Resource Allocation for parallel processing and Scheduling in Cloud Computing | |
Zou et al. | ClouDiA: a deployment advisor for public clouds | |
Kocoloski | Scalability in the Presence of Variability | |
Yang et al. | Improvement of workload balancing using parallel loop self-scheduling on Intel Xeon Phi | |
Prades et al. | On the effect of using rCUDA to provide CUDA acceleration to Xen virtual machines | |
Akhtar et al. | ComScribe: identifying intra-node GPU communication | |
MacKenzie et al. | Performance portability through semi-explicit placement in distributed Erlang | |
Geier et al. | SherlockFog: a new tool to support application analysis in Fog and Edge computing | |
Hammond et al. | Performance prediction and procurement in practice: assessing the suitability of commodity cluster components for wavefront codes | |
Nguyen et al. | Mapreduce in the cloud: Data-location-aware vm scheduling | |
Vardas | Process Placement Optimizations and Heterogeneity Extensions to the Slurm Resource Manager | |
Kim | Colocation-aware Resource Management for Distributed Parallel Applications in Consolidated Clusters | |
JP6650850B2 (ja) | 計算装置および計算方法 | |
US10469822B2 (en) | Scalable distributed computation framework for data-intensive computer vision workloads |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40064390 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |