CN110262884B - 一种基于申威众核处理器的核组内多程序多数据流分区并行的运行方法 - Google Patents
一种基于申威众核处理器的核组内多程序多数据流分区并行的运行方法 Download PDFInfo
- Publication number
- CN110262884B CN110262884B CN201910536853.XA CN201910536853A CN110262884B CN 110262884 B CN110262884 B CN 110262884B CN 201910536853 A CN201910536853 A CN 201910536853A CN 110262884 B CN110262884 B CN 110262884B
- Authority
- CN
- China
- Prior art keywords
- program
- segment
- subsection
- core group
- executing
- 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.)
- Active
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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及一种基于申威众核处理器的核组内多程序多数据流分区并行的运行方法,本发明根据不同程序段之间的依赖关系,将多个可并行优化程序段放入同一核组执行,在同一核组内部,可以选择同步或者异步执行多个程序段;根据同一程序段内不同程序子段之间的依赖关系,在同一核组内部,可以选择并行执行多个程序子段。此种方法可以减少核组spawn与join的次数,减少主核与核组之间DMA传输的次数,重复利用核组中的数据,从而提高程序的运行效率。
Description
技术领域
本发明涉及计算机高性能计算、并行计算、***结构的技术领域,具体涉及一种基于申威众核处理器的核组内多程序多数据流分区并行的运行方法。
背景技术
处理器是计算机硬件***中的最核心部件,其研发和制造技术极其复杂,是人类高科技技术的结晶,长期被欧美国家所垄断。近年来,我国在处理器方面的研发投入巨大,进展显著,研制出多款国产处理器产品并投入使用,一定程度上打破了欧美等国家的垄断,这对于我国推动国产安全产业发展、建立自主可控的国产计算机软硬件生态环境具有重要意义。申威众核处理器是众多国产处理器中的代表产品,其具备自主知识产权的硬件架构和指令集,目前已经多次成功应用于国家重大科技工程项目中,并且在诸多关键行业上实现了产业化落地应用。每颗申威众核处理器芯片(申威26010)包括4个核组,核组之间通过片上网络连接。每个核组主要由内存控制器、管理单元、1个主核和64个从核组成。申威众核处理器的每个核组具备“1大核64小核”的结构,每颗处理器的4个核组总共具有“4大核256小核”。具体如图1所示。
申威众核处理器的每个核组可以单独使用,数据需要通过主核将主存中的数据传递给从核进行计算,存储墙问题在申威众核处理器的应用上愈发凸显,根据目前的实际使用情况,具有如下两个问题:第一、主存与核组之间的数据传输时间相对于核组访问局存的时间长。核组访问一次主存操作的延迟为278个时钟周期(186.26纳秒),而访问是一次访局存的延迟仅为4个时钟周期(2.68纳秒)。申威众核处理器核组访问主存的开销是核组访问局存开销的数十倍,核组访问主存属于低效访存操作。第二、核组启动、结束次数多。如果要启动核组进行计算,需要主核派生(spawn)核组线程,单次运行需要26500个时钟周期(17755纳秒)。核组计算结束后,主核需要进行核组线程归约(join),收集核组数据,单次运行需要7300个时钟周期(4891纳秒)。对于在超级计算机上运行的大型分布式程序,可进行并行优化的函数体非常多,每个被优化的函数体需要被多次调用,spawn和join的次数以亿次或者十亿次计算。如果多次启动核组,需要频繁spawn和join核组线程,造成程序总体运行效率低下。
目前采用的方法为,使用核组加速的方法对串行部分热点程序进行并行优化,核组执行分配到它上面的程序。例如,程序段A作为可并行优化程序,可以并行化为核组程序被加载到核组上进行加速计算。主核spawn核组线程,将程序段A加载到核组,等待程序段A在在核组上执行结束后,join核组线程,返回程序段A的结果到主核。程序段B作为可并行程序,必须等程序段A执行完成之后才能运行,同时也需要主核spawn、join核组线程,再拷贝数据到核组执行。具体如图2所示:此种方法有两点不足。第一,没有考虑程序段A和程序段B之间的依赖关系,机械重复的对可并行化的代码在核组上进行加载。主核每次加载核组程序,都需要spawn和join核组线程。第二,没有考虑各程序段的数据量,如果多个程序段的的计算量总和不足以完全使用一个核组中的64个从核进行计算,将多个程序段不加分析的分开计算会造成核组计算资源浪费。第三,对于同一程序段内的不同程序子段,一般都为串行执行,如果无上下文依赖关系,则可以将其并行执行。
发明内容
针对现有技术的不足,本发明提供了一种基于申威众核处理器的核组内多程序多数据流分区并行的运行方法。
本发明根据不同程序段之间的依赖关系,将多个可并行优化程序段放入同一核组执行,在同一核组内部,可以选择同步或者异步执行多个程序段;根据同一程序段内不同程序子段之间的依赖关系,在同一核组内部,可以选择并行执行多个程序子段。此种方法可以减少核组spawn与join的次数,减少主核与核组之间DMA传输的次数,重复利用核组中的数据,从而提高程序的运行效率。
术语解释:
程序上下文依赖关系:在本发明中,程序上下文指顺序执行的代码段中,如果下一个代码段用不到上一个代码段输出的数据,则称这两个代码段无程序上下文依赖关系;如果下一个代码段需要使用上一个代码段输出的数据,则称这两个代码段有程序上下文依赖关系。
本发明的技术方案为:
一种基于申威众核处理器的核组内多程序多数据流分区并行的运行方法,运行于计算机上,执行程序,程序包括若干程序段,每个程序段包括若干个程序子段,设定程序中任意连续的两段程序段为程序段A、程序段B,包括步骤如下:
(1)判断程序段A、程序段B之间的程序上下文依赖关系;如果程序段A、程序段B之间存在程序上下文依赖关系,进入步骤(2);否则,进入步骤(3);
(2)顺序执行程序段A、程序段B;
执行程序段A时,如果程序段A包括若干个程序字段,则设定其中任意连续的两段程序子段为程序子段A1、程序子段A2,对所有的程序子段执行以下步骤直至执行完程序段A:判断程序子段A1、程序子段A2之间的程序上下文依赖关系,如果程序子段A1、程序子段A2之间存在程序上下文依赖关系,则依次顺序执行程序子段A1、程序子段A2;否则,根据程序子段A1、程序子段A2的数据量分配核组计算资源,并行执行程序子段A1、程序子段A2;如果程序段A不包括若干个程序字段,直接执行程序段A;
执行程序段B时,如果程序段B包括若干个程序字段,则设定其中任意连续的两段程序子段为程序子段B1、程序子段B2,对所有的程序子段执行以下步骤直至执行完程序段B:判断程序子段B1、程序子段B2之间的程序上下文依赖关系,如果程序子段B1、程序子段B2之间存在程序上下文依赖关系,则依次顺序执行程序子段B1、程序子段B2;否则,根据程序子段B1、程序子段B2的数据量分配核组计算资源,并行执行程序子段B1、程序子段B2;如果程序段B不包括若干个程序字段,直接执行程序段B;
关于程序段与程序子段,比如,一个for循环作为一个程序段,循环内部如果有不相关的多行代码计算,就可以分成多个程序子段并行处理;如果这个for循环内部就一行代码,那么它就是不可分为程序子段进行处理的,直接执行该程序段即可。
对于程序段内部,根据程序子段之间的依赖关系,可以设定程序子段的并行执行。对于一个程序段,内部存在多个程序子段,这些程序子段在核组内为串行执行,如果程序子段之间无上下文依赖关系,且单个程序子段的计算数据量较少,则这些程序子段可以并行执行。
进入步骤(4);
(3)根据程序段A和程序段B的数据量分配核组计算资源,并行执行程序段A、程序段B;
执行程序段A时,如果程序段A包括若干个程序字段,则设定其中任意连续的两段程序子段为程序子段A1、程序子段A2,对所有的程序子段执行以下步骤直至执行完程序段A:判断程序子段A1、程序子段A2之间的程序上下文依赖关系,如果程序子段A1、程序子段A2之间存在程序上下文依赖关系,则依次顺序执行程序子段A1、程序子段A2;否则,根据程序子段A1、程序子段A2的数据量分配核组计算资源,并行执行程序子段A1、程序子段A2;如果程序段A不包括若干个程序字段,直接执行程序段A;
执行程序段B时,如果程序段B包括若干个程序字段,则设定其中任意连续的两段程序子段为程序子段B1、程序子段B2,对所有的程序子段执行以下步骤直至执行完程序段B:判断程序子段B1、程序子段B2之间的程序上下文依赖关系,如果程序子段B1、程序子段B2之间存在程序上下文依赖关系,则依次顺序执行程序子段B1、程序子段B2;否则,根据程序子段B1、程序子段B2的数据量分配核组计算资源,并行执行程序子段B1、程序子段B2;如果程序段B不包括若干个程序字段,直接执行程序段B;
进入步骤(4);
(4)对连续的后两段程序段执行步骤(1)至步骤(3),直至执行完程序。
本发明将核组内多程序段根据不同情况进行同步或者异步执行,将核组内同一程序段内不同程序子段并行执行,将核组内同一程序段内不同程序子段和不同程序子段异步执行。本发明可以有效的提升并行程序运行效率。
根据本发明优选的,顺序执行程序段A、程序段B,包括步骤如下:
①将程序段A和程序段B放入同一核组执行;
②因程序段A、程序段B之间存在程序上下文依赖关系,必须串行执行,分配核组计算资源运行程序段A;
③执行程序段B。可以减少一次spawn和join的时间。程序段B需要使用程序段A计算后的数据,采用此种方法,程序段B可以直接使用核组中的数据,避免数据在主核和核组之间的多次DMA拷贝,可以减少一次spawn和join的时间。
对于程序段内部,根据子程序段之间的依赖关系,可以设定子程序段的并行执行。对于一个程序段,内部存在多个子程序段,这些子程序段在核组内为串行执行,如果子程序段之间无上下文依赖关系,且单个子程序段的计算数据量较少,则这些子程序段可以并行执行。具体如图5所示:
根据本发明优选的,根据程序段A和程序段B的数据量分配核组计算资源,并行执行程序段A、程序段B,包括步骤如下:
根据程序段A和程序段B的数据量,分配核组计算资源,例如,程序段A需要向核组传输的数据为浮点型数组X[4][8],程序段B需要向核组传输的数据为浮点型数组Y[8][4],经过推算,程序段A和程序段B各需要向核组传输32个浮点型数据,传输的数据量相同,则向它们分配的核组资源相同,每个程序段分配32个从核进行计算;0号~47号从核运行程序段A,48号~63号从核运行程序段B。将程序段A和程序段B放入同一核组内并行执行。因两个程序段之间无程序上下文依赖关系,可以并行执行,从而提高程序并行执行效率,可以减少一次spawn和join的时间。
进一步优选的,spawn核组线程加载程序段A和程序段B到核组,将程序段A和程序段B放入同一核组内并行执行,执行完毕后,join核组线程返回程序段A、程序段B的执行结果。
根据本发明优选的,所述步骤(3)中,如果程序子段A1、程序子段A2之间不存在程序上下文依赖关系,根据程序子段A1、程序子段A2及程序段B的数据量分配核组计算资源,在同一核组内并行执行程序子段A1、程序子段A2及程序段B。
根据本发明优选的,所述步骤(3)中,如果程序子段B1、程序子段B2之间不存在程序上下文依赖关系,根据程序子段B1、程序子段B2及程序段B的数据量分配核组计算资源,在同一核组内并行执行程序子段B1、程序子段B2及程序段B。
本发明的有益效果为:
1、本发明判断程序段以及程序子段之间的程序上下文依赖关系,分情况灵活处理,节省了主核等待时间,实现了主核和核组的并行处理。一个核组可以在同一时间处理多个程序段或者程序子段,提高了程序的运行效率。
2、程序执行过程中,因为对程序段的合并运行,减少了对spawn和join核组线程的需要次数,提高了程序的执行效率。
附图说明
图1为申威众核处理器硬件架构图;
图2为原主核和核组加速的方法;
图3为程序段A、程序段B之间不存在程序上下文依赖关系时程序执行流程示意图;
图4为程序段A、程序段B之间存在程序上下文依赖关系时顺序执行流程示意图;
图5为程序子段A1与程序子段A2之间不存在程序上下文依赖关系时程序执行流程示意图;
图6为程序段A与程序段B不存在程序上下文依赖关系且程序子段A1与程序子段A2之间不存在程序上下文依赖关系时的程序执行流程示意图。
具体实施方式
下面结合说明书附图和实施例对本发明作进一步限定,但不限于此。
实施例1
一种基于申威众核处理器的核组内多程序多数据流分区并行的运行方法,运行于计算机上,执行程序,程序包括若干程序段,每个程序段包括若干个程序子段,设定程序中任意连续的两段程序段为程序段A、程序段B,包括步骤如下:
(1)判断程序段A、程序段B之间的程序上下文依赖关系;如果程序段A、程序段B之间存在程序上下文依赖关系,进入步骤(2);否则,进入步骤(3);
(2)顺序执行程序段A、程序段B;
执行程序段A时,如果程序段A包括若干个程序字段,则设定其中任意连续的两段程序子段为程序子段A1、程序子段A2,对所有的程序子段执行以下步骤直至执行完程序段A:判断程序子段A1、程序子段A2之间的程序上下文依赖关系,如果程序子段A1、程序子段A2之间存在程序上下文依赖关系,则依次顺序执行程序子段A1、程序子段A2;否则,根据程序子段A1、程序子段A2的数据量分配核组计算资源,并行执行程序子段A1、程序子段A2;如果程序段A不包括若干个程序字段,直接执行程序段A;
执行程序段B时,如果程序段B包括若干个程序字段,则设定其中任意连续的两段程序子段为程序子段B1、程序子段B2,对所有的程序子段执行以下步骤直至执行完程序段B:判断程序子段B1、程序子段B2之间的程序上下文依赖关系,如果程序子段B1、程序子段B2之间存在程序上下文依赖关系,则依次顺序执行程序子段B1、程序子段B2;否则,根据程序子段B1、程序子段B2的数据量分配核组计算资源,并行执行程序子段B1、程序子段B2;如果程序段B不包括若干个程序字段,直接执行程序段B;
关于程序段与程序子段,比如,一个for循环作为一个程序段,循环内部如果有不相关的多行代码计算,就可以分成多个程序子段并行处理;如果这个for循环内部就一行代码,那么它就是不可分为程序子段进行处理的,直接执行该程序段即可。
对于程序段内部,根据程序子段之间的依赖关系,可以设定程序子段的并行执行。对于一个程序段,内部存在多个程序子段,这些程序子段在核组内为串行执行,如果程序子段之间无上下文依赖关系,且单个程序子段的计算数据量较少,则这些程序子段可以并行执行。
进入步骤(4);
(3)根据程序段A和程序段B的数据量分配核组计算资源,并行执行程序段A、程序段B;
执行程序段A时,如果程序段A包括若干个程序字段,则设定其中任意连续的两段程序子段为程序子段A1、程序子段A2,对所有的程序子段执行以下步骤直至执行完程序段A:判断程序子段A1、程序子段A2之间的程序上下文依赖关系,如果程序子段A1、程序子段A2之间存在程序上下文依赖关系,则依次顺序执行程序子段A1、程序子段A2;否则,根据程序子段A1、程序子段A2的数据量分配核组计算资源,并行执行程序子段A1、程序子段A2;如果程序段A不包括若干个程序字段,直接执行程序段A;
执行程序段B时,如果程序段B包括若干个程序字段,则设定其中任意连续的两段程序子段为程序子段B1、程序子段B2,对所有的程序子段执行以下步骤直至执行完程序段B:判断程序子段B1、程序子段B2之间的程序上下文依赖关系,如果程序子段B1、程序子段B2之间存在程序上下文依赖关系,则依次顺序执行程序子段B1、程序子段B2;否则,根据程序子段B1、程序子段B2的数据量分配核组计算资源,并行执行程序子段B1、程序子段B2;如果程序段B不包括若干个程序字段,直接执行程序段B;
进入步骤(4);
(4)对连续的后两段程序段执行步骤(1)至步骤(3),直至执行完程序。
本发明将核组内多程序段根据不同情况进行同步或者异步执行,将核组内同一程序段内不同程序子段并行执行,将核组内同一程序段内不同程序子段和不同程序子段异步执行。本发明可以有效的提升并行程序运行效率。
实施例2
根据实施例1所述一种基于申威众核处理器的核组内多程序多数据流分区并行的运行方法,其区别在于:顺序执行程序段A、程序段B,如图4所示,包括步骤如下:
①将程序段A和程序段B放入同一核组执行;
②因程序段A、程序段B之间存在程序上下文依赖关系,必须串行执行,分配核组计算资源运行程序段A;
③执行程序段B。可以减少一次spawn和join的时间。程序段B需要使用程序段A计算后的数据,采用此种方法,程序段B可以直接使用核组中的数据,避免数据在主核和核组之间的多次DMA拷贝,可以减少一次spawn和join的时间。
对于程序段内部,根据子程序段之间的依赖关系,可以设定子程序段的并行执行。对于一个程序段,内部存在多个子程序段,这些子程序段在核组内为串行执行,如果子程序段之间无上下文依赖关系,且单个子程序段的计算数据量较少,则这些子程序段可以并行执行。具体如图5所示:
根据程序段A和程序段B的数据量分配核组计算资源,并行执行程序段A、程序段B,如图3所示,包括步骤如下:
根据程序段A和程序段B的数据量,分配核组计算资源,例如,程序段A需要向核组传输的数据为浮点型数组X[4][8],程序段B需要向核组传输的数据为浮点型数组Y[8][4],经过推算,程序段A和程序段B各需要向核组传输32个浮点型数据,传输的数据量相同,则向它们分配的核组资源相同,每个程序段分配32个从核进行计算;0号~47号从核运行程序段A,48号~63号从核运行程序段B。将程序段A和程序段B放入同一核组内并行执行。因两个程序段之间无程序上下文依赖关系,可以并行执行,从而提高程序并行执行效率,可以减少一次spawn和join的时间。spawn核组线程加载程序段A和程序段B到核组,将程序段A和程序段B放入同一核组内并行执行,执行完毕后,join核组线程返回程序段A、程序段B的执行结果。
步骤(3)中,如果程序子段A1、程序子段A2之间不存在程序上下文依赖关系,根据程序子段A1、程序子段A2及程序段B的数据量分配核组计算资源,如图6所示,在同一核组内并行执行程序子段A1、程序子段A2及程序段B。
步骤(3)中,如果程序子段B1、程序子段B2之间不存在程序上下文依赖关系,根据程序子段B1、程序子段B2及程序段B的数据量分配核组计算资源,在同一核组内并行执行程序子段B1、程序子段B2及程序段B。
将本实施例结合海洋数值模式程序Parallel Ocean Program(POP)进行了实验测试,模拟了全球海洋10模式天的温度变化情况,测试环境为“神威·太湖之光”超级计算机,测试规模为15000个进程,具体合并优化了POP程序中的advu和hdiffu程序段(函数体)。采用原始的优化方式后(图1所示方法),advu模块中的某循环体单个进程对其的调用次数为1000000次,单次的核组spawn和join至少耗时22646纳秒,具体运行时间相对于原程序变长,为负优化。采用本发明设计的方法进行优化后,此循环体的spawn和join可以省略,即包含此循环体的程序段的spawn和join可以省略,最终节省21.78秒,该程序段所在程序模块的运行时间为930秒,即单个优化的程序段就节省了2.34%的模块运行时间。采用原始方法优化后,程序段执行时间加长,相对于原程序加速比为0.38,为负优化;采用本发明的方法后,相对于原程序,加速比达到了1.91。因此,本发明的方法对程序效率有明显的提升作用。因本发明的方法将两个程序段进行了合并,所以没有各程序段单独的运行时间。具体测试数据如表1所示。
表1
在实际应用程序中,类似此种待优化的程序段数量巨大,并且一般此类程序需要使用超级计算机进行长时间的数值模拟,叠加起来可节省的时间非常可观。
Claims (4)
1.一种基于申威众核处理器的核组内多程序多数据流分区并行的运行方法,运行于计算机上,执行程序,程序包括若干程序段,每个程序段包括若干个程序子段,设定程序中任意连续的两段程序段为程序段A、程序段B,其特征在于,包括步骤如下:
(1)判断程序段A、程序段B之间的程序上下文依赖关系;如果程序段A、程序段B之间存在程序上下文依赖关系,进入步骤(2);否则,进入步骤(3);
(2)顺序执行程序段A、程序段B;
执行程序段A时,如果程序段A包括若干个程序字段,则设定其中任意连续的两段程序子段为程序子段A1、程序子段A2,对所有的程序子段执行以下步骤直至执行完程序段A:判断程序子段A1、程序子段A2之间的程序上下文依赖关系,如果程序子段A1、程序子段A2之间存在程序上下文依赖关系,则依次顺序执行程序子段A1、程序子段A2;否则,根据程序子段A1、程序子段A2的数据量分配核组计算资源,并行执行程序子段A1、程序子段A2;如果程序段A不包括若干个程序字段,直接执行程序段A;
执行程序段B时,如果程序段B包括若干个程序字段,则设定其中任意连续的两段程序子段为程序子段B1、程序子段B2,对所有的程序子段执行以下步骤直至执行完程序段B:判断程序子段B1、程序子段B2之间的程序上下文依赖关系,如果程序子段B1、程序子段B2之间存在程序上下文依赖关系,则依次顺序执行程序子段B1、程序子段B2;否则,根据程序子段B1、程序子段B2的数据量分配核组计算资源,并行执行程序子段B1、程序子段B2;如果程序段B不包括若干个程序字段,直接执行程序段B;
进入步骤(4);
(3)根据程序段A和程序段B的数据量分配核组计算资源,并行执行程序段A、程序段B;
执行程序段A时,如果程序段A包括若干个程序字段,则设定其中任意连续的两段程序子段为程序子段A1、程序子段A2,对所有的程序子段执行以下步骤直至执行完程序段A:判断程序子段A1、程序子段A2之间的程序上下文依赖关系,如果程序子段A1、程序子段A2之间存在程序上下文依赖关系,则依次顺序执行程序子段A1、程序子段A2;否则,根据程序子段A1、程序子段A2的数据量分配核组计算资源,并行执行程序子段A1、程序子段A2;如果程序段A不包括若干个程序字段,直接执行程序段A;
执行程序段B时,如果程序段B包括若干个程序字段,则设定其中任意连续的两段程序子段为程序子段B1、程序子段B2,对所有的程序子段执行以下步骤直至执行完程序段B:判断程序子段B1、程序子段B2之间的程序上下文依赖关系,如果程序子段B1、程序子段B2之间存在程序上下文依赖关系,则依次顺序执行程序子段B1、程序子段B2;否则,根据程序子段B1、程序子段B2的数据量分配核组计算资源,并行执行程序子段B1、程序子段B2;如果程序段B不包括若干个程序字段,直接执行程序段B;
进入步骤(4);
(4)对连续的后两段程序段执行步骤(1)至步骤(3),直至执行完程序;
顺序执行程序段A、程序段B,包括步骤如下:
①将程序段A和程序段B放入同一核组执行;
②分配核组计算资源运行程序段A;
③执行程序段B;
根据程序段A和程序段B的数据量分配核组计算资源,并行执行程序段A、程序段B,包括步骤如下:
根据程序段A和程序段B的数据量,分配核组计算资源,将程序段A和程序段B放入同一核组内并行执行。
2.根据权利要求1所述的一种基于申威众核处理器的核组内多程序多数据流分区并行的运行方法,spawn核组线程加载程序段A和程序段B到核组,将程序段A和程序段B放入同一核组内并行执行,执行完毕后,join核组线程返回程序段A、程序段B的执行结果。
3.根据权利要求1所述的一种基于申威众核处理器的核组内多程序多数据流分区并行的运行方法,所述步骤(3)中,如果程序子段A1、程序子段A2之间不存在程序上下文依赖关系,根据程序子段A1、程序子段A2及程序段B的数据量分配核组计算资源,在同一核组内并行执行程序子段A1、程序子段A2及程序段B。
4.根据权利要求1-3任一所述的一种基于申威众核处理器的核组内多程序多数据流分区并行的运行方法,所述步骤(3)中,如果程序子段B1、程序子段B2之间不存在程序上下文依赖关系,根据程序子段B1、程序子段B2及程序段B的数据量分配核组计算资源,在同一核组内并行执行程序子段B1、程序子段B2及程序段B。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910536853.XA CN110262884B (zh) | 2019-06-20 | 2019-06-20 | 一种基于申威众核处理器的核组内多程序多数据流分区并行的运行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910536853.XA CN110262884B (zh) | 2019-06-20 | 2019-06-20 | 一种基于申威众核处理器的核组内多程序多数据流分区并行的运行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110262884A CN110262884A (zh) | 2019-09-20 |
CN110262884B true CN110262884B (zh) | 2023-03-24 |
Family
ID=67919786
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910536853.XA Active CN110262884B (zh) | 2019-06-20 | 2019-06-20 | 一种基于申威众核处理器的核组内多程序多数据流分区并行的运行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110262884B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113419709B (zh) * | 2021-06-22 | 2023-03-24 | 展讯通信(上海)有限公司 | 软件优化方法及装置、电子设备、可读存储介质 |
CN118245118B (zh) * | 2024-05-29 | 2024-07-26 | 山东省计算中心(国家超级计算济南中心) | 一种基于新一代申威众核处理器从核局存受限优化方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9223627B2 (en) * | 2013-03-27 | 2015-12-29 | Nice-Systems Ltd. | Management of task allocation in a multi-core processing system |
US9778961B2 (en) * | 2015-09-14 | 2017-10-03 | Qualcomm Incorporated | Efficient scheduling of multi-versioned tasks |
CN106126215B (zh) * | 2016-06-17 | 2019-06-21 | 深圳市麦斯杰网络有限公司 | 业务规则脚本生成方法及装置 |
CN106095583B (zh) * | 2016-06-20 | 2018-04-17 | 国家***第一海洋研究所 | 基于新神威处理器的主从核协同计算编程框架 |
CN113504985B (zh) * | 2016-07-29 | 2022-10-11 | 华为技术有限公司 | 一种任务处理方法以及网络设备 |
US10083029B2 (en) * | 2016-11-09 | 2018-09-25 | Red Hat, Inc. | Detect application defects by correlating contracts in application dependencies |
CN108132834B (zh) * | 2017-12-08 | 2020-08-18 | 西安交通大学 | 多级共享高速缓冲存储器架构下的任务分配方法和*** |
CN108804220A (zh) * | 2018-01-31 | 2018-11-13 | 中国地质大学(武汉) | 一种基于并行计算的卫星任务规划算法研究的方法 |
-
2019
- 2019-06-20 CN CN201910536853.XA patent/CN110262884B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110262884A (zh) | 2019-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10095657B2 (en) | Processor, accelerator, and direct memory access controller within a core reading/writing local synchronization flag area for parallel | |
Mei et al. | ADRES: An architecture with tightly coupled VLIW processor and coarse-grained reconfigurable matrix | |
US5329630A (en) | System and method using double-buffer preview mode | |
CN111090464B (zh) | 一种数据流处理方法及相关设备 | |
CN105487838A (zh) | 一种动态可重构处理器的任务级并行调度方法与*** | |
WO2013184380A2 (en) | Systems and methods for efficient scheduling of concurrent applications in multithreaded processors | |
CN112199173B (zh) | 双核cpu实时操作***数据处理方法 | |
Qian et al. | Accelerating RTL simulation with GPUs | |
CN110262884B (zh) | 一种基于申威众核处理器的核组内多程序多数据流分区并行的运行方法 | |
CN117501254A (zh) | 使用近存储器计算为复杂操作提供原子性 | |
Tan et al. | A non-stop double buffering mechanism for dataflow architecture | |
Owaida et al. | Massively parallel programming models used as hardware description languages: The OpenCL case | |
US20120151145A1 (en) | Data Driven Micro-Scheduling of the Individual Processing Elements of a Wide Vector SIMD Processing Unit | |
CN112783511B (zh) | 一种栅元少群参数计算模块程序的优化方法、***、终端 | |
CN110262900B (zh) | 一种基于申威众核处理器的主核与核组之间通信锁同步运行加速方法 | |
Niknam et al. | Resource optimization for real-time streaming applications using task replication | |
Kayamuro et al. | A rapid verification framework for developing multi-core processor | |
CN118245118B (zh) | 一种基于新一代申威众核处理器从核局存受限优化方法 | |
CN112732416B (zh) | 有效消除数据访问延迟的并行数据处理方法及并行处理器 | |
CN117632520B (zh) | 基于申威众核处理器的主从核监测交互的计算量调度方法 | |
Ren et al. | Parallel Optimization of BLAS on a New-Generation Sunway Supercomputer | |
Garanina et al. | Auto-Tuning High-Performance Programs Using Model Checking in Promela | |
Kong et al. | KPU-SQL: Kernel Processing Unit for High-Performance SQL Acceleration | |
Needham et al. | GPUs: Hardware to Software | |
CN118467195A (zh) | 一种二级子结构Schwarz方法异构并行求解方法及*** |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |