CN104375882A - 匹配于高性能计算机结构的多级嵌套数据驱动计算方法 - Google Patents

匹配于高性能计算机结构的多级嵌套数据驱动计算方法 Download PDF

Info

Publication number
CN104375882A
CN104375882A CN201410677986.6A CN201410677986A CN104375882A CN 104375882 A CN104375882 A CN 104375882A CN 201410677986 A CN201410677986 A CN 201410677986A CN 104375882 A CN104375882 A CN 104375882A
Authority
CN
China
Prior art keywords
thread
threads
sets
data
message
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.)
Granted
Application number
CN201410677986.6A
Other languages
English (en)
Other versions
CN104375882B (zh
Inventor
张爱清
莫则尧
闫洁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
INSTITUTE OF APPLIED PHYSICS AND COMPUTATIONAL MATHEMATICS
Original Assignee
INSTITUTE OF APPLIED PHYSICS AND COMPUTATIONAL MATHEMATICS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by INSTITUTE OF APPLIED PHYSICS AND COMPUTATIONAL MATHEMATICS filed Critical INSTITUTE OF APPLIED PHYSICS AND COMPUTATIONAL MATHEMATICS
Priority to CN201410677986.6A priority Critical patent/CN104375882B/zh
Publication of CN104375882A publication Critical patent/CN104375882A/zh
Application granted granted Critical
Publication of CN104375882B publication Critical patent/CN104375882B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Multi Processors (AREA)

Abstract

本发明提供了一种匹配于高性能计算机结构的多级嵌套数据驱动计算方法,该方法主要是为了适应于高性能计算机的体系结构,包括:匹配计算资源即计算节点-处理器-处理器核的进程-线程组-线程的三级嵌套并行计算组织,其中,在进程以及线程组两级采用静态数据分配方法且在线程组内支持任务动态调度,以及匹配网络-内存-缓存的三级嵌套数据通信与数据划分。本方法解决了现有技术在实现数据驱动并行计算时面临的计算并行性与数据局部性方面的低效问题,达到了有效负载平衡并提高通信、访存和计算效率的技术效果。

Description

匹配于高性能计算机结构的多级嵌套数据驱动计算方法
技术领域
本发明涉及计算机技术领域,特别涉及一种匹配于高性能计算机结构的多级嵌套数据驱动计算方法。
背景技术
主流高性能计算机体系结构是分布式多核多处理器机群,其发展趋势是计算资源的增多与存储层次的加深。具体而言,计算资源的组织层次为:机群--计算节点--处理器--处理器核,对应存储资源的组织层次为:分布式内存--本地共享内存--处理器最外层共享Cache--处理器核私有Cache,当前高性能计算机系统的实际性能取决于程序的并行度和数据访问的局部性。
在高性能计算中,数据驱动(Data-Driven)并行计算技术用于求解具有非规则数据依赖的问题。数据驱动并行计算的实现通常分为三个步骤:
步骤1:将计算空间进行划分并分配给处理器计算资源(也可以称之为计算单元);
步骤2:用有向无环图对划分后的子空间之间的数据依赖关系进行建模;
步骤3:按照上述有向图指定的合法拓扑排序,运行时依次驱动就绪的子空间进行并行计算。
在数据驱动的并行计算过程中,通信与计算是交叉的,具有异步与非规则的特征,这为匹配当前高性能计算机系统对并行性和数据局部性的要求提出了极大挑战。传统的标准并行计算模型,即分布式环境下基于MPI消息传递机制的多进程并行以及共享存储模式下基于OpenMP的多线程并行,均无法适应当前高性能计算机的三级并行(单机-处理器-处理器核)体系结构且不能高效支持对运行时就绪计算任务的动态调度。
针对现有技术中在实现数据驱动并行计算时面临的计算并行性与数据局部性方面的效率低下的技术问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种匹配于高性能计算机结构的多级嵌套数据驱动计算方法,以解决现有技术中在实现数据驱动并行计算时面临的计算并行性与数据局部性方面的效率低下的技术问题,该方法包括:
将计算资源分为三级组织,所述三级组织包括:进程、线程组和线程,其中,每个进程对应一个计算节点,每个线程组对应一个处理器,每个线程对应一个处理器核;
在通信过程中,通过三级路由传递消息,其中,所述三级路由包括:进程之间的物理网络、线程组之间的数据通道和线程组内部的线程之间的数据通道。
在一个实施例中,在每个线程组中分配一个主线程,除该主线程外的其它线程作为工作线程。
在一个实施例中,在数据驱动并行计算的过程中,主线程动态调度可计算的数据块,按照运行时负载平衡的原则,将数据块动态分配给工作线程执行计算。
在一个实施例中,按照运行时负载平衡的原则,将数据块动态分配给工作线程执行计算,包括:
主线程接收所在线程组的工作线程发送的消息;
主线程判断接收的消息的目的地是否是所在线程组;
如果是,则将接收到的消息转发给所在线程组的工作线程中负载最轻的工作线程。
在一个实施例中,在所述线程组内部的线程之间的数据通道中,工作线程之间通过主线程的转发进行通信。
在一个实施例中,每个进程中有一个主管线程,所述主管线程从所述进程内各个线程组的主线程中选举产生,用于实现所在进程与其它进程之间的通信,以及实现机群范围内的全局同步。
在一个实施例中,所述主管线程实现所在进程与其它进程之间的通信,包括:
所述主管线程接收所在进程的主线程发送的消息,并将接收的消息转发至该消息的目的进程的主管线程;
和/或,所述主管线程接收其它进程的主管线程发送的消息,并将消息转发至所在进程内的目的线程组的主线程。
在一个实施例中,所述主管线程实现机群范围内的全局同步,包括:
所述主管线程侦听机群范围内的全局同步信号;
根据所述全局同步信号判断整个计算任务是否结束;
如果计算结束,则设置所在进程的数据驱动为完成状态,并通知所在进程内的各个线程组退出。
在一个实施例中,从进程内各个线程组的主线程中选举产生主管线程,包括:
竞争互斥锁;
获得所述互斥锁的主线程作为所在进程的主管线程。
在一个实施例中,所述数据通道中传输的是指针,指针指向的是内存空间,内存空间中存储有实际数据。
在本发明实施例中,将计算资源分为进程、线程组和线程三级组织,其中,每个进程对应一个计算节点,每个线程组对应一个处理器,每个线程对应一个处理器核;在通信过程中,通过进程之间的物理网络、线程组之间的数据通道和线程组内部的线程之间的数据通道三级路由传递消息。通过匹配计算节点-处理器-处理器核的进程-线程组-线程三级嵌套并行计算组织,其中,在进程以及线程组两级采用静态数据分配方法且在线程组内支持任务动态调度,以及匹配网络-内存-缓存的三级嵌套数据通信与数据划分,解决了现有技术中在实现数据驱动并行计算时面临的计算并行性与数据局部性方面的低效问题,达到了有效负载平衡并提高通信、访存和计算效率的技术效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1是本发明实施例的匹配于高性能计算机结构的多级嵌套数据驱动计算方法的方法流程图;
图2是本发明实施例的机器节点内三级嵌套的计算与通信组织示意图;
图3是本发明实施例的主线程与工作线程的执行步骤方法流程图;
图4是本发明实施例的主管线程的执行步骤方法流程图;
图5是本发明实施例的单向网格扫描的网格示意图;
图6是本发明实施例的有向无环的网格示意图;
图7是本发明实施例的数据驱动单元的输出走向图;
图8是本发明实施例的16*16的网格示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
在本例中,提出了一种匹配于高性能计算机结构的多级嵌套数据驱动计算方法,该方法主要是为了适应于高性能计算机的体系结构,所述的高性能计算机就是多核多处理机群,如图1所示,包括以下步骤:
步骤101:将计算资源分为三级组织,所述三级组织包括:进程、线程组和线程,其中,每个进程对应一个计算节点,每个线程组对应一个处理器,每个线程对应一个处理器核;
步骤102:在通信过程中,通过三级路由传递消息,其中,所述三级路由包括:进程之间的物理网络、线程组之间的数据通道和线程组内部的线程之间的数据通道。
在本例中,将计算资源分为进程、线程组和线程三级组织,其中,每个进程对应一个计算节点,每个线程组对应一个处理器,每个线程对应一个处理器核;在通信过程中,通过进程之间的物理网络、线程组之间的数据通道和线程组内部的线程之间的数据通道三级路由传递消息。通过匹配计算节点-处理器-处理器核的进程-线程组-线程三级嵌套并行计算组织,其中,在进程以及线程组两级采用静态数据分配方法且在线程组内支持任务动态调度,以及匹配网络-内存-缓存的三级嵌套数据通信与数据划分,解决了现有技术中在实现数据驱动并行计算时面临的计算并行性与数据局部性方面的低效问题,达到了有效负载平衡并提高通信、访存和计算效率的技术效果。
具体的,在实现的过程中,在每个线程组中分配一个主线程,除该主线程外的其它线程作为工作线程,在数据驱动并行计算的过程中,主线程动态调度可计算的数据块,按照运行时负载平衡的原则,将数据块动态分配给工作线程执行计算。
其中,主线程按照运行时负载平衡的原则,将数据块动态分配给工作线程执行计算,可以包括以下步骤:
步骤1:主线程接收所在线程组的工作线程发送的消息;
步骤2:主线程判断接收的消息的目的地是否是所在线程组;
步骤3:如果是,则将接收到的消息转发给所在线程组的工作线程中负载最轻的工作线程。
主线程承载的不仅是所在线程组中的各个线程之间的通信,还需要负责所在线程组与其它线程组之间的通信,即进程内的通信。
为了实现全局的通信和管理,在每个进程组中还会选举产生一个主管线程(即leader线程),该主管线程可以是从进程内各个线程组的主线程(即master线程)中选举产生的,用于实现所在进程与其它进程之间的通信,还用于实现机群范围内的全局同步,具体的包括:
1)主管线程接收所在进程的主线程发送的消息,并将接收的消息转发至该消息的目的进程的主管线程;
2)主管线程接收其它进程的主管线程发送的消息,并将消息转发至所在进程内的目的线程组的主线程。
3)主管线程侦听机群范围内的全局同步信号,根据所述全局同步信号判断整个计算任务是否结束,如果计算结束,则设置所在进程的数据驱动为完成状态,并通知所在进程内的各个线程组退出。
为了实现主管线程的选举,可以设置一互斥锁,主线程竞争该互斥锁,获得该互斥锁的主线程就作为所在进程的主管线程。
在上述基于计算机体系的任务数据处理方法中,通信过程中的消息传递主要经过三级路由,即:物理网络(进程之间)-处理器间的数据通道(线程组之间)-处理器内部的数据通道(线程组内的线程之间)。具体的,主线程与所在线程组的各个工作线程之间(即线程组内的线程之间)可以通过进行数据传输的双向数据通道通信,同一进程内的主线程之间(即线程组之间)可以通过该点对点双向数据通道全相连通信,主管线程与主管线程之间(即进程之间)可以通过物理网络通信。
为了实现较高的通信效率,不增加额外的数据拷贝,在进行数据传输的过程中,双向数据通道中并不传输数据,而是传输指针,指针指向的是内存空间,内存空间中存储有实际数据,这样只要获取到指针就相当于获取到了数据,而数据本身并不需要进行传递,因此,不需要额外的数据拷贝。
下面将结合一个具体的实施例对上述基于计算机体系的任务数据处理方法的原理和机制进行具体说明,然而值得注意的是,该具体实施例仅是为了更好地说明本发明,并不构成对本发明的不当限定。
在本例中,提出了一种匹配于多核多处理器机群计算机体系结构的多级嵌套数据驱动并行计算方法,以适应当前主流高性能计算机中“计算节点-处理器-处理器核”的三级硬件体系结构,从而提高程序运行时的并行度和动态负载平衡,以便提高计算并行性、数据局部性和通信效率。
该多级嵌套数据驱动计算技术总的来说主要包括两个模块和一个策略,其中,两个模块指的是多级嵌套的并行计算模块和多级嵌套的数据通信模块,一个策略指的是多级嵌套的问题空间(任务数据)划分策略。如图2所示,是机器节点内三级嵌套的计算与通信组织示意图,下面结合图2对上述的两个模块和一个策略进行具体说明:
1)多级嵌套的并行计算模块:将计算资源分为三级组织:进程-线程组-线程,分别对应:计算节点-处理器-处理器核,具体方案为:
在机群范围内,每个计算节点运行一个进程,进程之间为分布式存储且使用MPI消息传递机制进行通信;
计算节点内部,每个处理器固定分配一个线程组,在每个线程组内,采用master-workers多线程模式,其中,master线程(主线程)代表该线程组与其它线程组交互,而worker线程(工作线程)只在本线程组内可见。
此外,每个进程有一个虚拟的leader线程,由各个线程组的master线程通过选举轮流担任,负责与其它远程进程通信并参与机群范围内的全局同步。
2)多级嵌套的数据通信模块,就是在通信过程中,消息的传递经过三级路由,即:网络(进程之间)-处理器间数据通路(线程组之间)-处理器内部数据通路(线程组内的线程之间),具体方案为:
线程组内部,master和每个worker之间都有一组双向数据通道,worker线程之间通常不通信,如果通信则通过master线程来转发。
线程组之间,通过软件实现的双向数据通道来通信,所有通信操作都由线程组的master线程来执行,进程内部所有线程组的master线程通过点对点的双向数据通道全相连;
进程之间,通过物理网络进行通信,使用MPI消息传递机制(或者GASNet等更为底层的通信接口)实现,所有通信操作由leader线程来完成。进程内每个线程组的master都有一条双向的数据通道与leader线程相连。如果master线程要发送数据给远程进程,则先发送数据给leader线程,由leader线程随后转发到远程进程;同样,leader线程负责接收远程进程发送来的数据,然后再转发给本地相关线程组的master线程。
上述双向数据通路用两条SPSC(Single Producer Single Consumer,单生产者单消费者)单向队列实现。具体应用过程为:生产者分配消息内存空间并填充数据,然后将该消息结构的内存指针通过数据通路传递给消费者,消费者收到指针后决定消费或者转发该消息。在这个过程中,指针的传递意味着消息的所有权(Ownership)的转移,拥有该消息所有权的唯一线程可以消费该消息的数据并且释放消息内存空间。在这个过程中,消息数据是零拷贝(Zero-Copy)的。
3)多级嵌套的问题空间划分策略,假设高性能计算机系统为包含M个计算节点的机群,其中,每个计算节点包含P个处理器,每个处理器包含C个核。以网格为例,本发明中问题空间的划分策略如下:
3-1)将整个网格划分为M个区域,每个区域分配给唯一一个进程;
3-2)在每个进程内,其网格区域进一步划分为P个网格子区域,每个网格子区域分配给一个线程组;
3-3)在每个线程组内,网格子区域进一步划分为若干网格块,网格块为最小的调度单位。在数据驱动并行计算过程中,Master线程动态调度可计算的网格块,按照运行时负载平衡的原则,将网格块动态分配给workers线程执行计算。
基于上述计算与通信软件模块以及问题空间划分策略,下面对本例中的数据驱动并行计算方法进行具体说明,如图3所示,包括:
步骤001:进入数据驱动并行计算模块之前,初始化前述计算与通信模块并分配初始可计算任务。该步骤可以看作数据驱动模块入口之前的预处理。
worker线程重复执行以下步骤直到整个计算结束:
步骤101:从master线程接收消息,根据消息数据生成新的计算任务并更新本地的可计算任务队列,该任务队列为本worker线程私有,任务的优先级根据具体问题定义。
步骤102:从可计算任务队列中取优先级最高的计算任务,然后进行计算。
步骤103:将完成的计算任务从就绪队列中移除,并将该任务生成的数据打包成消息并传递给master线程。
master线程负责本线程组的任务调度和通信,重复执行以下步骤直到整个计算结束:
步骤201:接收本线程组内所有worker线程的消息,如果该消息的目的地仍然是本线程组,则根据当前workers的负载状况,将该消息转发给负载最轻的worker,如果该消息的目的地是本进程内的其它线程组,则通过数据通路转发给该目的线程组的master,如果该消息的目的地是远程进程,则将消息转发给本进程的leader线程。
步骤202:接收leader线程和其它线程组的消息,根据当前线程组内workers的负载状况,将收到的消息转发给负载最轻的worker。
步骤203:参与本进程内leader的选举(例如:设置一个互斥锁,获得该锁的master线程成为leader并执行一次leader线程代码)。
其中,leader线程负责本进程与远程进程之间的网络通信以及机群范围内的全局同步,每次被调用时执行一遍如图4所示的步骤:
步骤301:转发所有本地线程组master线程的消息到远程进程;
步骤302:接收远程进程的消息并转发给本地相关线程组的master线程;
步骤303:侦听机群范围内的全局同步信号,判断是否整个计算任务已经结束;如果计算结束,则设置本进程的数据驱动过程为完成状态,通知进程内各线程组退出。
在本例中结合网格上数据驱动的并行扫描算法来详细描述本发明,需要指出的是,本例中仅是以网格扫描问题为例进行说明,还可以将其应用在其它地方。为了描述简单,在本例中使用2维结构网格,然而需要注意的是,该方法也适应于多维和非结构网格。
所谓的网格扫描问题就是:沿着一个或者多个方向对网格单元依次进行计算,在扫描方向上下游网格单元的计算依赖于其上游网格单元的数据,只有数据依赖得到满足网格单元才可以进行计算。对于上述过程,可以用有向无环图对单元间的有向数据依赖关系进行建模,并用数据驱动的方法来对单元进行并行计算。将每个网格单元看成一个计算部件,则其执行过程为:从入边接收数据-计算-向出边发送数据。
如图5至7所示,分别为对单向网格扫描问题、有向无环图建模和数据驱动的单元计算的示意图,需要注意的是,在实际应用中比较多的是多方向并行扫描。
具体的,基于以上网格扫描的结果多级嵌套的数据驱动并行计算技术在网格扫描问题中的具体实施步骤包括:
步骤1:网格区域分解:采取两级静态划分,首先将整个网格划分为M(计算节点个数)个区域(可以不连续)并分配给进程,然后每个进程进一步将自己的区域分成P(计算节点内处理器的个数)个子区域并分配给每个线程组。如图8所示是一个16*16规模网格的划分示意图,其中包含4个进程,每个进程包含4个线程组。
步骤2:初始化源计算资源:每个线程组对自己分到的网格子区域进行初始化,线程组master将当前可计算的网格单元(即扫描方向上无数据依赖的源网格单元)平均分配给worker线程。
步骤3:数据驱动并行计算:因源网格单元对其它网格单元没有数据依赖,可以直接进行计算,其它网格单元则由其依赖的数据来动态地驱动计算。
以图8中的网格单元C相关的计算为例,它可以用(进程号,线程组号,本地单元号)即(0,0,15)来索引。在A完成计算并发送消息给C时,线程组(0,0)的master线程将该消息转发给worker线程(记为w0),即将单元C动态分配给线程w0。C收齐扫描方向上的所有上游单元(即A、B和D)的消息后,w0便可以在C上执行计算。在C完成计算后,发送消息给其下游单元(E,F和G)。
其中,因C到E的通信为跨进程,因此,数据传输包括:
1)worker线程w0发送消息给其master线程;
2)该master线程转发消息给本进程的leader线程;
3)本进程leader线程转发消息给远程进程1的leader线程;
4)进程1的leader线程转发该消息给其线程组(1,0);
5)进程1的线程组(1,0)的master线程收到消息并对目标网格单元E进行动态调度。C到F的通信过程与C到E的过程类似。
因C到G的通信为进程内跨线程组,因此,数据传输包括:
1)worker线程w0发送消息给其master线程;
2)该master线程转发该消息给线程组(0,1)的master线程;
3)线程组(0,1)的master接收消息并对目标网格单元G进行动态调度。
在具体实现的时候,进程之间的通信方式可以采用GASNet方式等,这种方式相比MPI需要更底层的库实现,线程可以用Pthreads或者重新封装后的OpenMP实现,进程组内的workers之间可以增加全相连的数据通路。
在本例中,通过上述方式进行任务数据的处理,主要可以达到以下效果:
1)较好的数据局部性:进程组固定运行在一个多核处理器上且固定分配网格区域,这种策略避免了处理器之间的频繁数据交互对处理器最外层Cache(缓存)性能的影响以及跨处理器Socket访存时的NUMA效应,从而保证了线程组内线程具有较好的数据局部性。
2)较高的运行时并行度:线程组内的workers线程的任务由master线程动态调度,从而保证了进程组内实时的负载均衡,进而达到了最大的运行时计算并行度。
3)较高的通信效率:虽然多级嵌套的消息路由方式增加了消息传递的次数,但是由于所有消息转发操作都是由专门的master线程来完成的且增加的转发操作传递的都是消息指针,因而在传递实时性方面损益很小且不会增加额外的数据拷贝;另一方面,分级路由降低了所有线程参与通信带来的设计复杂度以及数据竞争,消除了计算节点内多处理器之间频繁的数据移动所带来的昂贵开销(包括处理器Cache失效和NUMA效应)。
基于以上分析可以看出,该匹配于高性能计算机结构的多级嵌套数据驱动计算方法可以极大地提高数据驱动应用的通信效率。
在另外一个实施例中,还提供了一种软件,该软件用于执行上述实施例及优选实施方式中描述的技术方案。
在另外一个实施例中,还提供了一种存储介质,该存储介质中存储有上述软件,该存储介质包括但不限于:光盘、软盘、硬盘、可擦写存储器等。
从以上的描述中,可以看出,本发明实施例实现了如下技术效果:将计算资源分为进程、线程组和线程三级组织,其中,每个进程对应一个计算节点,每个线程组对应一个处理器,每个线程对应一个处理器核;在通信过程中,通过进程之间的物理网络、线程组之间的数据通道和线程组内部的线程之间的数据通道三级路由传递消息。通过匹配计算节点-处理器-处理器核的进程-线程组-线程三级嵌套并行计算组织,其中,在进程以及线程组两级采用静态数据分配方法且在线程组内支持任务动态调度,以及匹配网络-内存-缓存的三级嵌套数据通信与数据划分,解决了现有技术中在实现数据驱动并行计算时面临的计算并行性与数据局部性方面的低效问题,达到了有效负载平衡并提高通信、访存和计算效率的技术效果。
显然,本领域的技术人员应该明白,上述的本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种匹配于高性能计算机结构的多级嵌套数据驱动计算方法,其特征在于,包括:
将计算资源分为三级组织,所述三级组织包括:进程、线程组和线程,其中,每个进程对应一个计算节点,每个线程组对应一个处理器,每个线程对应一个处理器核;
在通信过程中,通过三级路由传递消息,其中,所述三级路由包括:进程之间的物理网络、线程组之间的数据通道和线程组内部的线程之间的数据通道。
2.如权利要求1所述的方法,其特征在于,在每个线程组中分配一个主线程,除该主线程外的其它线程作为工作线程。
3.如权利要求2所述的方法,其特征在于,在数据驱动并行计算的过程中,主线程动态调度可计算的数据块,按照运行时负载平衡的原则,将数据块动态分配给工作线程执行计算。
4.如权利要求3所述的方法,其特征在于,按照运行时负载平衡的原则,将数据块动态分配给工作线程执行计算,包括:
主线程接收所在线程组的工作线程发送的消息;
主线程判断接收的消息的目的地是否是所在线程组;
如果是,则将接收到的消息转发给所在线程组的工作线程中负载最轻的工作线程。
5.如权利要求2所述的方法,其特征在于,在所述线程组内部的线程之间的数据通道中,工作线程之间通过主线程的转发进行通信。
6.如权利要求2所述的方法,其特征在于,每个进程中有一个主管线程,所述主管线程是从所述进程内各个线程组的主线程中选举产生的,用于实现所在进程与其它进程之间的通信,以及实现机群范围内的全局同步。
7.如权利要求6所述的方法,其特征在于,所述主管线程实现所在进程与其它进程之间的通信,包括:
所述主管线程接收所在进程的主线程发送的消息,并将接收的消息转发至该消息的目的进程的主管线程;
和/或,所述主管线程接收其它进程的主管线程发送的消息,并将消息转发至所在进程内的目的线程组的主线程。
8.如权利要求6所述的方法,其特征在于,所述主管线程实现机群范围内的全局同步,包括:
所述主管线程侦听机群范围内的全局同步信号;
根据所述全局同步信号判断整个计算任务是否结束;
如果计算结束,则设置所在进程的数据驱动为完成状态,并通知所在进程内的各个线程组退出。
9.如权利要求6所述的方法,其特征在于,从进程内各个线程组的主线程中选举产生主管线程,包括:
竞争互斥锁;
获得所述互斥锁的主线程作为所在进程的主管线程。
10.如权利要求1至9中任一项所述的方法,其特征在于,所述数据通道中传输的是指针,指针指向的是内存空间,内存空间中存储有实际通信数据。
CN201410677986.6A 2014-11-21 2014-11-21 匹配于高性能计算机结构的多级嵌套数据驱动计算方法 Active CN104375882B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410677986.6A CN104375882B (zh) 2014-11-21 2014-11-21 匹配于高性能计算机结构的多级嵌套数据驱动计算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410677986.6A CN104375882B (zh) 2014-11-21 2014-11-21 匹配于高性能计算机结构的多级嵌套数据驱动计算方法

Publications (2)

Publication Number Publication Date
CN104375882A true CN104375882A (zh) 2015-02-25
CN104375882B CN104375882B (zh) 2016-06-01

Family

ID=52554821

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410677986.6A Active CN104375882B (zh) 2014-11-21 2014-11-21 匹配于高性能计算机结构的多级嵌套数据驱动计算方法

Country Status (1)

Country Link
CN (1) CN104375882B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105868014A (zh) * 2016-04-08 2016-08-17 京信通信技术(广州)有限公司 内存优化的队列方法和系统
CN105893126A (zh) * 2016-03-29 2016-08-24 华为技术有限公司 一种任务调度方法及装置
CN106371912A (zh) * 2015-07-21 2017-02-01 阿里巴巴集团控股有限公司 一种流式计算系统的资源调度方法和装置
CN107046510A (zh) * 2017-01-13 2017-08-15 广西电网有限责任公司电力科学研究院 一种适用于分布式计算系统的节点及其组成的系统
CN108491263A (zh) * 2018-03-02 2018-09-04 珠海市魅族科技有限公司 数据处理方法、数据处理装置、终端及可读存储介质
CN108595277A (zh) * 2018-04-08 2018-09-28 西安交通大学 一种基于OpenMP/MPI混合编程的CFD仿真程序的通信优化方法
CN109117260A (zh) * 2018-08-30 2019-01-01 百度在线网络技术(北京)有限公司 一种任务调度方法、装置、设备和介质
CN109684061A (zh) * 2018-12-24 2019-04-26 无锡江南计算技术研究所 一种非结构网格众核粗粒度并行计算方法
CN110633149A (zh) * 2019-09-10 2019-12-31 中国人民解放军国防科技大学 均衡非结构网格单元计算量的并行负载均衡方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108549582B (zh) * 2018-03-30 2019-12-13 北京应用物理与计算数学研究所 匹配于高性能计算机结构的组合几何数据结构及并行方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101923491A (zh) * 2010-08-11 2010-12-22 上海交通大学 多核环境下线程组地址空间调度和切换线程的方法
CN102193779A (zh) * 2011-05-16 2011-09-21 武汉科技大学 一种面向MPSoC的多线程调度方法
CN103605568A (zh) * 2013-10-29 2014-02-26 北京奇虎科技有限公司 一种多线程管理方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101923491A (zh) * 2010-08-11 2010-12-22 上海交通大学 多核环境下线程组地址空间调度和切换线程的方法
CN102193779A (zh) * 2011-05-16 2011-09-21 武汉科技大学 一种面向MPSoC的多线程调度方法
CN103605568A (zh) * 2013-10-29 2014-02-26 北京奇虎科技有限公司 一种多线程管理方法及装置

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106371912A (zh) * 2015-07-21 2017-02-01 阿里巴巴集团控股有限公司 一种流式计算系统的资源调度方法和装置
CN106371912B (zh) * 2015-07-21 2019-11-26 阿里巴巴集团控股有限公司 一种流式计算系统的资源调度方法和装置
CN105893126B (zh) * 2016-03-29 2019-06-11 华为技术有限公司 一种任务调度方法及装置
CN105893126A (zh) * 2016-03-29 2016-08-24 华为技术有限公司 一种任务调度方法及装置
US10891158B2 (en) 2016-03-29 2021-01-12 Huawei Technologies Co., Ltd. Task scheduling method and apparatus
CN105868014A (zh) * 2016-04-08 2016-08-17 京信通信技术(广州)有限公司 内存优化的队列方法和系统
CN107046510B (zh) * 2017-01-13 2020-06-16 广西电网有限责任公司电力科学研究院 一种适用于分布式计算系统的节点及其组成的系统
CN107046510A (zh) * 2017-01-13 2017-08-15 广西电网有限责任公司电力科学研究院 一种适用于分布式计算系统的节点及其组成的系统
WO2019165745A1 (zh) * 2018-03-02 2019-09-06 珠海市魅族科技有限公司 数据处理方法、数据处理装置、终端及可读存储介质
CN108491263A (zh) * 2018-03-02 2018-09-04 珠海市魅族科技有限公司 数据处理方法、数据处理装置、终端及可读存储介质
CN108595277A (zh) * 2018-04-08 2018-09-28 西安交通大学 一种基于OpenMP/MPI混合编程的CFD仿真程序的通信优化方法
CN108595277B (zh) * 2018-04-08 2021-01-19 西安交通大学 一种基于OpenMP/MPI混合编程的CFD仿真程序的通信优化方法
CN109117260A (zh) * 2018-08-30 2019-01-01 百度在线网络技术(北京)有限公司 一种任务调度方法、装置、设备和介质
US11294714B2 (en) 2018-08-30 2022-04-05 Apollo Intelligent Driving Technology (Beijing) Co., Ltd. Method and apparatus for scheduling task, device and medium
CN109684061A (zh) * 2018-12-24 2019-04-26 无锡江南计算技术研究所 一种非结构网格众核粗粒度并行计算方法
CN110633149A (zh) * 2019-09-10 2019-12-31 中国人民解放军国防科技大学 均衡非结构网格单元计算量的并行负载均衡方法
CN110633149B (zh) * 2019-09-10 2021-06-04 中国人民解放军国防科技大学 均衡非结构网格单元计算量的并行负载均衡方法

