CN101807144A - 一种前瞻多线程并行执行优化方法 - Google Patents
一种前瞻多线程并行执行优化方法 Download PDFInfo
- Publication number
- CN101807144A CN101807144A CN201010126624A CN201010126624A CN101807144A CN 101807144 A CN101807144 A CN 101807144A CN 201010126624 A CN201010126624 A CN 201010126624A CN 201010126624 A CN201010126624 A CN 201010126624A CN 101807144 A CN101807144 A CN 101807144A
- Authority
- CN
- China
- Prior art keywords
- thread
- execution
- data
- prediction
- mentioned steps
- 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
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种前瞻多线程并行执行优化方法,其步骤如下:(1)、将串行程序划分为一个个的线程;(2)、判断线程是否前瞻执行,对于前瞻执行的线程分析每一个线程和线程的直接前驱线程之间是否存在写后读数据依赖;(3)、以设定的生产者距离与消费者距离的比值选择线程是否前瞻执行;(4)、线程前瞻执行完后验证前瞻执行结果。该方法能减少线程并行执行时的数据依赖冲突和不必要的延迟等待;本发明综合考虑了串行程序中并行效率较高的循环部分和子函数部分,能够充分挖掘程序中的写后读数据依赖,充分利用线程级并行性,并通过量化线程间写后读数据依赖,有选择地前瞻执行,能提高串行程序在多核处理器上的执行速度和处理器利用率。
Description
技术领域
本发明涉及计算机领域,具体地说是涉及一种前瞻多线程并行执行优化方法。
背景技术
随着计算机应用的不断深入,单片多核处理器(Chip Multi-Processors,CMP)技术日益倍受关注。利用CMP技术提高系统性能的关键是充分发挥多个微处理器核心的并行优势。串行程序虽易于设计和调试,却难以利用CMP技术的并行特性;并行程序虽然能更多获益于CMP技术,但并行编程对程序员能力要求较高。对于复杂的并行编程语言,程序员更愿意使用传统的串行程序,而且希望能尽可能地重用已开发出的软件。在这种情况下,串行程序的并行化方法受到了广泛的重视。
串行程序并行化是指在保证程序语义不变的条件下,将串行程序划分为若干并行线程,利用并行线程来充分利用CMP技术并行的优点。前瞻多线程(Speculative Multithreading)是串行程序充分利用CMP技术的关键,当线程执行所需参数在编译阶段不确定的情况下,通过数据预取、数据推测等方法消除线程间的依赖关系,创建出能够并行执行的前瞻线程。通过线程前瞻执行和相应的前瞻失效处理机制可以去除线程间的假依赖,发现并维护真依赖,降低线程之间的依赖程度,提高线程之间的并行度。
线程间的写后读(Read After Write,RAW)数据依赖是指两个线程之间存在对某个或某几个特定存储空间或变量的写后读依赖,即后面一个线程要读到前面一个线程所写的数据。
线程前瞻执行虽然能在某种程度上提高并行执行的效率,但是因为前瞻执行时,带有写后读数据依赖的线程会导致线程重启,且重启的时间开销和资源开销很大,也就是说,对于有的线程,顺序执行的效率会比在多个核上并行执行的效率更好。
发明内容
针对上述现有技术存在的不足,本发明的目的是提供一种前瞻多线程并行执行优化方法。该方法能减少多线程执行时的写后读数据依赖性冲突和不必要的线程间延迟等待,提高串行程序在多核处理器上的执行速度,提高处理器利用率。
为达到上述目的,本发明的构思是:利用生产者距离和消费者距离来量化两个有依赖关系的线程之间的依赖程度,并根据依赖程度有选择性设计前瞻多线程并行执行模式。
根据上述构思,本发明采用下述技术方案:
一种前瞻多线程并行执行优化方法,其具体步骤如下:
(1)、对串行程序中覆盖率较高和并行效率较高的循环部分和子函数部分,将循环部分和子函数部分相应的串行程序部分划分为一个个的线程;
(2)、判断线程是否前瞻执行,对于前瞻执行的线程分析每一个线程和线程的直接后续线程之间是否存在写后读数据依赖;
(3)、以设定的生产者距离R与消费者距离P的比值R/P判断并行线程之间的依赖程度选择线程是否前瞻执行;
(4)、线程前瞻执行完后验证前瞻执行结果。
本发明的一种前瞻多线程并行执行优化方法与已有技术相比较,具有如下面显而易见的突出实质性特点和显著有点:该方法能有效地减少线程并行执行时的数据依赖冲突和不必要的延迟等待;综合考虑了串行程序中并行效率较高的循环部分和子函数部分,能够充分挖掘程序中的写后读数据依赖,充分利用线程级并行性,并通过线程间写后读数据依赖量化,有选择地前瞻执行,能提高单线程序在多核处理器上的执行速度和处理器利用率。
附图说明
图1是本发明的一种前瞻多线程并行执行优化方法的流程图;
图2是图1中所述的步骤(1)的流程图;
图3是图1中所述的步骤(2)的流程图;
图4是图1中所述的步骤(3)的流程图;
图5是图1中所述的步骤(4)的流程图。
具体实施方式
本发明的一个优选实施例结合附图详述如下:
本实施例所述方案的应用环境是面向单片多核处理器的线程级并行执行环境,本实施例不限定所述技术方案应用环境中多核处理器架构。
下面结合说明书附图和具体实施方式对本发明作进一步详细的说明。
在单片多核处理器平台上,对串行程序,利用并行线程执行中若出现数据依赖后重启,只影响程序执行的效率,不影响程序执行的结果的原理,针对串行程序中易于并行的循环部分和子函数部分,设计并行线程执行模型,利用生产者距离和消费者距离来量化两个有依赖关系的线程之间的依赖程度,并根据依赖程度有选择性设计前瞻多线程并行执行模式。
写某一存储空间或变量的线程称为生产者线程,读某一存储空间或变量的线程称为消费者线程。对某一个特定的写后读数据,只有生产者线程完成其写操作之后,消费者线程才可以执行相应的读操作。前瞻多线程在CMP上是同时执行的,为了保证多线程之间更好地并行执行,最小可能地发生数据依赖性冲突,利用生产者距离和消费者距离来量化依赖线程之间的数据依赖程度,以此来判断何时需要前瞻并行,何时不需要前瞻并行,有针对性地前瞻并行执行串行程序,减少线程重新执行的几率,从而提高处理器的效率。
如图1所示,本发明的一种前瞻多线程并行执行优化方法,其步骤如下:
(1):对串行程序中覆盖率较高和并行效率较高的循环部分和子函数部分,将循环部分和子函数部分相应的串行程序部分划分为一个个的线程;
(2):判断线程是否前瞻执行,对于前瞻执行的线程分析每一个线程和线程的直接后续线程之间是否存在写后读数据依赖;
(3):以设定的生产者距离R与消费者距离P的比值R/P量化线程和线程直接后续线程之间的数据依赖程度选择线程是否前瞻执行,依据不同的依赖程度采取不同执行模式,以此尽可能减少线程并行执行带来的冲突和前瞻执行后重启;
(4):线程前瞻执行完后验证前瞻执行结果。
上述步骤(1)所述的针对串行程序中的循环部分和子函数设计并行执行模式,将单线程程序划分为线程,如图2所示,其具体步骤如下:
(11)、设置前瞻缓冲区:每相邻的两个处理器核之间设置一个前瞻缓冲区,用于缓冲前瞻多线程执行时所需要的预取数据和有关前瞻多线程的执行状态和上下文语义的数据,每个处理器核对应一个前瞻缓冲区,对于单片多核处理器,多个处理器核之间采用环状相连;
(12)、生成循环线程:对串行程序中的循环部分,按照顺序语义将每一个循环部分按照迭代步依次展开,其中每一个循环部分中的一次迭代步作为一个循环线程;
(13)、生成子函数线程:对串行程序中的子函数部分,按照顺序语义将每一个子函数部分按照调用顺序依次,其中每一个子函数部分中的一个子函数调用作为一个子函数线程;
(14)、生成中间线程:对串行程序中的非步骤202和步骤203所述的循环线程和子函数线程的部分,按照顺序语义,每直接相邻的两个循环部分之间的部分或者每直接相邻的两个子函数部分之间的部分或者直接相邻的循环部分与子函数部分之间的部分作为一个中间线程。
上述步骤(2)所述的判断线程是否前瞻执行,从串行程序的第二个线程开始到最后一个线程为止,分析每一个线程的直接前驱线程和该线程之间是否存在写后读数据依赖,如图3所示,其具体步骤如下:
(21)、对上述串行程序中的循环线程、子函数线程、中间线程按照顺序语义从一开始逐一编号,记下最后一个线程的编号N,为每一个线程建立一个变量表,用于记录这个线程中的每一个变量的读写情况,在变量表中设一个0-1系统变量Sys,初始值为0,表示该变量表对应的线程和线程的直接后续线程之间不存在写后读数据依赖,从编号为二的线程开始分析;
(22)、判断所分析的线程的编号是否为N,若线程的编号为N,则转步骤3;否则转步骤23;
(23)、判断上述步骤(22)所述的线程是否属于前瞻执行,若上述步骤(22)所述的线程不属于前瞻执行,则转步骤(26),若上述步骤(22)所述的线程属于前瞻执行,则转步骤(24);
(24)、将上述步骤(23)所述的线程前瞻执行所用到的预取数据和记录执行状态和上下文语义的数据存放在处理这个线程的处理器核所对应的前瞻缓冲区中;
(25)、分析上述步骤(23)所述的线程对应的直接前驱线程和该线程之间是否存在对同一变量的写后读依赖,若该线程的变量表中有对一个变量M进行了读操作,且该线程的直接前驱线程对同一个变量M进行了写操作,则确定线程和直接前驱线程之间有依赖关系,并将该线程的变量表中的Sys设为1;
(26)、分析上述步骤(22)所述的线程的直接后续线程。
上述步骤(3)所述的以设定的生产者距离R与消费者距离P的比值R/P量化线程之间的依赖程度,以此判断即将运行的线程是否前瞻执行,如图4所示,其具体步骤如下:
(31)、判断即将运行的线程的编号是否为N,若即将运行的线程的编号为N,则转步骤4;否则转步骤(32);
(32)、判断上述步骤(31)所述的线程的变量表中Sys的值是否为1,若上述步骤(31)所述的线程的变量表中Sys的值为1,则转步骤(33);否则转步骤(36);
(33)、计算该线程的第一条语句到第一次读变量M的语句之间的语句数量,该语句数量称为消费者距离,记为P;
(34)、计算该线程的直接前驱线程的第一条语句到最后一次写变量M的语句之间的语句数量,该语句数量称为生产者距离,记为R;
(35)、以设定的生产者距离R与消费者距离P的比值R/P选择线程是否前瞻执行,若R/P≤1时,则转步骤(36);若R/P≥2时,则转步骤(37);若1<R/P<2时,则转步骤(38);
(36)、该线程和该线程的直接前驱线程之间不会发生数据依赖冲突,该线程前瞻执行,与直接前驱线程同时执行;
(37)、该线程和该线程的直接前驱线程之间会发生数据依赖冲突,该线程等待该线程的直接前驱线程执行完成之后再执行;
(38)、该线程和该线程的直接前驱线程之间有可能会发生数据依赖冲突,该线程随机性选择前瞻执行。
上述步骤(4)所述的线程前瞻执行完后验证前瞻执行结果,如图5所示,其具体步骤如下:
(41)、线程前瞻执行所需的真实数据是指线程正确执行时所需的数据,真实数据是由顺序语义中位于线程前面的前驱线程计算出的供线程使用的数据,判断线程的真实数据是否已经被计算出来,若线程的真实数据已经被计算出来,则转步骤(42),否则转步骤(43);
(42)、判断真实数据与预取数据是否一致:直接将前瞻执行线程所需要的真实数据与前瞻执行时的预取数据作比较,判断真实数据与预取数据是否一致,若真实数据与预取数据不一致,则转步骤(44),否则转步骤(45);
(43)、将上述步骤(41)所述的线程置于等待状态,直至真实数据计算完成,转步骤(42);
(44):利用真实的数据重新执行上述步骤(42)所述的线程,再转步骤(45);
(45)、线程最终执行完毕;
以上对本前瞻多线程并行执行优化方法,进行了详细的介绍。本发明结合说明书附图和具体实施例进行的阐述只是用于帮助理解本发明的方法;同时,对于本领域的一般技术人员,依据本发明的方法,在具体实施方式和应用范围上均会有改变之处,因此本发明的实施例不应理解为对本发明的限制。
Claims (5)
1.一种前瞻多线程并行执行优化方法,其特征在于,利用生产者距离和消费者距离来量化两个有依赖关系的线程之间的依赖程度,并根据依赖程度有选择性设计前瞻多线程并行执行模式,其具体步骤如下:
(1)、对串行程序中覆盖率较高和并行效率较高的循环部分和子函数部分,将循环部分和子函数部分相应的串行程序部分划分为一个个的线程;
(2)、判断线程是否前瞻执行,对于前瞻执行的线程分析每一个线程和线程的直接前驱线程之间是否存在写后读数据依赖;
(3)、以设定的生产者距离R与消费者距离P的比值R/P判断并行线程之间的依赖程度选择线程是否前瞻执行;
(4)、线程前瞻执行完后验证前瞻执行结果。
2.根据权利要求1所述的一种前瞻多线程并行执行优化方法,其特征在于,上述步骤(1)所述的针对串行程序中的循环部分和子函数设计并行执行模式,将单线程程序划分为线程,其具体步骤如下:
(11)、设置前瞻缓冲区:每相邻的两个处理器核之间设置一个前瞻缓冲区,用于缓冲前瞻多线程执行时所需要的预取数据和有关前瞻多线程的执行状态和上下文语义的数据,每个处理器核对应一个前瞻缓冲区,对于单片多核处理器,多个处理器核之间采用环状相连;
(12)、生成循环线程:对串行程序中的循环部分,按照顺序语义将每一个循环部分按照迭代步依次展开,其中每一个循环部分中的一次迭代步作为一个循环线程;
(13)、生成子函数线程:对串行程序中的子函数部分,按照顺序语义将每一个子函数部分按照调用顺序依次,其中每一个子函数部分中的一个子函数调用作为一个子函数线程;
(14)、生成中间线程:对串行程序中的非步骤202和步骤203所述的循环线程和子函数线程的部分,按照顺序语义,每直接相邻的两个循环部分之间的部分或者每直接相邻的两个子函数部分之间的部分或者直接相邻的循环部分与子函数部分之间的部分作为一个中间线程。
3.根据权利要求2所述的一种前瞻多线程并行执行优化方法,其特征在于,上述步骤(2)所述的判断线程是否前瞻执行,从串行程序的第二个线程开始到最后一个线程为止,分析每一个线程的直接前驱线程和该线程之间是否存在写后读数据依赖,其具体步骤如下:
(21)、对上述串行程序中的循环线程、子函数线程、中间线程按照顺序语义从一开始逐一编号,记下最后一个线程的编号N,为每一个线程建立一个变量表,用于记录这个线程中的每一个变量的读写情况,在变量表中设一个0-1系统变量Sys,初始值为0,表示该变量表对应的线程和线程的直接后续线程之间不存在写后读数据依赖,从编号为二的线程开始分析;
(22)、判断所分析的线程的编号是否为N,若线程的编号为N,则转步骤3;否则转步骤23;
(23)、判断上述步骤(22)所述的线程是否属于前瞻执行,若上述步骤(22)所述的线程不属于前瞻执行,则转步骤(26),若上述步骤(22)所述的线程属于前瞻执行,则转步骤(24);
(24)、将上述步骤(23)所述的线程前瞻执行所用到的预取数据和记录执行状态和上下文语义的数据存放在处理这个线程的处理器核所对应的前瞻缓冲区中;
(25)、分析上述步骤(23)所述的线程对应的直接前驱线程和该线程之间是否存在对同一变量的写后读依赖,若该线程的变量表中有对一个变量M进行了读操作,且该线程的直接前驱线程对同一个变量M进行了写操作,则确定线程和直接前驱线程之间有依赖关系,并将该线程的变量表中的Sys设为1;
(26)、分析上述步骤(23)所述的线程的直接后续线程。
4.根据权利要求3所述的一种前瞻多线程并行执行优化方法,其特征在于,上述步骤(3)所述的以设定的生产者距离R与消费者距离P的比值R/P量化线程之间的依赖程度,以此判断即将运行的线程是否前瞻执行,其具体步骤如下:
(31)、判断即将运行的线程的编号是否为N,若即将运行的线程的编号为N,则转步骤4;否则转步骤(32);
(32)、判断上述步骤(31)所述的线程的变量表中Sys的值是否为1,若上述步骤(31)所述的线程的变量表中Sys的值为1,则转步骤(33);否则转步骤(36);
(33)、计算该线程的第一条语句到第一次读变量M的语句之间的语句数量,该语句数量称为消费者距离,记为P;
(34)、计算该线程的直接前驱线程的第一条语句到最后一次写变量M的语句之间的语句数量,该语句数量称为生产者距离,记为R;
(35)、以设定的生产者距离R与消费者距离P的比值R/P选择线程是否前瞻执行,若R/P≤1时,则转步骤(36);若R/P≥2时,则转步骤(37);若1<R/P<2时,则转步骤(38);
(36)、该线程和该线程的直接前驱线程之间不会发生数据依赖冲突,该线程前瞻执行,与直接前驱线程同时执行;
(37)、该线程和该线程的直接前驱线程之间会发生数据依赖冲突,该线程等待该线程的直接前驱线程执行完成之后再执行;
(38)、该线程和该线程的直接前驱线程之间有可能会发生数据依赖冲突,该线程随机性选择前瞻执行。
5.根据权利要求4所述的一种前瞻多线程并行执行优化方法,其特征在于,上述步骤(4)所述的线程前瞻执行完后验证前瞻执行结果,其具体步骤如下:
(41)、线程前瞻执行所需的真实数据是指线程正确执行时所需的数据,真实数据是由顺序语义中位于线程前面的前驱线程计算出的供线程使用的数据,判断线程的真实数据是否已经被计算出来,若线程的真实数据已经被计算出来,则转步骤(42),否则转步骤(43);
(42)、判断真实数据与预取数据是否一致:直接将前瞻执行线程所需要的真实数据与前瞻执行时的预取数据作比较,判断真实数据与预取数据是否一致,若真实数据与预取数据不一致,则转步骤(44),否则转步骤(45);
(43)、将上述步骤(41)所述的线程置于等待状态,直至真实数据计算完成,转步骤(42);
(44):利用真实的数据重新执行上述步骤(42)所述的线程,再转步骤(45);
(45)、线程最终执行完毕。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010126624.XA CN101807144B (zh) | 2010-03-17 | 2010-03-17 | 一种前瞻多线程并行执行优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010126624.XA CN101807144B (zh) | 2010-03-17 | 2010-03-17 | 一种前瞻多线程并行执行优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101807144A true CN101807144A (zh) | 2010-08-18 |
CN101807144B CN101807144B (zh) | 2014-05-14 |
Family
ID=42608950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010126624.XA Expired - Fee Related CN101807144B (zh) | 2010-03-17 | 2010-03-17 | 一种前瞻多线程并行执行优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101807144B (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012844A (zh) * | 2010-11-29 | 2011-04-13 | 上海大学 | 一种面向cmp系统的线程调度方法 |
CN102063291A (zh) * | 2011-01-13 | 2011-05-18 | 上海大学 | 一种前瞻线程的多级并行执行方法 |
CN102073482A (zh) * | 2011-02-25 | 2011-05-25 | 上海大学 | 一种前瞻失效线程的划分方法 |
CN102520915A (zh) * | 2011-11-25 | 2012-06-27 | 华为技术有限公司 | 非统一内存访问系统中线程化串行程序的方法及装置 |
WO2014139125A1 (en) * | 2013-03-14 | 2014-09-18 | Intel Corporation | Operation of software modules in parallel |
CN104487946A (zh) * | 2011-10-14 | 2015-04-01 | 英特尔公司 | 用于事务存储器系统中的自适应线程调度的方法、设备和系统 |
CN105930242A (zh) * | 2016-05-06 | 2016-09-07 | 中国科学院计算技术研究所 | 一种支持精确访存检测的多核处理器随机验证方法及装置 |
CN106095396A (zh) * | 2016-06-20 | 2016-11-09 | 国家海洋局第海洋研究所 | 循环折叠cpu流水线优化方法 |
CN106201669A (zh) * | 2016-07-08 | 2016-12-07 | 乐视控股(北京)有限公司 | 信息传播方式确定方法及系统 |
CN108920151A (zh) * | 2017-04-26 | 2018-11-30 | 中国科学院微电子研究所 | 一种生成并行程序的方法及装置 |
CN110162401A (zh) * | 2019-05-24 | 2019-08-23 | 广州中望龙腾软件股份有限公司 | Dwg文件并行读取方法、电子设备和存储介质 |
CN111047449A (zh) * | 2020-03-12 | 2020-04-21 | 支付宝(杭州)信息技术有限公司 | 在区块链中执行交易的方法及装置 |
CN112445486A (zh) * | 2019-08-28 | 2021-03-05 | 无锡江南计算技术研究所 | 基于编译指导的有读写依赖循环的多线程并行方法 |
CN113568736A (zh) * | 2021-06-24 | 2021-10-29 | 阿里巴巴新加坡控股有限公司 | 数据处理方法及装置 |
CN114201726A (zh) * | 2020-09-18 | 2022-03-18 | 深圳先进技术研究院 | 一种卷积运算优化方法、系统、终端以及存储介质 |
WO2022073346A1 (en) * | 2020-10-07 | 2022-04-14 | Huawei Technologies Co., Ltd. | Devices, methods, and media for efficient data dependency management for in-order issue processors |
CN114443139A (zh) * | 2022-01-27 | 2022-05-06 | 上海壁仞智能科技有限公司 | 将顺序代码转换为并行代码的方法、系统、设备和介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6223276B1 (en) * | 1998-03-31 | 2001-04-24 | Intel Corporation | Pipelined processing of short data streams using data prefetching |
US6643766B1 (en) * | 2000-05-04 | 2003-11-04 | Hewlett-Packard Development Company, L.P. | Speculative pre-fetching additional line on cache miss if no request pending in out-of-order processor |
CN1591325A (zh) * | 2003-08-29 | 2005-03-09 | 松下电器产业株式会社 | 计算机系统、编译器装置以及操作系统 |
CN1890635A (zh) * | 2003-10-02 | 2007-01-03 | 英特尔公司 | 用于降低软件应用中的存储器延迟的方法和装置 |
CN1904822A (zh) * | 2005-07-29 | 2007-01-31 | 宇力电子股份有限公司 | 加强转移预测的中央处理器架构 |
CN101561766A (zh) * | 2009-05-26 | 2009-10-21 | 北京理工大学 | 一种支持多核帮助线程的低开销的块同步方法 |
CN101655783A (zh) * | 2009-05-08 | 2010-02-24 | 上海大学 | 前瞻多线程划分方法 |
-
2010
- 2010-03-17 CN CN201010126624.XA patent/CN101807144B/zh not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6223276B1 (en) * | 1998-03-31 | 2001-04-24 | Intel Corporation | Pipelined processing of short data streams using data prefetching |
US6643766B1 (en) * | 2000-05-04 | 2003-11-04 | Hewlett-Packard Development Company, L.P. | Speculative pre-fetching additional line on cache miss if no request pending in out-of-order processor |
CN1591325A (zh) * | 2003-08-29 | 2005-03-09 | 松下电器产业株式会社 | 计算机系统、编译器装置以及操作系统 |
CN1890635A (zh) * | 2003-10-02 | 2007-01-03 | 英特尔公司 | 用于降低软件应用中的存储器延迟的方法和装置 |
CN1904822A (zh) * | 2005-07-29 | 2007-01-31 | 宇力电子股份有限公司 | 加强转移预测的中央处理器架构 |
CN101655783A (zh) * | 2009-05-08 | 2010-02-24 | 上海大学 | 前瞻多线程划分方法 |
CN101561766A (zh) * | 2009-05-26 | 2009-10-21 | 北京理工大学 | 一种支持多核帮助线程的低开销的块同步方法 |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012844A (zh) * | 2010-11-29 | 2011-04-13 | 上海大学 | 一种面向cmp系统的线程调度方法 |
CN102012844B (zh) * | 2010-11-29 | 2013-01-09 | 上海大学 | 一种面向cmp系统的线程调度方法 |
CN102063291B (zh) * | 2011-01-13 | 2013-08-28 | 上海大学 | 一种前瞻线程的多级并行执行方法 |
CN102063291A (zh) * | 2011-01-13 | 2011-05-18 | 上海大学 | 一种前瞻线程的多级并行执行方法 |
CN102073482A (zh) * | 2011-02-25 | 2011-05-25 | 上海大学 | 一种前瞻失效线程的划分方法 |
CN102073482B (zh) * | 2011-02-25 | 2013-11-20 | 上海大学 | 一种前瞻失效线程的划分方法 |
CN104487946B (zh) * | 2011-10-14 | 2018-09-18 | 英特尔公司 | 用于事务存储器系统中的自适应线程调度的方法和设备 |
CN104487946A (zh) * | 2011-10-14 | 2015-04-01 | 英特尔公司 | 用于事务存储器系统中的自适应线程调度的方法、设备和系统 |
CN102520915A (zh) * | 2011-11-25 | 2012-06-27 | 华为技术有限公司 | 非统一内存访问系统中线程化串行程序的方法及装置 |
CN102520915B (zh) * | 2011-11-25 | 2014-04-02 | 华为技术有限公司 | 非统一内存访问系统中线程化串行程序的方法及装置 |
WO2014139125A1 (en) * | 2013-03-14 | 2014-09-18 | Intel Corporation | Operation of software modules in parallel |
CN104969183A (zh) * | 2013-03-14 | 2015-10-07 | 英特尔公司 | 软件模块的并行操作 |
CN104969183B (zh) * | 2013-03-14 | 2018-10-19 | 英特尔公司 | 用于多个并行处理线程间的任务的软件模块的并行操作的系统、方法和设备 |
US9582339B2 (en) | 2013-03-14 | 2017-02-28 | Intel Corporation | Operation of software modules in parallel |
CN105930242A (zh) * | 2016-05-06 | 2016-09-07 | 中国科学院计算技术研究所 | 一种支持精确访存检测的多核处理器随机验证方法及装置 |
CN105930242B (zh) * | 2016-05-06 | 2018-07-06 | 中国科学院计算技术研究所 | 一种支持精确访存检测的多核处理器随机验证方法及装置 |
CN106095396A (zh) * | 2016-06-20 | 2016-11-09 | 国家海洋局第海洋研究所 | 循环折叠cpu流水线优化方法 |
CN106201669A (zh) * | 2016-07-08 | 2016-12-07 | 乐视控股(北京)有限公司 | 信息传播方式确定方法及系统 |
CN108920151A (zh) * | 2017-04-26 | 2018-11-30 | 中国科学院微电子研究所 | 一种生成并行程序的方法及装置 |
CN110162401A (zh) * | 2019-05-24 | 2019-08-23 | 广州中望龙腾软件股份有限公司 | Dwg文件并行读取方法、电子设备和存储介质 |
CN112445486A (zh) * | 2019-08-28 | 2021-03-05 | 无锡江南计算技术研究所 | 基于编译指导的有读写依赖循环的多线程并行方法 |
CN111047449A (zh) * | 2020-03-12 | 2020-04-21 | 支付宝(杭州)信息技术有限公司 | 在区块链中执行交易的方法及装置 |
CN111047449B (zh) * | 2020-03-12 | 2020-06-23 | 支付宝(杭州)信息技术有限公司 | 在区块链中执行交易的方法及装置 |
CN114201726A (zh) * | 2020-09-18 | 2022-03-18 | 深圳先进技术研究院 | 一种卷积运算优化方法、系统、终端以及存储介质 |
WO2022073346A1 (en) * | 2020-10-07 | 2022-04-14 | Huawei Technologies Co., Ltd. | Devices, methods, and media for efficient data dependency management for in-order issue processors |
CN113568736A (zh) * | 2021-06-24 | 2021-10-29 | 阿里巴巴新加坡控股有限公司 | 数据处理方法及装置 |
CN114443139A (zh) * | 2022-01-27 | 2022-05-06 | 上海壁仞智能科技有限公司 | 将顺序代码转换为并行代码的方法、系统、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101807144B (zh) | 2014-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101807144B (zh) | 一种前瞻多线程并行执行优化方法 | |
US8726251B2 (en) | Pipelined loop parallelization with pre-computations | |
US8739141B2 (en) | Parallelizing non-countable loops with hardware transactional memory | |
EP3350686B1 (en) | Debug support for block-based processor | |
Zhong et al. | Uncovering hidden loop level parallelism in sequential applications | |
US20120324472A1 (en) | Transactional computation on clusters | |
CN102981807B (zh) | 一种基于cuda并行环境的gpu程序优化方法 | |
US8528001B2 (en) | Controlling and dynamically varying automatic parallelization | |
KR20180021812A (ko) | 연속하는 블록을 병렬 실행하는 블록 기반의 아키텍쳐 | |
US10318261B2 (en) | Execution of complex recursive algorithms | |
CN101655783B (zh) | 前瞻多线程划分方法 | |
CN103365776A (zh) | 基于确定性重放的并行系统弱一致性的验证方法和系统 | |
CN105159654A (zh) | 基于多线程并行的完整性度量散列算法优化方法 | |
WO2018076979A1 (zh) | 一种指令间数据依赖的检测方法和装置 | |
Popov | An introduction to the MISD technology | |
US11016776B2 (en) | System and method for executing instructions | |
CN112783511B (zh) | 一种栅元少群参数计算模块程序的优化方法、系统、终端 | |
CN103699363A (zh) | 一种用于在多核平台下优化关键临界区的方法 | |
CN101814019B (zh) | 一种前瞻失效的线程识别方法 | |
Baghsorkhi et al. | Analytical performance prediction for evaluation and tuning of GPGPU applications | |
Herbegue et al. | Formal architecture specification for time analysis | |
Bu et al. | Exploring parallelism in mibench with loop and procedure level speculation | |
Wang et al. | A flexible chip multiprocessor simulator dedicated for thread level speculation | |
US20110320781A1 (en) | Dynamic data synchronization in thread-level speculation | |
Damavandpeyma et al. | Hybrid code-data prefetch-aware multiprocessor task graph scheduling |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140514 Termination date: 20160317 |
|
CF01 | Termination of patent right due to non-payment of annual fee |