CN108108242B - 基于大数据的存储层智能分发控制方法 - Google Patents
基于大数据的存储层智能分发控制方法 Download PDFInfo
- Publication number
- CN108108242B CN108108242B CN201711307833.2A CN201711307833A CN108108242B CN 108108242 B CN108108242 B CN 108108242B CN 201711307833 A CN201711307833 A CN 201711307833A CN 108108242 B CN108108242 B CN 108108242B
- Authority
- CN
- China
- Prior art keywords
- node
- computing
- parallel
- partition
- calculation
- 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.)
- Expired - Fee Related
Links
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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供了一种基于大数据的存储层智能分发控制方法,该方法包括:将集群任务拓扑剖分为一级分区,然后将每个一级分区分别分配给一个节点单独处理;将每个一级分区进一步均等剖分为二级分区,将派生于相同一级分区的各二级分区分别分配给相同节点的不同处理器单独处理;针对二级分区的每个计算步骤寻找其中的循环结构,将其分解为多个互不相关且能够独立执行的子任务,然后将每个子任务分配给一个计算核执行。本发明提出了一种基于大数据的存储层智能分发控制方法,在多核计算平台的基础上,充分利用分布式并行环境提高运算速度。
Description
技术领域
本发明涉及并行计算,特别涉及一种海量数据的并行处理方法。
背景技术
大数据的分析和处理已经成为企业重要的IT能力。因为大数据的体量大、速度快、种类多,具有大量异构非结构化数据,使得大数据分析处理和利用也存在巨大的困难。为了解决大数据运算的问题,世界各国的软件开发人员和研究学者都进行了很多的研究和实践。近年来,越来越多的开发人员开始重视软件工程的作用,为了减少重复劳动,提高软件的质量和代码复用,许多优秀的大数据运算库随之出现。现有的大数据运算库所提供的只是数学运算功能,并且只实现各种运算的串行算法,对于多核分布式计算平台并不适用。当前还没有在多核分布式计算平台上产生任何相关的并行计算。在并行计算中克服的主要问题之一是数据相关性,而累加算法中按位求和操作使算法本身存在很大的相关性问题。
发明内容
为解决上述现有技术所存在的问题,本发明提出了一种基于大数据的存储层智能分发控制方法,包括:
首先将集群任务拓扑剖分为N个一级分区,然后将每个一级分区分别分配给一个节点单独处理,其中N为参与并行计算的节点总数;
将每个一级分区进一步均等剖分为K个二级分区,然后将派生于相同一级分区的各二级分区分别分配给相同节点的不同处理器单独处理;其中K为单个节点内处理器的总数;
对每个二级分区计算任务的进一步分解,针对二级分区的每个计算步骤寻找其中的循环结构,将其分解为多个互不相关且能够独立执行的子任务,然后将每个子任务分配给多核处理器的一个计算核去执行;
其中,在将集群任务拓扑剖分为N个一级分区过程中,计算集群并行计算的总执行时间Ttotal:
Ttotal=max(T1×R1;T2×R2,…,TN×RN)
其中,N表示在一个多核计算平台中参与并行计算的节点数量;Ti表示整个计算任务单独由第i(1≤i≤N)个计算节点来处理所耗费的时间;Ri表示分配给第i个计算节点的计算量在总计算量中所占比率;当各计算节点在同一时刻完成各自的工作时取得最合理的计算量切分,即集群并行计算的总执行时间达到最短:
当Ri确定后,分配给第i个计算节点的计算量Wi如下所示:
Wi=W×Ri
其中,W表示整个计算任务的总计算量。
优选地,整个并行计算的顶层基于MPI进程构建,其中每个进程负责控制1个二级分区的处理。通过在每个MPI进程内部派生多个线程,为实现层级负载均衡,采用以下并行计算流程:
第1步,通过两级分区生成并行计算所需的数据文件,包括各分区的单元、节点、载荷、边界条件和相邻分区信息;
第2步,同时在每个节点内启动K个MPI进程,其中每个进程负责1个二级分区数据文件的读入;
第3步,每个MPI进程内部分别派生出T个线程,利用多核资源完成相应分区累加计算。其中,T为单个处理器上的计算核总数;
第4步,每个MPI进程内部分别派生出T个线程,利用多核资源完成累加进位计算;
第5步,若需要进一步迭代则跳转至第2步重新开始执行,否则结束。
本发明相比现有技术,具有以下优点:
本发明提出了一种基于大数据的存储层智能分发控制方法,在多核计算平台的基础上,充分利用分布式并行环境提高运算速度。
附图说明
图1是根据本发明实施例的基于大数据的存储层智能分发控制方法的流程图。
具体实施方式
下文与图示本发明原理的附图一起提供对本发明一个或者多个实施例的详细描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本发明。
本发明的一方面提供了一种基于大数据的存储层智能分发控制方法。图1是根据本发明实施例的基于大数据的存储层智能分发控制方法流程图。本发明的并行运算方法具体实现步骤如下:
(1)输入两个正数x和y;
(2)求出x和y的规模大小,xs和ys,(xs和ys可正可负,正表示为正数,负表示此正数为负数),以及x和y的绝对规模大小abs_xs和abs_ys(abs_xs和abs_ys>=0);
(3)abs_xs和abs_ys进行比较,如果abs_xs小于abs_ys,将两个数进行交换,确保被加数的规模大于等于加数的规模;
(4)为两个数的和分配内存ws,内存大小为abs_xs+1;
(5)获取两个数的指针,xp和yp;
(6)根据两个数的具体情况,选择相应的操作。如果两个数的符号不同时需要进行减法操作,则由第一个正数的符号决定结果的符号;当两个数的符号相同时需要进行求和操作,正数的符号由第一个数的符号决定。
(7)对于两个数x和y的规模相同的情况,对x和y进行逐数位求和操作,具体过程见步骤(8),然后返回最后一位的进位Flag;对于x和y的规模不同的情况(xs>ys),完成x中的ys位与y进行逐数位求和操作,得到进位的值cy,然后将x的ys位中的值和cy加到结果的第ys位中,最后将x中其余的部分赋值到结果中(可能会有逐数位进位的操作),最后返回进位的值cy;
(8)调用本发明的多核并行方案对于x和y的逐数位求和操作,具体实现步骤:
(8.1)获取并行计算平台当前可用进程数;
(8.2)根据步骤(8.1)中得到的可用进程数,分配和初始化用于存储进位的缓存队列,其项数为N;
(8.3)根据步骤(8.1)中得到的可用进程数将需要进行逐数位求和操作的运算任务进行区域切分,具体的过程:(8.31)根据并行计算平台当前可用进程数m和需要进行逐数位求和操作的个数n求出每个子任务的大小和特殊子任务的大小;(8.32)声明并初始化迭代变量为0,设置迭代变量的值为0到N-1,每次迭代完成迭代变量乘以步骤(8.31)中的子任务的大小,其得到的值即为每个子任务的起始点,完成区域切分;缓存队列的项数与子任务的个数相等,但是与进程数并不一定相等,当与进程数相等时,即一个进程对应一个子任务,但子任务ID与进程ID按静态调度以外的方式对应;另外,缓存队列0号项的值对应第0号任务的进位Flag,缓存队列1号项的值对应第1号任务的进位Flag,缓存队列2号项的值对应第2号任务的进位Flag,缓存队列N-1号项的值对应第N-1号任务的进位Flag,N为缓存队列的项数。
(8.4)使用动态调度策略,多进程并行求取各区域的计算任务,率先执行完任务的进程接着从由子任务形成的任务池中分配一个子任务,各进程在求取子任务时需判断当前子任务是不是最后一个子任务,如果是最后一个子任务需要调用串行求和操作,否则可以直接调用串行求和操作计算当前子任务,然后将最后的进位值保存到步骤(8.2)缓存队列中相应的项中,将结果存储在结果的相应位置;利用进程数对任务进行区域切分,得到的子任务的大小不相同,正数最高位对应的子任务中的求和运算操作与其他子任务中的求和运算操作个数是不同的,需要进行特殊处理,即将这个正数最高位对应的子任务这个特殊子任务与除特殊任务之外其他子任务进行相同处理,但是每次在执行前都要根据子任务对应的子任务ID判断当前进程执行的区域是不是特殊子任务;具体的串行进行求和操作的过程:
1)将进位cr赋值为零,指针变量xp和yp分别指向两个数的最低位;
2)取得被加数指针所指位的值并将指针指向下一位,xl=*xp++;取得加数指针所指位的值并将指针指向下一位,yl=*yp++;
3)将取得的当前位的数值进行求和操作,并将结果存储在变量sl中,sl=xl+yl;
4)判断上步中求和结果是否小于被加数的当前位的值,cy1=sl<xl;如果cy1=1表示求和的结果有向下一位的进位,cy1保存进位值;如果cy1=0表示求和的结果没有向下一位的进位;
5)将求和结果加上上一位的进位值cy,并将结果存在rl中,rl=sl+cy;
6)用rl中的结果值与sl中的值比较,cy2=rl<sl;如果cy2=1表示由于求和结果加上进位导致有向下一位的进位,cy2保存进位值;如果cy2=0表示求和的结果加上进位后没有向下一位的进位;
7)根据cy1和cy2得到这一位的运算结果有没有向下一位的进位cr=cy1|cy2;cy=1表示有向下一位的进位,cy=0表示没有向下一位的进位;
8)将rl中的结果值存储到用于存储结果的空间中;
9)重复2)-8)步的内容,直到加数的所有位运算完毕,到此逐数位进行求和操作运算完毕;
(8.5)对步骤(8.4)中已更新的缓存队列中每个区域的进位结果进行统一操作,具体过程为:
(8.51)遍历缓存队列中除缓存队列N-1的每一个值,如果进位值为零,则继续遍历下一个,如果值为非零,则对步骤(8.4)得到的结果中从下一个区域结果开始到结果的最高位的整个区域进行加1操作,且当加1过程中新的当前进位不为1时,跳出此次遍历过程;
(8.52)遍历除缓存队列N-1的每一个值后更新最高位的进位Flag。缓存队列N-1中的值不需要进行遍历操作,其存储的是正数所有位中最后的进位结果,只需对步骤(8.5)之后的结果进行异或操作,得到整个运算中最后的进位值。
在上述并行计算平台中,为完成多核协同计算,本发明将扩展的并行编程接口编程为能由多核分布式计算平台中任意类型和任意多个计算节点来并行执行的并行应用程序。
编译器将串行代码自动转换成混合的异构并行代码。具体包括,编译器首先通过解析语句来确定应用程序中需加速的计算内核并获取与集群并行计算相关的必要信息,然后针对参与并行计算的每个节点生成设备特定的计算核。每个计算核是计算内核在不同处理器上的不同版本。
切分计算任务并合理分配到多个计算节点,然后在每个计算节点上执行设备特定的计算核来完成分配给它的子任务。针对每个计算内核,根据多核分布式计算平台中参与并行计算的设备来创建同等数量的控制进程,如果有p个计算节点可用,则创建了p个进程来控制,且使用p个专用的异构处理器来运行这p个进程,多个处理器被视为一个计算节点。进程ti执行设备特定的计算核,其中1≤i≤p-1。首先将一部分输入数据从主节点拷贝,然后启动所有可用的进程来并行执行分配的子任务,最后将计算结果拷贝回主节点。与此同时,进程tp在剩余可用的异构处理器中执行处理器计算核。具体包括,进程tp产生mk-p+1个工作进程来并行执行分配给处理器的子任务,其中m表示所使用的处理器个数、k表示每个处理器的核数。
考虑到多核并行环境在节点间采用分布式存储体系结构,并且节点间的通信延迟大于节点内的通信延迟,因此节点间采用粗粒度并行计算方法。节点间并行基于以下过程实现:首先将集群任务拓扑均等剖分为N个一级分区,然后将每个一级分区分别分配给一个节点单独处理。其中,N为参与并行计算的节点总数。
为提高数据访问速度,位于不同处理器上的三级缓存是相对独立的,因此处理器间也采用粗粒度并行计算方法。处理器间并行建立在一级分区的基础上:首先将每个一级分区进一步均等剖分为K个二级分区,然后将派生于相同一级分区的各二级分区分别分配给相同节点的不同处理器单独处理。其中,K为单个节点内处理器的总数。从而将不同处理器间的通信尽量限制在了同一节点内。
对于核间并行涉及最底层的计算模块,采用细粒度并行计算方法。对每个二级分区计算任务的进一步分解,针对二级分区的每个计算步骤寻找其中的循环结构,将其分解为多个互不相关且能够独立执行的子任务,然后将每个子任务分配给多核处理器的一个计算核去执行。
在编程模式上采用MPI并行编程模式。整个并行计算的顶层基于MPI进程构建,其中每个进程负责控制1个二级分区的处理。通过在每个MPI进程内部派生大量线程充分发挥多核处理器高度并发计算的优势。为实现层级负载均衡,采用以下并行计算流程:
第1步,通过两级分区生成并行计算所需的数据文件,包括各分区的单元、节点、载荷、边界条件和相邻分区信息等;
第2步,同时在每个节点内启动K个MPI进程,其中每个进程负责1个二级分区数据文件的读入;
第3步,每个MPI进程内部分别派生出T个线程,利用多核资源完成相应分区累加计算。其中,T为单个处理器上的计算核总数;
第4步,每个MPI进程内部分别派生出T个线程,利用多核资源完成累加进位计算;
第5步,若需要进一步迭代则跳转至第2步重新开始执行,否则结束。
为了在各计算节点间合理、高效地进行任务调度,并减少节点间的通信开销,本发明提出了一种获取计算量切分比率的方法。在集群并行计算中,当各计算节点均已完成各自的工作,才能认为整个计算任务执行完成。假定各计算节点的执行时间与分配给它的计算量成正比关系,集群并行计算的总执行时间Ttotal如下所示:
Ttotal=max(T1×R1;T2×R2,…,TN×RN)
其中,N表示在一个多核计算平台中参与并行计算的节点数量;Ti表示整个计算任务单独由第i(1≤i≤N)个计算节点来处理所耗费的时间;Ri表示分配给第i个计算节点的计算量在总计算量中所占比率;当各计算节点在同一时刻完成各自的工作时取得最合理的计算量切分,即集群并行计算的总执行时间达到最短:
当Ri确定后,分配给第i(1≤i≤p)个计算节点的计算量Wi如下所示:Wi=W×Ri
其中,W表示整个计算任务的总计算量。
在计算管理方面,本发明在扩展语句中设定节点间任务调度策略设定、设定初始计算量切分比率以及进程配置。对于一个给定的集群并行计算来说,使用扩展语句通知编译器以下关键信息:参与并行计算的设备,节点间任务调度策略以及初始计算量切分比率。
在数据管理方面,本发明使用扩展语句来支持部分传输、增量传输和异步传输。通知编译器哪些空间需进行部分传输,而无须指定一个空间中哪一部分数据需上传到哪一个计算节点或从哪一个计算节点下载至主节点。各节点间的数据切分由运行时系统所提供的任务调度机制来自动处理。
本发明的编译器以使用扩展的并行编程语句编写的矩阵乘法程序作为输入,翻译产生异构并行矩阵乘法程序,包括如下四个关键步骤:
步骤1:读取带有扩展的并行编程语句的串行代码并经过语法分析后构造语法树。
步骤2:通过解析扩展语句来获取与集群并行计算相关的信息并进行相关操作。具体包括:
(1)确定应用程序中需加速的计算内核;(2)设置参与并行计算的节点数量,并针对参与并行计算的每个节点指定设备全局唯一ID、设备类型、设备编号以及设备特定的计算核;(3)获取计算内核的最外层循环的起始值、终止值和步长;(4)设置计算量切分比率;(5)指定节点间任务调度策略并开启任务调度。
步骤3:计算内核生成器为参与并行计算的每个节点生成针对特定异构处理器的特定的计算核。
步骤4:反解析修改过的语法树并最终生成使用并行编程的混合并行代码。转换后的源代码中保留转换前源代码中的注释及控制结构。
为了适应不同类型的数据级并行应用、支持更为灵活且高效的节点间任务调度,本发明提出了在静态策略的基础上,采用可伸缩性任务调度策略,总体策略是在一个计算内核的执行过程中根据集群并行计算的性能变化来动态调整块大小,以便提供更高的设备利用率、更低的调度开销并保持节点间计算量均衡。
取指定计算内核的总计算量的1=n(即W=n)作为初始块大小,其中参数n可由编程人员手动设置;然后在指定计算内核的执行过程中根据集群并行计算的性能变化动态调整下一个块的大小。
具体包括如下步骤:
步骤1:使用p个计算节点来协同执行第1个块,其大小为W/n。具体包括:
(1)根据初始计算量切分比率Ri将第1个块的一部分计算量Wr.i分配给节点Di(1≤i≤p),其中Wr.i=Wr×Ri且Wr=W/n。初始计算量切分比率根据参与并行计算的各节点的理论峰值性能计算得出。
(2)在节点Di中执行设备特定的计算核来完成分配给它的计算量Wr.i。
(3)当节点Di完成了分配给它的计算量之后,收集节点Di的当前执行时间Tr.i,并计算节点Di的当前执行速度Vr.i,其中Vr.i=Wr.i/Tr.i。
(5)计算当前并行执行速度Vr,其中Vr=Wr=Tr且Tr=max(Tr.1;Tr.2,...,Tr.p)。
(6)更新已完成的总计算量Wf和剩余计算量Wr,其中Wf=Wf+Wr且Wr=W-Wf。
步骤2:判断是否存在剩余计算量,若否,则说明指定计算内核已执行完毕;若是,类似于步骤1,使用p个计算节点来协同执行第2个块,其大小为2×W/n。具体地:(1)根据得到的计算量切分比率将第2个块的计算量分配给参与并行计算的各节点。(2)在各计算节点中执行设备特定的计算核来完成分配给它的计算量。(3)当各计算节点完成各自的工作后,收集各计算节点的执行时间,计算各节点的相对执行速度,并以此来更新计算量切分比率。(4)根据收集到的信息计算当前并行执行速度。(5)调整下一个块的大小,即决定下一步需要完成的计算量。通过比较上一步的并行执行速度Vp和当前的并行执行速度Vr,以及比较上一个块的大小Wp(即上一步已完成的计算量)和当前块的大小Wr(即在当前步骤中已完成的计算量),以决定下一个块的大小Wn相比于当前块大小Wr是该倍增、倍减还是保持不变。(6)更新已完成的总计算量和剩余计算量。
步骤3:重复步骤2,直到剩余计算量为0。
在每一步迭代中,在Di中执行当前块之前,按计算量切分比率Ri从主节点上传当前块的一部分数据到Di,当Di结束当前块的执行后,按计算量切分比率Ri从Di中下载当前块的一部分处理后的数据到主节点。
对于某些数据级并行应用的集群并行计算来说,对节点间数据传输进行优化很有必要,尤其是在节点间动态任务调度策略的设计中应将节点间消息传递考虑在内。为避免上述冗余的数据传输,本发明设计了一种差分数据传输方法,适用于一个或多个需反复执行多次的计算内核的数据级并行应用。具体包括,在指定计算内核的第一次执行中,按初始计算量切分比率将该计算内核的整个计算量分配给参与并行计算的各节点,当各计算节点完成各自的工作后,收集各计算节点的当前执行时间来计算新的计算量切分比率。该计算内核随后的每一次执行与第一次执行类似,不同的是,该计算内核的第二次执行开始,按该计算内核上一次执行后所更新的计算量切分比率将整个计算量分配给参与并行计算的各节点。
在确定哪一部分数据需从主节点上传或从下载至主节点的过程中,包括如下步骤:
步骤1:确定指定存储区中哪一部分数据需在指定计算节点和主节点之间进行传输。根据指定计算内核的最外层循环的起始值和终止值以及在当前执行中所使用的计算量切分比率,从指定存储区中检索并确定一个在该计算内核当前执行中需从指定计算节点下载至主节点的第一子阵列,并分别记录该子阵列在指定存储区中的开始索引和结束索引;根据该计算内核的最外层循环的起始值和终止值以及在下一次执行中所使用的计算量切分比率,再次从指定存储区中检索并确定一个在该计算内核的下次执行中需从主节点上传到指定计算节点的第二子阵列,并分别记录该子阵列在指定存储区中的开始索引和结束索引。
步骤2:通过比较步骤1中所获得的子阵列来确定一个指定存储区中哪一部分数据需在指定计算节点和主节点之间进行传输。若第一子阵列中全部或部分数据在指定计算内核的下次执行中是指定计算节点所需的,则这些数据在该计算内核的当前执行中无须从指定计算节点下载至主节点;否则,这些数据在该计算内核的当前执行中需从指定计算节点下载至主节点。若第二子阵列中全部或部分数据已存在于指定计算节点的内存中,则这些数据在该计算内核的下次执行中无须从主节点上传到指定计算节点;否则,这些数据在该计算内核的下次执行中需从主节点上传到指定计算节点。
本发明的运行时系统提供API用于获取一个指定存储区中需从主节点上传到指定计算节点的一个或两个子阵列的开始索引和结束索引,也可获取一个指定数组中需从指定计算节点下载至主节点的一个或两个子阵列的开始索引和结束索引。
优选地,本发明将一个计算内核的整个迭代空间切分成多个大小相等或大小不等的块,并使用多核分布式计算平台中多个计算节点并发地协同地执行这些块;上传数据、下载数据与计算核的计算并行处理。使用三个线程来实现数据传输与计算核计算的重叠,第一个线程负责将下一个块的全部或部分数据从主节点异步上传到指定计算节点;第二个线程负责在指定计算节点中异步执行当前块;第三个线程负责将上一个块的全部或部分数据从指定计算节点异步下载至主节点。
相应地,在任务调度策略中使用如下步骤进行调度:
步骤1:使用p个计算节点来并行执行第1个块。具体包括:(1)根据计算量切分比率Rr.i将第1个块的一部分计算量Wr.i分配给节点Di(1≤i≤p),其中Wr.i=Wr×Rr.i、Wr=W/n(初始块大小)且Rr.i=Ri(初始计算量切分比率)。(2)根据计算量切分比率Rn.i将下一个块(即第2个块)的一部分计算量Wn.i预分配给节点Di,其中Wn.i=Wn×Rn.i、Wn=W=n且Rn.i=Ri。(3)在节点Di中执行设备特定的计算核来完成分配给它的计算量Wr.i。如果节点Di是一个计算节点,则在节点Di中执行第1个块之前按计算量切分比率Rr.i将第1个块的一部分数据从主节点同步上传到节点Di中;当在节点Di中异步执行第1个块时,根据计算量切分比率Rn.i将第2个块的一部分数据从主节点异步上传到节点Di中。(4)当节点Di完成了分配给它的计算量之后,收集节点Di的当前执行时间Tr.i,并计算节点Di的当前执行速度Vr.i,其中Vr.i=Wr.i=Tr.i。(5)当所有p个计算节点完成各自的工作后,计算节点Di的相对执行速度RVi,其中更新用来切分下下个块(即第3个块)的计算量切分比率Rnn.i,其中Rnn.i=RVi(1≤i≤p);计算当前并行执行速度Vr,其中Vr=Wr/Tr且Tr=max(Tr.1;Tr.2,...,Tr.p)。(6)更新已完成的总计算量Wf和剩余计算量Wr,其中Wf=Wf+Wr且Wr=W-Wf-Wn。
步骤2:如果存在剩余计算量或预分配的工作尚未处理,则使用p个计算节点来并行执行第2个块。具体包括:(1)根据执行完上一个块(即第1个块)后所更新的计算量切分比率将下一个块(即第3个块)的计算量预分配给参与并行计算的各节点。(2)在各计算节点中执行设备特定的计算核来完成分配给它的当前块(即第2个块)的计算量。如果节点Di(1≤i≤p)是一个计算节点,则线程0按计算量切分比率Rn.i将下一个块的一部分数据从主节点异步上传到节点Di中,线程1按计算量切分比率Rr.i在节点Di中异步执行当前块,线程2按计算量切分比率Rp.i将经过处理的上一个块的一部分数据从节点Di异步下载至主节点,其中Rp.i、Rr.i和Rn.i分别表示节点Di在上一个块、当前块和下一个块的计算量分配中所占比率。(3)当各计算节点完成各自的工作后,收集各计算节点的执行时间,计算各节点的相对执行速度,更新用来切分下下个块(即第4个块)的计算量切分比率,并计算当前并行执行速度。(4)根据上一次并行执行速度与当前并行执行速度之间的差值以及上一个块大小与当前块大小的变化来调整下下个块的大小。(5)更新已完成的总计算量和剩余计算量。
步骤3:重复步骤2,直到剩余计算量为0或预分配的工作都已处理完毕。
如果当前块是最后一个块,当线程1按计算量切分比率Rr.i在节点Di中异步执行最后一个块时,线程2按计算量切分比率Rp.i将处理过的倒数第二个块的一部分数据从节点Di异步下载至主节点;当节点Di完成自己的工作后,按计算量切分比率Rr.i将处理过的最后一个块的一部分数据从节点Di同步下载至主节点。
综上所述,本发明提出了一种基于大数据的存储层智能分发控制方法,在多核计算平台的基础上,充分利用分布式并行环境提高运算速度。
显然,本领域的技术人员应该理解,上述的本发明的各模块或各步骤可以用通用的计算系统来实现,它们可以集中在单个的计算系统上,或者分布在多个计算系统所组成的网络上,可选地,它们可以用计算系统可执行的程序代码来实现,从而,可以将它们存储在存储系统中由计算系统来执行。这样,本发明不限制于任何特定的硬件和软件结合。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
Claims (2)
1.一种基于大数据的存储层智能分发控制方法,用于多个计算节点组成的多核并行分布式存储体系结构,其特征在于,包括:
首先将集群任务拓扑剖分为N个一级分区,然后将每个一级分区分别分配给一个节点单独处理,其中N为参与并行计算的节点总数;
将每个一级分区进一步均等剖分为K个二级分区,然后将派生于相同一级分区的各二级分区分别分配给相同节点的不同处理器单独处理;其中K为单个节点内处理器的总数;
对每个二级分区计算任务的进一步分解,针对二级分区的每个计算步骤寻找其中的循环结构,将其分解为多个互不相关且能够独立执行的子任务,然后将每个子任务分配给多核处理器的一个计算核去执行;
其中,在将集群任务拓扑剖分为N个一级分区过程中,计算集群并行计算的总执行时间Ttotal:
Ttotal=max(T1×R1;T2×R2,…,TN×RN)
其中,N表示在一个多核计算平台中参与并行计算的节点数量;Ti表示整个计算任务单独由第i(1≤i≤N)个计算节点来处理所耗费的时间;Ri表示分配给第i个计算节点的计算量在总计算量中所占比率;当各计算节点在同一时刻完成各自的工作时取得最合理的计算量切分,即集群并行计算的总执行时间达到最短:
当Ri确定后,分配给第i个计算节点的计算量Wi如下所示:
Wi=W×Ri
其中,W表示整个计算任务的总计算量。
2.根据权利要求1所述的方法,其特征在于,整个并行计算的顶层基于 MPI进程构建,其中每个进程负责控制1个二级分区的处理, 通过在每个MPI进程内部派生多个线程,为实现层级负载均衡,采用以下并行计算流程:
第1步,通过两级分区生成并行计算所需的数据文件,包括各分区的单元、节点、载荷、边界条件和相邻分区信息;
第2步,同时在每个节点内启动K个MPI进程,其中每个进程负责1个二级分区数据文件的读入;
第3步,每个MPI进程内部分别派生出T个线程,利用多核资源完成相应分区累加计算,其中,T为单个处理器上的计算核总数;
第4步,每个MPI进程内部分别派生出T个线程,利用多核资源完成累加进位计算;
第5步,若需要进一步迭代则跳转至第2步重新开始执行,否则结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711307833.2A CN108108242B (zh) | 2017-12-11 | 2017-12-11 | 基于大数据的存储层智能分发控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711307833.2A CN108108242B (zh) | 2017-12-11 | 2017-12-11 | 基于大数据的存储层智能分发控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108108242A CN108108242A (zh) | 2018-06-01 |
CN108108242B true CN108108242B (zh) | 2021-05-18 |
Family
ID=62209572
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711307833.2A Expired - Fee Related CN108108242B (zh) | 2017-12-11 | 2017-12-11 | 基于大数据的存储层智能分发控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108108242B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110069344A (zh) * | 2019-04-16 | 2019-07-30 | 北京百度网讯科技有限公司 | 一种任务执行方法、装置和智能设备 |
CN112631743B (zh) * | 2019-09-24 | 2023-08-04 | 杭州海康威视数字技术股份有限公司 | 任务调度方法、装置及存储介质 |
US20230236879A1 (en) * | 2022-01-27 | 2023-07-27 | International Business Machines Corporation | Controling job packing processing unit cores for gpu sharing |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103324850A (zh) * | 2013-06-21 | 2013-09-25 | 上海交通大学 | 基于多文件流的有限元两级分区两次缩聚并行方法 |
CN103914428A (zh) * | 2014-03-25 | 2014-07-09 | 上海交通大学 | 多核分布式计算环境下结构分析的高效通信方法 |
CN104461466A (zh) * | 2013-09-25 | 2015-03-25 | 广州中国科学院软件应用技术研究所 | 基于MPI和OpenMP混合编程模型并行计算提高计算速度的方法 |
CN106991011A (zh) * | 2017-03-30 | 2017-07-28 | 武汉大学 | 一种针对大数据任务处理的基于cpu多线程与gpu多粒度并行及协同优化的方法 |
CN107247623A (zh) * | 2017-05-22 | 2017-10-13 | 哈工大大数据产业有限公司 | 一种基于多核cpu的分布式集群系统及数据连接方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6330569B2 (ja) * | 2014-08-14 | 2018-05-30 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
-
2017
- 2017-12-11 CN CN201711307833.2A patent/CN108108242B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103324850A (zh) * | 2013-06-21 | 2013-09-25 | 上海交通大学 | 基于多文件流的有限元两级分区两次缩聚并行方法 |
CN104461466A (zh) * | 2013-09-25 | 2015-03-25 | 广州中国科学院软件应用技术研究所 | 基于MPI和OpenMP混合编程模型并行计算提高计算速度的方法 |
CN103914428A (zh) * | 2014-03-25 | 2014-07-09 | 上海交通大学 | 多核分布式计算环境下结构分析的高效通信方法 |
CN106991011A (zh) * | 2017-03-30 | 2017-07-28 | 武汉大学 | 一种针对大数据任务处理的基于cpu多线程与gpu多粒度并行及协同优化的方法 |
CN107247623A (zh) * | 2017-05-22 | 2017-10-13 | 哈工大大数据产业有限公司 | 一种基于多核cpu的分布式集群系统及数据连接方法 |
Non-Patent Citations (2)
Title |
---|
多核机群主节点并发发送数据的可分负载调度;钟诚等;《计算机研究与发展》;20140615;全文 * |
大规模并行结构动力分析分层计算方法;苗新强等;《计算机力学学报》;20141231;第31卷(第6期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108108242A (zh) | 2018-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Khorasani et al. | Scalable simd-efficient graph processing on gpus | |
US7647590B2 (en) | Parallel computing system using coordinator and master nodes for load balancing and distributing work | |
Hénon et al. | PaStiX: a high-performance parallel direct solver for sparse symmetric positive definite systems | |
JPH09171503A (ja) | 並列処理方法および並列処理装置 | |
US20130013897A1 (en) | Method to dynamically distribute a multi-dimensional work set across a multi-core system | |
Lu et al. | Optimizing depthwise separable convolution operations on gpus | |
Cierniak et al. | Compile-time scheduling algorithms for a heterogeneous network of workstations | |
CN112711478B (zh) | 基于神经网络的任务处理方法、装置、服务器和存储介质 | |
CN108108242B (zh) | 基于大数据的存储层智能分发控制方法 | |
US11385931B2 (en) | Method, electronic device, and computer program product for processing computing job | |
JP2014525640A (ja) | 並列処理開発環境の拡張 | |
US20210304066A1 (en) | Partitioning for an execution pipeline | |
CN105468439A (zh) | 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行算法 | |
CN108427602B (zh) | 一种分布式计算任务的协同调度方法及装置 | |
CN102609303A (zh) | MapReduce系统的慢任务调度方法和装置 | |
JP4959774B2 (ja) | アプリケーション生成システム、方法及びプログラム | |
CN114730275A (zh) | 使用张量在分布式计算系统中进行矢量化资源调度的方法和装置 | |
Liu | Parallel and scalable sparse basic linear algebra subprograms | |
CN112015765B (zh) | 基于缓存价值的Spark缓存淘汰方法及系统 | |
CN113569511A (zh) | 一种量子电路的模拟方法及装置 | |
US20210390405A1 (en) | Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof | |
Moustafa et al. | 3D cartesian transport sweep for massively parallel architectures with PARSEC | |
Davis et al. | Paradigmatic shifts for exascale supercomputing | |
US8090762B2 (en) | Efficient super cluster implementation for solving connected problems in a distributed environment | |
CN116048759A (zh) | 数据流的数据处理方法、装置、计算机和存储介质 |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20210425 Address after: Room 313, 3rd floor, building 7, 333 Yunhua Road, high tech Zone, Chengdu, Sichuan 610000 Applicant after: CHENGDU SIXIANG LIANCHUANG TECHNOLOGY Co.,Ltd. Address before: 610000 Chengdu province high tech Zone, West core road, No. 4, No. Applicant before: CHENGDU BORUIDE TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210518 Termination date: 20211211 |