Also Published As

Publication number Publication date
CN104375882B (zh) 2016-06-01

Similar Documents

Publication Publication Date Title
CN104375882B (zh) 匹配于高性能计算机结构的多级嵌套数据驱动计算方法
de Assuncao et al. Distributed data stream processing and edge computing: A survey on resource elasticity and future directions
CN110119311B (zh) 一种基于fpga的分布式流计算系统加速方法
CN103235742B (zh) 多核集群服务器上基于依赖度的并行任务分组调度方法
Singh et al. Communication-aware heuristics for run-time task mapping on NoC-based MPSoC platforms
CN104536937B (zh) 基于cpu‑gpu异构集群的大数据一体机实现方法
US8949847B2 (en) Apparatus and method for managing resources in cluster computing environment
CN107329828A (zh) 一种面向cpu/gpu异构集群的数据流编程方法和系统
CN103229146A (zh) 用于处理计算任务的计算机集群布置及其操作方法
Eskandari et al. T3-scheduler: A topology and traffic aware two-level scheduler for stream processing systems in a heterogeneous cluster
Malik et al. An optimistic parallel simulation protocol for cloud computing environments
CN107122244A (zh) 一种基于多gpu的图数据处理系统及方法
Li Resource optimization scheduling and allocation for hierarchical distributed cloud service system in smart city
CN102135949A (zh) 基于图形处理器的计算网络系统、方法及装置
CN109905898B (zh) 基带处理资源分配方法
Zhang et al. Efficient disk-based directed graph processing: A strongly connected component approach
CN105786447A (zh) 服务器处理数据的方法、装置及服务器
US20210390405A1 (en) Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof
Xu et al. Online learning algorithms for offloading augmented reality requests with uncertain demands in MECs
WO2013097253A1 (zh) Gpu系统及其处理方法
CN107220114A (zh) 基于资源统一调度的分布式资源调度方法
CN109254844B (zh) 一种大规模图的三角形计算方法
Fan et al. A survey on task scheduling method in heterogeneous computing system
CN103631659B (zh) 一种片上网络中面向通信能耗的调度优化方法
Hu et al. Joint deployment and request routing for microservice call graphs in data centers

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant