CN107250984A - 用于利用工作窃取支持进行有效同步屏障的技术 - Google Patents
用于利用工作窃取支持进行有效同步屏障的技术 Download PDFInfo
- Publication number
- CN107250984A CN107250984A CN201580061987.0A CN201580061987A CN107250984A CN 107250984 A CN107250984 A CN 107250984A CN 201580061987 A CN201580061987 A CN 201580061987A CN 107250984 A CN107250984 A CN 107250984A
- Authority
- CN
- China
- Prior art keywords
- thread
- task
- stolen
- computing device
- mark
- 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
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
-
- 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
- G06F9/522—Barrier synchronisation
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- 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/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
Abstract
用于多线程化同步和工作窃取的技术包括执行线程队中的两个或更多个线程的计算设备。线程执行其任务队列中的所有任务,并且然后将其关联任务失窃标志值与假进行交换,并且将所述值存储在临时标志中。随后,线程进入基本同步屏障。所述计算设备对所述线程队的所述临时标志执行逻辑OR规约,以产生规约值。在等待所述线程队的其他线程进入所述屏障时,所述线程可以从受害者线程中窃取任务并且将所述受害者线程的任务失窃标志设置为真。在退出所述基本同步屏障之后,如果所述规约值为真,则所述线程重复交换所述任务失窃标志值并且进入所述基本同步屏障。描述并要求保护其他实施例。
Description
相关美国专利申请的交叉引用
本申请要求于2014年12月12日提交的题为“TECHNOLOGIES FOR EFFICIENTSYNCHRONIZATION BARRIERS WITH WORK STEALING SUPPORT(用于利用工作窃取支持进行有效同步屏障的技术)”的美国实用新型专利申请序列号14/568,831的优先权。
背景技术
对于当前的计算设备和应用,高效的多线程化性能变得越来越重要。OpenMP是一种用于共享内存并行编程的流行应用程序编程接口(API)。OpenMP指定了可以用于协调在线程队(thread team)中执行的多个线程的同步屏障特征。一般地,在对程序的执行可以进行之前,线程队的所有线程必须到达屏障。OpenMP还指定了其中多个线程可以创建和执行任务的任务系统。必须在线程可能退出同步屏障之前完成所有任务。因此,通常在线程在同步屏障中等待的同时执行任务。
许多OpenMP实施方式使用“工作窃取”,其中,线程可以“窃取”来自另一线程待执行的多项任务;也就是说,线程可以声明来自另一线程的任务并且运行所述任务直至完成。为了兼容任务需求,OpenMP同步屏障通常实现为树状或线性屏障。然而,树状屏障与非树状屏障(分发屏障(dissemination barrier))相比具有相对较长的关键路径。
附图说明
在附图中通过示例的方式而非限制性的方式展示了在此所描述的概念。为了说明的简单和清晰起见,附图中所展示的元件不一定按比例绘制。在认为适当的情况下,在附图当中重复参考标号以表示相应或相似的元件。
图1是用于利用工作窃取进行有效同步屏障的计算设备的至少一个实施例的简化框图;
图2是图1的计算设备的环境的至少一个实施例的简化框图;
图3是可以由图1和图2的计算设备执行的用于进行并行任务执行和工作窃取的方法的至少一个实施例的简化流程图;
图4是可以由图1和图2的计算设备执行的用于执行同步屏障的方法的至少一个实施例的简化流程图;并且
图5是可以由图1和图2的计算设备执行的用于在执行同步屏障的过程中进行工作窃取的方法的至少一个实施例的简化流程图。
具体实施方式
虽然本公开的概念易于经历各种修改和替代形式,但是在附图中已经通过示例的方式示出了其特定实施例并且将在此对其进行详细描述。然而,应当理解的是,并不旨在将本公开的概念限制于所公开的特定形式,而相反,意图是覆盖与本公开和所附权利要求书一致的所有修改型式、等效型式和替代型式。
在说明书中提到的“一个实施例”、“实施例”、“说明性实施例”等指示所描述的实施例可以包括具体特征、结构或特性,但每一个实施例可能或者可能不一定包括所述具体特征、结构或特性。而且,此类短语不一定指相同的实施例。进一步地,当结合实施例描述具体特征、结构或特性时,应认为,无论是否明确描述,结合其他实施例来实现这种特征、结构或特性是在本领域的普通技术人员的知识范围内。另外,应当认识到,包括在采用“至少一个A、B和C”形式的列表中的项可意指(A);(B);(C);(A和B);(A和C);(B和C);或(A、B和C)。类似地,采用“A、B或C中的至少一者”形式列出的项可意指(A);(B);(C);(A和B);(A和C);(B和C);或(A、B和C)。
在一些情况下,可以在硬件、固件、软件或其任何组合中实施所公开的实施例。还可以将所公开的实施例实施为由瞬态或非瞬态机器可读(例如,计算机可读)存储介质承载或者存储在其上的可由一个或多个处理器来读取和执行的指令。机器可读存储介质可以被实施为任何存储设备、机制、或用于存储或传输采用机器可读形式的信息的其他物理结构(例如,易失性或非易失性存储器、介质盘或其他介质设备)。
在附图中,一些结构特征或方法特征可能以特定安排和/或顺序示出。然而,应当理解的是,可以不需要这种特定安排和/或顺序。相反,在一些实施例中,可以采用与在说明性附图中所示出的方式和/或顺序不同的方式和/或顺序来安排这种特征。另外,在具体的图中包括结构特征或方法特征并不意味着暗示在所有实施例中都需要这种特征,并且在一些实施例中,可以不包括这种特征或者这种特征可以与其他特征组合。
现在参照图1,用于利用工作窃取进行有效同步屏障的说明性计算设备100包括处理器120、I/O子系统122、存储器124、和数据存储设备126。在使用中,如下所述,计算设备100被配置为通过组织成线程队的一组线程来执行多个任务。每个线程与对应的任务队列和布尔(Boolean)标志相关联。在完成线程的所有待决任务后,所述线程可以进入同步屏障。在进入屏障之前,线程将其标志值与假(false)以原子方式交换、并且将原始标志值存储在线程本地临时标志变量中。在等待其他线程进入屏障的同时,活动线程可以从另一线程(“受害者”线程)中窃取任务,将受害者线程的标志设置为真(true),并且执行受害者任务(即,从受害者线程窃取的任务)直至完成。执行受害者任务可能会导致将更多的任务添加到活动线程的队列中。计算设备100对每个线程的临时标志变量执行逻辑OR规约(reduction)操作以生成规约值。规约值指示在进入屏障之前线程队中的任何线程是否将其对应的标志设置为真。换句话说,规约值指示在进入屏障之前任何线程是否具有失窃任务(即,是受害者线程)。如果规约值为真,则计算设备100使得所有线程重试同步屏障。如果规约值为假,则计算设备100允许所有线程继续执行。
计算设备100可以允许与OpenMP任务语义兼容地使用诸如分发屏障的非树状屏障。与树状屏障相比,非树状屏障可以改善性能。说明性地,如本文所描述的包括Xeon PhiTM协处理器的计算设备100可以实现大约是常规树状屏障的两倍的同步屏障性能。另外,尽管被展示为用于共享存储器多线程化的同步屏障,但是本文公开的技术可以用于包括多个分布式计算环境的任何并发执行环境。
计算设备100可以被实施为能够有效利用工作窃取执行同步屏障的并且以其他方式执行本文中所描述的功能的任何类型的设备。例如,计算设备100可以被实施为(而不限于)计算机、台式计算机、工作站、服务器计算机、分布式计算系统、多处理器系统、膝上型计算机、笔记本计算机、平板计算机、智能电话、移动计算设备、可穿戴计算设备、消费者电子设备、智能家电、和/或能够进行有效执行多个同步屏障的任何其他计算设备。如在图1中所示出的,说明性计算设备100包括处理器120、I/O子系统122、存储器124、和数据存储设备126。当然,在其他实施例中,计算设备100可以包括其他或附加部件,如计算机中常见的部件(例如,各种输入/输出设备)。另外,在一些实施例中,说明性部件中的一个或多个说明性部件可以结合在另一部件中,或以其他方式形成其一部分。例如,在一些实施例中,可以将存储器124或者其部分结合到处理器120中。
处理器120可以实施为能够执行在本文中所描述的功能的任何类型的处理器。例如,处理器120可以被实施为(多个)单核或多核处理器、(多个)协处理器、数字信号处理器、微控制器、或者其他处理器或处理/控制电路。类似地,存储器124可以被实施为能够执行本文中所描述的功能的任何类型的易失性或非易失性存储器或数据储存设备。在操作中,存储器124可以存储在对计算设备100的操作期间所使用的各种数据和软件,比如,操作系统、应用、程序、库、和驱动程序。存储器124经由I/O子系统122通信地耦合至处理器120,所述子系统可以被实施为用于促进与计算设备100的处理器120、存储器124、以及其他部件的输入/输出操作的电路和/或部件。例如,I/O子系统122可以被实施为或以其他方式包括用于促进输入/输出操作的存储器控制器中枢、输入/输出控制中枢、固件设备、通信链路(即,点到点链路、总线链路、线、电缆、光导、印刷电路板迹线等)和/或其他部件和子系统。在一些实施例中,I/O子系统122可以形成片上系统(SoC)的一部分并且与处理器120、存储器124、以及计算设备100的其他部件一起合并在单个集成电路芯片上。
数据存储设备126可以被实施为被配置成用于对数据进行短期或长期存储的任何类型的一种或多种设备,如例如,存储器设备和电路、存储器卡、硬盘驱动器、固态驱动器或其他数据存储设备。
计算设备100还可以包括通信子系统128,所述通信子系统可以被实施为能够使计算设备100与其他远端设备之间通过计算机网络(未示出)的通信成为可能任何通信电路、设备、或其集合。通信子系统128可以被配置成用于使用任何一种或多种通信技术(例如,有线或无线通信)以及相关联的协议(例如,以太网、WiMAX等)来实现这种通信。
现在参照图2,在说明性实施例中,计算设备100在操作期间建立环境200。说明性实施例200包括事务性屏障(transactional barrier)模块202、基本屏障模块204、规约模块(reduction module)206、任务执行模块208、任务窃取模块210、以及线程化模块212。环境200的各种模块可以被实施为硬件、固件、软件或其组合。例如,环境200的各种模块、逻辑和其他部件可以形成计算设备100的处理器120或其他硬件部件的一部分或以其他方式由所述计算设备的所述处理器或所述其他硬件部件建立。例如,在一些实施例中,环境200的模块中的一个或多个模块可以实施为电路(例如,同步路障电路、规约电路等)。
线程化模块212被配置为创建、执行并以其他方式管理线程队214和一个或多个线程216。线程队214可以被实施为可用于执行特定组的任务或其他计算问题的线程216的集合。线程216各自可以被实施为操作系统线程、被管理的可执行线程、应用线程、工作者线程(worker thread)、轻量线程(lightweight thread)或其他可执行程序。线程216可以共享公共存储器空间,但也可以访问线程本地存储设备、私有变量、或者不被多个线程216共享的其他数据。每个线程216维持任务队列218和标志220。任务队列218包括有待由线程216执行的可执行任务的列表。如下面进一步描述的,每个线程216可以执行来自其本身的任务队列218的任务,或者可以从不同线程216的任务队列218中窃取任务并且执行所窃取的任务。标志220包括布尔值(例如,真或假),如果另一线程216已经从任务队列218中窃取了任务,则可以设置所述布尔值。可以针对每个线程216将不同的任务队列218和/或标志220例如存储在线程控制结构或线程本地存储设备中。另外,尽管说明性实施例200包括具有两个线程216a、216b的单个线程队214,但是应当理解,在一些实施例中,环境200可以包括多个线程队214,并且每个线程队214可以具有多个线程216。
事务性屏障模块202被配置为用于将线程216的标志220与假以原子方式交换以及将标志220的原始值存储在线程本地临时标志变量中。事务性屏障模块202被配置为用于在交换标志220以及存储临时标志变量之后使用基本屏障模块204进入基本同步屏障。如下面进一步描述的,规约模块206对线程队214的所有线程216的所有线程生成临时标志变量。事件屏障模块202被进一步配置为用于判定规约值是否为真,并且如果为真,则使得线程216重试交换标志220并且重新进入基本同步屏障。也就是说,如果规约值为真,则事务性屏障模块202被配置为用于重复将线程216的标志220与假以原子方式交换和将标志220的原始值存储在线程本地临时标志变量中。
规约模块206被配置为用于在基本同步屏障的执行过程中对线程队214的每个线程216的临时标志变量执行逻辑“OR”规约。换句话说,规约模块206被配置为用于对每个线程216的所有本地存储的标志值执行逻辑OR操作、并且将所产生的规约值分配给每个线程216。规约模块206可以使用任何用于执行规约的算法,包括执行基于非树状的算法(例如分发屏障算法或K基数(K-radix)屏障算法)。
任务执行模块208被配置为用于从线程216的任务队列218中弹出多个任务并且运行这些任务直至完成。任务执行模块208可以从任务队列218中弹出第一任务,或以其他方式调度来自任务队列218的任务。任务执行模块208还被配置为用于在进入同步屏障之前判定任务队列218是否为空,并且响应于确定任务队列218为空而进入同步屏障。任务执行模块208被配置为用于如果规约值为假(即,如果线程队214的任何线程216没有另外的任务失窃取)则在退出基本同步屏障之后离开事务性屏障。
任务窃取模块210被配置为用于当线程216在同步屏障中等待时以原子方式从受害者线程216中窃取任务,并且响应于窃取任务而将受害者线程216的标志220设置为真。在一些实施例中,作为优化,如果活动线程216的标志220不为真(例如,假),则任务窃取模块210只能将受害者线程216的标志220设置为真。任务窃取模块210可以随机地标识受害者线程216,判定受害者线程216的任务队列218是否为空,并且如果不为空则从受害者线程216的任务队列218中弹出任务。任务窃取模块210可以执行受害者任务直至完成,并且在完成受害者任务之后执行已经添加到活动线程216的任务队列218中的任何任务。
现在参照图3,在使用中,计算设备100可以执行一种用于进行并行任务执行和工作窃取的方法300。方法300开始于框302,在所述框中计算设备100由线程队214开始执行一组任务。任务的执行可以例如由计算设备100的主线程或其他控制实体开始。在开始执行任务之后,方法300并行地进行到多个框304。
在框304中,计算设备100使用线程216并行地执行任务并且执行工作窃取。例如,每个线程216可以与其他线程216并行地执行来自其任务队列218的任务。说明性方法300示出了由三个线程216并行执行的三个框304。当然,其他实施例可以包括由对应线程216执行的更少或附加的框304。如方法300所示,可以在框304的执行过程中在线程216之间传输任务306。例如,线程216a可以从不同线程216b的任务队列218中窃取任务并且然后执行所窃取的任务。
在框304中执行任务306之后,方法300进入事务性同步屏障308。例如,每个线程216可以在其完成执行其任务队列218中的所有任务之后进入同步屏障308。线程216在事务性同步屏障308内等待,直到由线程队214执行的所有任务都已经运行直至完成。如下面进一步描述的,在同步屏障308中等待的线程216可以从仍然在框304内执行的线程216中窃取任务306。在所有任务完成之后,方法300循环回到框304以继续并行执行任务并执行工作窃取。
现在参照图4,在使用中,计算设备100可以执行一种用于执行同步屏障的方法400。例如,在图3的方法300的执行过程中,方法400的实例可以由线程队214的每个线程216执行。方法400从框402开始,在所述框中计算设备100在线程216a中从线程216a的任务队列218中弹出任务。任务队列218可以被实施为用于存储有待由线程216a执行的任务的任何队列、双端队列、列表、数组、缓冲器或其他数据结构。任务队列218可以存储在与线程216a相关联的线程本地存储设备或其他存储设备中。在一些实施例中,任务队列218可以被其他线程216访问。
在框404中,计算设备100使用线程216a运行任务直至完成。在完成任务之后,在框406中,计算设备100判定线程216a的任务队列218是否为空。如果不是,则方法400循环回到框402以继续执行来自任务队列218的任务。如果任务队列218是空的,则方法400前进到框408。
在框408中,计算设备100使用线程216a将标志220与布尔“假”值交换、并且在本地存储标志220的先前值。例如,标志220的先前值可以被存储在线程216a的私有变量中或以其他方式存储在线程216a的线程本地存储设备中。计算设备100可以使用一个或多个原子操作来交换并在本地存储标志值。在一些实施例中,计算设备100可以替代地使用由任务队列218上的锁保护的非原子操作或其他同步机制。
在框410中,计算设备100使用线程216a进入基本同步屏障。基本同步屏障可以被实施为任何类型的同步屏障,包括树状屏障、线性屏障或非树状屏障(例如分发屏障)。在一些实施例中,基本同步屏障可以被实施为K基数同步屏障,例如题为“Technologies forFast Synchronization Barriers for Many-Core Processing(用于多核处理的快速同步屏障的技术)”的共同未决的美国专利申请序列号XX/XXX,XXX所描述的屏障。
在框412中,计算设备100对本地存储的标记值执行逻辑“OR”规约操作。换句话说,计算设备100对每个线程216的所有本地存储的标志值执行逻辑OR操作,并且将所产生的规约值分配给每个线程216。如下面进一步描述的,规约值指示任何线程216在进入同步屏障之前是否具有失窃任务。换句话说,如果任何线程216的标志220在对应的线程216进入同步屏障之前为真,则规约值为真。
在框414中,如果线程216a在同步屏障中等待其他线程216,则计算设备100可以从另一线程216b(“受害者”线程216b)中窃取一个或多个任务并且将受害者线程216b的标志220设置为真。下面结合图5进一步描述工作窃取过程的一个可能实施例。
在框416中,计算设备100在线程216a中退出基本同步屏障。响应于线程队214的所有其他线程216进入同步屏障,线程216a可以退出同步屏障。因此,在退出同步屏障时,可以确定规约值。
在框418中,计算设备100在线程216a中确定规约值,所述规约值是上面结合框412描述的全规约逻辑OR操作的结果。如上所述,如果为真,则在线程216进入同步屏障之前,从所述线程216中窃取一个或多个任务,并且因此这些任务可能仍在飞行中。在框420中,计算设备100判定规约值是真还是假。如果为真,则方法400循环回到框408,以重试交换标志220并且然后进入屏障。如果规约值为假,则方法400完成。换句话说,计算设备100判定同步屏障是否完成,而不从线程216中窃取任何任务,如果未完成,则重试同步屏障。因此,在方法400的执行过程中由计算设备100执行的同步屏障操作可以被称为事务性同步屏障或事务性屏障。
现在参照图5,在使用中,计算设备100可以执行用于工作窃取的方法500。方法500可以由计算设备100使用线程216a执行,而线程216a在同步屏障内等待,如上面结合图4的框414所描述的。方法500开始于框502,在所述框中计算设备100在线程216a中判定是否退出基本同步屏障。如上面结合图4的框416所描述的,响应于线程队214的所有其他线程216进入同步屏障,线程216a可以退出同步屏障。如果计算设备100确定退出同步屏障,则方法500完成。如果计算设备100确定不退出同步屏障(即,线程216a在同步屏障内等待),则方法500前进到框504。
在框504中,计算设备100在线程216a中确定随机的受害者线程216b。例如,计算设备100可以随机地选择线程标识符、或以其他方式从线程队214的线程216中随机地选择受害者线程216b。在框506中,计算设备100使用线程216a判定受害者线程216b的任务队列218是否为空。如果为空,则方法500循环回到框504以选择另一受害者线程216b。如果受害者线程216b的任务队列218不为空,则方法500前进到框508。
在框508中,计算设备100在线程216a中以原子方式执行多项操作。特别地,计算设备100以原子方式执行下面结合框510-512描述的操作。计算设备100可以例如执行一个或多个原子指令或其他原子操作。在一些实施例中,计算设备100可以替代地使用由受害者线程216b的任务队列218上的锁保护的非原子操作或其他同步机制。
在框510中,计算设备100在线程216a中从受害者线程216b的任务队列218弹出任务。在一些实施例中,在弹出任务之后,方法500可以进行到框512。在不包括框512的实施例中,方法500可以直接进行到下面描述的框514。在框512中,计算设备100在线程216a中判定线程216a的标志220是否为真。如果为真,则方法500退出框508的原子操作并且进行到下面描述的框516。如果标志220为假,则方法500进行到框514,在所述框中计算设备100在线程216a中将受害者线程216b的标志220设置为真。在框512中检查标志220是否为真可以通过在不需要时跳过框514来提高性能;如果标志220已经为真,则线程216a可以确定逻辑OR规约将返回真,而不访问另一线程216b的标志220。
在框516中,计算设备100在线程216a中运行受害者任务直至完成。也就是说,计算设备100执行从受害者线程216b的任务队列218弹出的任务直至完成。在框518中,计算设备100在线程216a中判定线程216a的任务队列218是否为空。如上面结合图4的框406所述,每个线程216在进入同步屏障之前确定其任务队列218是空的。然而,在执行与框516相关的受害者任务期间,可以创建一个或多个新任务并将其添加到线程216a的任务队列218。因此,线程216a检查其本身的任务队列218以判定是否已经添加了任何附加任务。如果任务队列218为空,则方法500循环回到框504以继续执行工作窃取。如果任务队列218不为空,则方法500前进到框520。
在框520中,计算设备100在线程216a中从其任务队列218弹出任务。在框522中,计算设备100在线程216a中运行所述任务直至完成。在完成所述任务之后,方法500循环回到框518以继续执行线程216a的任务队列218中的任何任务。
示例
以下提供了在本文中所公开的技术的说明性示例。所述技术的实施例可以包括以下所描述的示例中的任何一个或多个示例及其任何组合。
示例1包括一种用于多线程化执行的计算设备,所述计算设备包括:事务性屏障模块,所述事务性屏障模块用于:通过由所述计算设备所执行的线程队的第一线程将所述第一线程的任务失窃标志的值与假(false)进行交换,以及将所述任务失窃标志的所述值存储在所述第一线程的临时标志中,其中,所述临时标志对于所述第一线程而言是本地的;以及由所述第一线程在交换所述任务失窃标志的所述值之后进入同步屏障;以及规约模块,所述规约模块用于由所述第一线程判定在进入所述同步屏障时所述线程队的多个临时标志中的任何临时标志是否为真,其中,所述线程队包括包含所述第一线程的多个线程;其中,所述事务性屏障模块进一步用于响应于确定所述多个临时标志中的任何临时标志为真而由所述第一线程重复对所述任务失窃标志的所述值的交换。
示例2包括如示例1所述的主题,并且其中,判定所述线程队的所述多个临时标志中的任何临时标志是否为真包括:响应于进入所述同步屏障而对所述线程队的所述多个临时标志执行逻辑OR规约操作以便为所述线程队的每个线程提供规约值。
示例3包括如示例1和2中任一项所述的主题,并且其中,将所述第一线程的所述任务失窃标志的所述值与假进行交换以及将所述任务失窃标志的所述值存储在所述临时标志中包括以原子方式将所述第一线程的所述任务失窃标志的所述值与假进行交换以及将所述任务失窃标志的所述值存储在所述临时标志中。
示例4包括如示例1-3中任一项所述的主题,并且进一步包括任务执行模块,所述任务执行模块用于:由所述第一线程执行来自所述第一线程的任务队列的第一任务;以及由所述第一线程判定所述任务队列是否为空;其中,交换所述任务失窃标志的所述值包括响应于确定所述任务队列为空而交换所述任务失窃标志的所述值。
示例5包括如示例1-4中任一项所述的主题,并且其中,所述多个临时标志中的每一个临时标志对应于所述线程队的线程。
示例6包括如示例1-5中任一项所述的主题,并且其中,所述事务性屏障模块进一步用于:响应于进入所述同步屏障,由所述第一线程等待所述线程队的其他线程进入所述同步屏障。
示例7包括如示例1-6中任一项所述的主题,并且进一步包括任务窃取模块,所述任务窃取模块用于:响应于等待所述线程队的所述其他线程进入所述同步屏障,由所述第一线程从所述线程队的第二线程中窃取任务;以及响应于窃取所述任务而由所述第一线程将所述第二线程的任务失窃标志设置为真。
示例8包括如示例1-7中任一项所述的主题,并且其中,窃取所述任务以及设置所述第二线程的所述任务失窃标志包括以原子方式窃取所述任务以及设置所述第二线程的所述任务失窃标志。
示例9包括如示例1-8中任一项所述的主题,并且其中,窃取所述任务包括:标识所述线程队的所述第二线程;以及从所述第二线程的任务队列中弹出所述任务;其中,弹出所述任务以及设置所述第二线程的所述任务失窃标志包括以原子方式弹出所述任务以及设置所述第二线程的所述任务失窃标志。
示例10包括如示例1-9中任一项所述的主题,并且其中,标识所述第二线程包括从所述线程队中随机选择所述第二线程。
示例11包括如示例1-10中任一项所述的主题,并且其中,标识所述第二线程进一步包括:判定所述第二线程的所述任务队列是否为空;以及响应于确定所述任务队列为空而重复对所述第二线程的随机选择。
示例12包括如示例1-11中任一项所述的主题,并且其中,窃取所述任务进一步包括:响应于弹出所述任务而由所述第一线程执行所述任务直至完成;响应于执行所述任务直至完成而由所述第一线程判定所述第一线程的任务队列是否为空;响应于确定所述任务队列不为空而由所述第一线程从所述任务队列中弹出第二任务;以及响应于弹出所述第二任务而由所述第一线程执行所述第二任务直至完成。
示例13包括如示例1-12中任一项所述的主题,并且其中,所述任务窃取模块进一步用于:响应于从所述第二线程中窃取所述任务,由所述第一线程判定所述第一线程的所述临时标志是否等于假;其中,将所述第二线程的所述任务失窃标志设置为真进一步包括响应于确定所述临时标志等于假而将所述第二线程的所述任务失窃标志设置为真。
示例14包括一种用于多线程化执行的方法,所述方法包括:通过由计算设备所执行的线程队的第一线程将所述第一线程的任务失窃标志的值与假进行交换,以及将所述任务失窃标志的所述值存储在所述第一线程的临时标志中,其中,所述临时标志对于所述第一线程而言是本地的;由所述第一线程在交换所述任务失窃标志的所述值之后进入同步屏障;由所述第一线程判定在进入所述同步屏障时所述线程队的多个临时标志中的任何临时标志是否为真,其中,所述线程队包括包含所述第一线程的多个线程;以及响应于确定所述多个临时标志中的任何临时标志为真而由所述第一线程重复对所述任务失窃标志的所述值的交换。
示例15包括如示例14所述的主题,并且其中,判定所述线程队的所述多个临时标志中的任何临时标志是否为真包括响应于进入所述同步屏障而对所述线程队的所述多个临时标志执行逻辑OR规约操作以便为所述线程队的每个线程提供规约值。
示例16包括如示例14和15中任一项所述的主题,并且其中,将所述第一线程的所述任务失窃标志的所述值与假进行交换以及将所述任务失窃标志的所述值存储在所述临时标志中包括以原子方式将所述第一线程的所述任务失窃标志的所述值与假进行交换以及将所述任务失窃标志的所述值存储在所述临时标志中。
示例17包括如示例14-16中任一项所述的主题,并且进一步包括:由所述第一线程执行来自所述第一线程的任务队列的第一任务;以及由所述第一线程判定所述任务队列是否为空;其中,交换所述任务失窃标志的所述值包括响应于确定所述任务队列为空而交换所述任务失窃标志的所述值。
示例18包括如示例14-17中任一项所述的主题,并且其中,所述多个临时标志中的每一个临时标志对应于所述线程队的线程。
示例19包括如示例14-18中任一项所述的主题,并且进一步包括:响应于进入所述同步屏障,由所述第一线程等待所述线程队的其他线程进入所述同步屏障。
示例20包括如示例14-19中任一项所述的主题,并且进一步包括:响应于等待所述线程队的所述其他线程进入所述同步屏障,由所述第一线程从所述线程队的第二线程中窃取任务;以及响应于窃取所述任务而由所述第一线程将所述第二线程的任务失窃标志设置为真。
示例21包括如示例14-20中任一项所述的主题,并且其中,窃取所述任务以及设置所述第二线程的所述任务失窃标志包括以原子方式窃取所述任务以及设置所述第二线程的所述任务失窃标志。
示例22包括如示例14-21中任一项所述的主题,并且其中,窃取所述任务包括:标识所述线程队的所述第二线程;以及从所述第二线程的任务队列中弹出所述任务;其中,弹出所述任务以及设置所述第二线程的所述任务失窃标志包括以原子方式弹出所述任务以及设置所述第二线程的所述任务失窃标志。
示例23包括如示例14-22中任一项所述的主题,并且其中,标识所述第二线程包括从所述线程队中随机选择所述第二线程。
示例24包括如示例14-23中任一项所述的主题,并且其中,标识所述第二线程进一步包括:判定所述第二线程的所述任务队列是否为空;以及响应于确定所述任务队列为空而重复对所述第二线程的随机选择。
示例25包括如示例14-24中任一项所述的主题,并且其中,窃取所述任务进一步包括:响应于弹出所述任务而由所述第一线程执行所述任务直至完成;响应于执行所述任务直至完成而由所述第一线程判定所述第一线程的任务队列是否为空;响应于确定所述任务队列不为空而由所述第一线程从所述任务队列中弹出第二任务;以及响应于弹出所述第二任务而由所述第一线程执行所述第二任务直至完成。
示例26包括如示例14-25中任一项所述的主题,并且进一步包括:响应于从所述第二线程中窃取任务而由所述第一线程判定所述第一线程的所述临时标志是否等于假;其中,将所述第二线程的所述任务失窃标志设置为真进一步包括响应于确定所述临时标志等于假而将所述第二线程的所述任务失窃标志设置为真。
示例27包括一种计算设备,所述计算设备包括:处理器;以及存储器,所述存储器具有存储于其中的多条指令,所述指令当被所述处理器执行时使所述计算设备执行如示例14-26中任一项所述的方法。
示例28包括一种或多种机器可读存储介质,所述一种或多种机器可读存储介质包括存储于其上的多条指令,所述指令响应于被执行而使计算设备执行如示例14-26中任一项所述的方法。
示例29包括一种计算设备,所述计算设备包括用于执行如示例14-26中任一项所述的方法的装置。
示例30包括一种用于多线程化执行的计算设备,所述计算设备包括:用于通过由所述计算设备所执行的线程队的第一线程将所述第一线程的任务失窃标志的值与假进行交换以及将所述任务失窃标志的所述值存储在所述第一线程的临时标志中的装置,其中,所述临时标志对于所述第一线程而言是本地的;用于由所述第一线程在交换所述任务失窃标志的所述值之后进入同步屏障的装置;用于由所述第一线程判定在进入所述同步屏障时所述线程队的多个临时标志中的任何临时标志是否为真的装置,其中,所述线程队包括包含所述第一线程的多个线程;以及用于响应于确定所述多个临时标志中的任何临时标志为真而由所述第一线程重复对所述任务失窃标志的对值的交换的装置。
示例31包括如示例30所述的主题,并且其中,用于判定所述线程队的所述多个临时标志中的任何临时标志是否为真的所述装置包括用于响应于进入所述同步屏障而对所述线程队的所述多个临时标志执行逻辑OR规约操作以便为所述线程队的每个线程提供规约值的装置。
示例32包括如示例30和31中任一项所述的主题,并且其中,用于将所述第一线程的所述任务失窃标志的所述值与假进行交换以及将所述任务失窃标志的所述值存储在所述临时标志中的所述装置包括用于以原子方式将所述第一线程的所述任务失窃标志的所述值与假进行交换以及将所述任务失窃标志的所述值存储在所述临时标志中的装置。
示例33包括如示例30-32中任一项所述的主题,并且进一步包括:用于由所述第一线程执行来自所述第一线程的任务队列的第一任务的装置;以及用于由所述第一线程判定所述任务队列是否为空的装置;其中,用于交换所述任务失窃标志的值的所述装置包括用于响应于确定所述任务队列为空而交换所述任务失窃标志的所述值的装置。
示例34包括如示例30-33中任一项所述的主题,并且其中,所述多个临时标志中的每一个临时标志对应于所述线程队的线程。
示例35包括如示例30-34中任一项所述的主题,并且进一步包括:用于响应于进入所述同步屏障而由所述第一线程等待所述线程队的其他线程进入所述同步屏障的装置。
示例36包括如示例30-35中任一项所述的主题,并且进一步包括:用于响应于等待所述线程队的所述其他线程进入所述同步屏障而由所述第一线程从所述线程队的第二线程中窃取任务的装置;以及用于响应于窃取所述任务而由所述第一线程将所述第二线程的任务失窃标志设置为真的装置。
示例37包括如示例30-36中任一项所述的主题,并且其中,用于窃取所述任务的装置以及用于设置所述第二线程的所述任务失窃标志的装置包括用于以原子方式窃取所述任务以及设置所述第二线程的所述任务失窃标志的装置。
示例38包括如示例30-37中任一项所述的主题,并且其中,用于窃取所述任务的所述装置包括:用于标识所述线程队的所述第二线程的装置;以及用于从所述第二线程的任务队列中弹出所述任务的装置;其中,用于弹出所述任务的所述装置以及用于设置所述第二线程的任务失窃标志的所述装置包括用于以原子方式弹出所述任务以及设置所述第二线程的任务失窃标志的装置。
示例39包括如示例30-38中任一项所述的主题,并且其中,用于标识所述第二线程的所述装置包括用于从所述线程队中随机选择所述第二线程的装置。
示例40包括如示例30-39中任一项所述的主题,并且其中,用于标识所述第二线程的所述装置进一步包括:用于判定所述第二线程的所述任务队列是否为空的装置;以及用于响应于确定所述任务队列为空而重复对所述第二线程的随机选择的装置。
示例41包括如示例30-40中任一项所述的主题,并且其中,用于窃取所述任务的所述装置进一步包括:用于响应于弹出所述任务而由所述第一线程执行所述任务直至完成的装置;用于响应于执行所述任务直至完成而由所述第一线程判定所述第一线程的任务队列是否为空的装置;用于响应于确定所述任务队列不为空而由所述第一线程从所述任务队列中弹出第二任务的装置;以及用于响应于弹出所述第二任务而由所述第一线程执行所述第二任务直至完成的装置。
示例42包括如示例30-41中任一项所述的主题,并且进一步包括:用于响应于从所述第二线程窃取所述任务而由所述第一线程判定所述第一线程的所述临时标志是否等于假的装置;其中,用于将所述第二线程的所述任务失窃标志设置为真的所述装置进一步包括用于响应于确定所述临时标志等于假而将所述第二线程的所述任务失窃标志设置为真的装置。
Claims (25)
1.一种用于多线程化执行的计算设备,所述计算设备包括:
事务性屏障模块,所述事务性屏障模块用于:
通过由所述计算设备所执行的线程队的第一线程将所述第一线程的任务失窃标志的值与假进行交换,以及将所述任务失窃标志的所述值存储在所述第一线程的临时标志中,其中,所述临时标志对于所述第一线程而言是本地的;以及
由所述第一线程在交换所述任务失窃标志的所述值之后进入同步屏障;以及
规约模块,所述规约模块用于由所述第一线程判定在进入所述同步屏障时所述线程队的多个临时标志中的任何临时标志是否为真,其中,所述线程队包括包含所述第一线程的多个线程;
其中,所述事务性屏障模块进一步用于:
响应于确定所述多个临时标志中的任何临时标志为真而由所述第一线程重复对所述任务失窃标志的所述值的交换。
2.如权利要求1所述的计算设备,其中,判定所述线程队的所述多个临时标志中的任何临时标志是否为真包括:响应于进入所述同步屏障而对所述线程队的所述多个临时标志执行逻辑OR规约操作以便为所述线程队的每个线程提供规约值。
3.如权利要求1所述的计算设备,其中,将所述第一线程的所述任务失窃标志的所述值与假进行交换以及将所述任务失窃标志的所述值存储在所述临时标志中包括以原子方式将所述第一线程的所述任务失窃标志的所述值与假进行交换以及将所述任务失窃标志的所述值存储在所述临时标志中。
4.如权利要求1所述的计算设备,进一步包括任务执行模块,所述任务执行模块用于:
由所述第一线程执行来自所述第一线程的任务队列的第一任务;以及
由所述第一线程判定所述任务队列是否为空;
其中,交换所述任务失窃标志的所述值包括响应于确定所述任务队列为空而交换所述任务失窃标志的所述值。
5.如权利要求1所述的计算设备,其中,所述多个临时标志中的每一个临时标志对应于所述线程队的线程。
6.如权利要求1-5中任一项所述的计算设备,其中,所述事务性屏障模块进一步用于:响应于进入所述同步屏障,由所述第一线程等待所述线程队的其他线程进入所述同步屏障。
7.如权利要求6所述的计算设备,进一步包括任务窃取模块,所述任务窃取模块用于:
响应于等待所述线程队的所述其他线程进入所述同步屏障,由所述第一线程从所述线程队的第二线程中窃取任务;以及
响应于窃取所述任务,由所述第一线程将所述第二线程的任务失窃标志设置为真。
8.如权利要求7所述的计算设备,其中,窃取所述任务以及设置所述第二线程的所述任务失窃标志包括以原子方式窃取所述任务以及设置所述第二线程的所述任务失窃标志。
9.如权利要求7所述的计算设备,其中,窃取所述任务包括:
标识所述线程队的所述第二线程;以及
从所述第二线程的任务队列中弹出所述任务;
其中,弹出所述任务以及设置所述第二线程的所述任务失窃标志包括以原子方式弹出所述任务以及设置所述第二线程的所述任务失窃标志。
10.如权利要求9所述的计算设备,其中,标识所述第二线程包括从所述线程队中随机选择所述第二线程。
11.如权利要求10所述的计算设备,其中,标识所述第二线程进一步包括:
判定所述第二线程的所述任务队列是否为空;以及
响应于确定所述任务队列为空而重复对所述第二线程的随机选择。
12.如权利要求7所述的计算设备,其中,窃取所述任务进一步包括:
响应于弹出所述任务而由所述第一线程执行所述任务直至完成;
响应于执行所述任务直至完成而由所述第一线程判定所述第一线程的任务队列是否为空;
响应于确定所述任务队列不为空而由所述第一线程从所述任务队列中弹出第二任务;以及
响应于弹出所述第二任务而由所述第一线程执行所述第二任务直至完成。
13.如权利要求7所述的计算设备,其中,所述任务窃取模块进一步用于:
响应于从所述第二线程中窃取所述任务,由所述第一线程判定所述第一线程的所述临时标志是否等于假;
其中,将所述第二线程的所述任务失窃标志设置为真进一步包括响应于确定所述临时标志等于假而将所述第二线程的所述任务失窃标志设置为真。
14.一种用于多线程化执行的方法,所述方法包括:
通过由计算设备所执行的线程队的第一线程将所述第一线程的任务失窃标志的值与假进行交换,以及将所述任务失窃标志的所述值存储在所述第一线程的临时标志中,其中,所述临时标志对于所述第一线程而言是本地的;
由所述第一线程在交换所述任务失窃标志的所述值之后进入同步屏障;
由所述第一线程判定在进入所述同步屏障时所述线程队的多个临时标志中的任何临时标志是否为真,其中,所述线程队包括包含所述第一线程的多个线程;以及
响应于确定所述多个临时标志中的任何临时标志为真而由所述第一线程重复对所述任务失窃标志的所述值的交换。
15.如权利要求14所述的方法,其中,判定所述线程队的所述多个临时标志中的任何临时标志是否为真包括响应于进入所述同步屏障而对所述线程队的所述多个临时标志执行逻辑OR规约操作以便为所述线程队的每个线程提供规约值。
16.如权利要求14所述的方法,其中,将所述第一线程的所述任务失窃标志的所述值与假进行交换以及将所述任务失窃标志的所述值存储在所述临时标志中包括以原子方式将所述第一线程的所述任务失窃标志的所述值与假进行交换以及将所述任务失窃标志的所述值存储在所述临时标志中。
17.如权利要求14所述的方法,进一步包括:响应于进入所述同步屏障,由所述第一线程等待所述线程队的其他线程进入所述同步屏障。
18.如权利要求17所述的方法,进一步包括:
响应于等待所述线程队的所述其他线程进入所述同步屏障,由所述第一线程从所述线程队的第二线程中窃取任务;以及
响应于窃取所述任务,由所述第一线程将所述第二线程的任务失窃标志设置为真。
19.如权利要求18所述的方法,其中,窃取所述任务以及设置所述第二线程的所述任务失窃标志包括以原子方式窃取所述任务以及设置所述第二线程的所述任务失窃标志。
20.如权利要求18所述的方法,其中,窃取所述任务包括:
标识所述线程队的所述第二线程;以及
从所述第二线程的任务队列中弹出所述任务;
其中,弹出所述任务以及设置所述第二线程的所述任务失窃标志包括以原子方式弹出所述任务以及设置所述第二线程的所述任务失窃标志。
21.如权利要求18所述的方法,其中,窃取所述任务进一步包括:
响应于弹出所述任务而由所述第一线程执行所述任务直至完成;
响应于执行所述任务直至完成而由所述第一线程判定所述第一线程的任务队列是否为空;
响应于确定所述任务队列不为空而由所述第一线程从所述任务队列中弹出第二任务;以及
响应于弹出所述第二任务而由所述第一线程执行所述第二任务直至完成。
22.如权利要求18所述的方法,进一步包括:
响应于从所述第二线程中窃取所述任务而由所述第一线程判定所述第一线程的所述临时标志是否等于假;
其中,将所述第二线程的所述任务失窃标志设置为真进一步包括响应于确定所述临时标志等于假而将所述第二线程的所述任务失窃标志设置为真。
23.一种计算设备,包括:
处理器;以及
存储器,所述存储器具有存储于其中的多条指令,所述指令当由所述处理器执行时使所述计算设备执行如权利要求14-22中任一项所述的方法。
24.一种或多种机器可读存储介质,包括存储于其上的多条指令,所述指令响应于被执行而使计算设备执行如权利要求14-22中任一项所述的方法。
25.一种计算设备,所述计算设备包括用于执行如权利要求14至22中任一项所述的方法的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/568,831 US9348658B1 (en) | 2014-12-12 | 2014-12-12 | Technologies for efficient synchronization barriers with work stealing support |
US14/568,831 | 2014-12-12 | ||
PCT/US2015/060149 WO2016094016A1 (en) | 2014-12-12 | 2015-11-11 | Technologies for efficient synchronization barriers with work stealing support |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107250984A true CN107250984A (zh) | 2017-10-13 |
CN107250984B CN107250984B (zh) | 2020-09-29 |
Family
ID=55969692
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580061987.0A Active CN107250984B (zh) | 2014-12-12 | 2015-11-11 | 用于利用工作窃取支持进行有效同步屏障的技术 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9348658B1 (zh) |
EP (1) | EP3230860B1 (zh) |
JP (1) | JP7030514B2 (zh) |
CN (1) | CN107250984B (zh) |
WO (1) | WO2016094016A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10860378B2 (en) * | 2015-07-01 | 2020-12-08 | Oracle International Corporation | System and method for association aware executor service in a distributed computing environment |
US10318355B2 (en) * | 2017-01-24 | 2019-06-11 | Oracle International Corporation | Distributed graph processing system featuring interactive remote control mechanism including task cancellation |
GB2569269B (en) | 2017-10-20 | 2020-07-15 | Graphcore Ltd | Synchronization in a multi-tile processing arrangement |
US10977087B2 (en) | 2018-08-07 | 2021-04-13 | International Business Machines Corporation | Steal one-process many work-stealing |
US10725817B2 (en) * | 2018-11-09 | 2020-07-28 | International Business Machines Corporation | Reducing spin count in work-stealing for copying garbage collection based on average object references |
US11327793B2 (en) * | 2020-02-18 | 2022-05-10 | International Business Machines Corporation | Garbage collection work stealing mechanism |
US11461130B2 (en) | 2020-05-26 | 2022-10-04 | Oracle International Corporation | Methodology for fast and seamless task cancelation and error handling in distributed processing of large graph data |
KR102231050B1 (ko) * | 2020-07-08 | 2021-03-23 | 한영산업주식회사 | 신발 보강재용 부직포 |
US11645200B2 (en) * | 2020-11-24 | 2023-05-09 | International Business Machines Corporation | Reducing load balancing work stealing |
CN115543343B (zh) * | 2022-11-28 | 2023-04-07 | 北京大学 | 变量跨线程操作方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1811699A (zh) * | 2001-06-22 | 2006-08-02 | 英特尔公司 | 用于解决多线程处理器中指令饥饿的方法及设备 |
US20070143755A1 (en) * | 2005-12-16 | 2007-06-21 | Intel Corporation | Speculative execution past a barrier |
US20080201629A1 (en) * | 2007-02-20 | 2008-08-21 | International Business Machines Corporation | Method and system for detecting synchronization errors in programs |
US7512950B1 (en) * | 2003-08-14 | 2009-03-31 | Sun Microsystems, Inc. | Barrier synchronization object for multi-threaded applications |
US8065681B2 (en) * | 2007-10-12 | 2011-11-22 | International Business Machines Corporation | Generic shared memory barrier |
US20120304178A1 (en) * | 2011-05-24 | 2012-11-29 | International Business Machines Corporation | Concurrent reduction optimizations for thieving schedulers |
US20130042245A1 (en) * | 2011-08-10 | 2013-02-14 | International Business Machines Corporation | Performing A Global Barrier Operation In A Parallel Computer |
CN103262036A (zh) * | 2010-12-17 | 2013-08-21 | 英特尔公司 | 非阻塞无等待数据并行调度器 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6823351B1 (en) * | 2000-05-15 | 2004-11-23 | Sun Microsystems, Inc. | Work-stealing queues for parallel garbage collection |
US7945911B1 (en) * | 2005-06-03 | 2011-05-17 | Oracle America, Inc. | Barrier synchronization method and apparatus for work-stealing threads |
US8832712B2 (en) * | 2009-09-09 | 2014-09-09 | Ati Technologies Ulc | System and method for synchronizing threads using shared memory having different buffer portions for local and remote cores in a multi-processor system |
JP5994601B2 (ja) * | 2012-11-27 | 2016-09-21 | 富士通株式会社 | 並列計算機、並列計算機の制御プログラム及び並列計算機の制御方法 |
-
2014
- 2014-12-12 US US14/568,831 patent/US9348658B1/en not_active Expired - Fee Related
-
2015
- 2015-11-11 JP JP2017526531A patent/JP7030514B2/ja active Active
- 2015-11-11 WO PCT/US2015/060149 patent/WO2016094016A1/en active Application Filing
- 2015-11-11 EP EP15866755.0A patent/EP3230860B1/en active Active
- 2015-11-11 CN CN201580061987.0A patent/CN107250984B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1811699A (zh) * | 2001-06-22 | 2006-08-02 | 英特尔公司 | 用于解决多线程处理器中指令饥饿的方法及设备 |
US7512950B1 (en) * | 2003-08-14 | 2009-03-31 | Sun Microsystems, Inc. | Barrier synchronization object for multi-threaded applications |
US20070143755A1 (en) * | 2005-12-16 | 2007-06-21 | Intel Corporation | Speculative execution past a barrier |
US20080201629A1 (en) * | 2007-02-20 | 2008-08-21 | International Business Machines Corporation | Method and system for detecting synchronization errors in programs |
US8065681B2 (en) * | 2007-10-12 | 2011-11-22 | International Business Machines Corporation | Generic shared memory barrier |
CN103262036A (zh) * | 2010-12-17 | 2013-08-21 | 英特尔公司 | 非阻塞无等待数据并行调度器 |
US20120304178A1 (en) * | 2011-05-24 | 2012-11-29 | International Business Machines Corporation | Concurrent reduction optimizations for thieving schedulers |
US20130042245A1 (en) * | 2011-08-10 | 2013-02-14 | International Business Machines Corporation | Performing A Global Barrier Operation In A Parallel Computer |
Also Published As
Publication number | Publication date |
---|---|
EP3230860A4 (en) | 2018-08-15 |
JP7030514B2 (ja) | 2022-03-07 |
US9348658B1 (en) | 2016-05-24 |
EP3230860B1 (en) | 2019-10-09 |
JP2017537393A (ja) | 2017-12-14 |
US20160170812A1 (en) | 2016-06-16 |
EP3230860A1 (en) | 2017-10-18 |
CN107250984B (zh) | 2020-09-29 |
WO2016094016A1 (en) | 2016-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107250984A (zh) | 用于利用工作窃取支持进行有效同步屏障的技术 | |
US11138048B2 (en) | Work stealing in heterogeneous computing systems | |
CN105224444B (zh) | 日志生成方法及装置 | |
US7373475B2 (en) | Methods for optimizing memory unit usage to maximize packet throughput for multi-processor multi-threaded architectures | |
Sarker et al. | Mvc architecture driven design and implementation of java framework for developing desktop application | |
US9760410B2 (en) | Technologies for fast synchronization barriers for many-core processing | |
CN105934744A (zh) | 用于在硬件中跨多个处理单元/处理器划分并同步处理任务的系统和方法 | |
CN109447253B (zh) | 显存分配的方法、装置、计算设备及计算机存储介质 | |
US20190146847A1 (en) | Dynamic distributed resource management | |
CN104461862B (zh) | 数据处理系统以及线程崩溃后的资源恢复方法和装置 | |
Valero‐Lara et al. | cuThomasBatch and cuThomasVBatch, CUDA routines to compute batch of tridiagonal systems on NVIDIA GPUs | |
CN107577523A (zh) | 一种任务执行的方法及装置 | |
CN109154897A (zh) | 可重新配置的分布式处理 | |
CN109976907A (zh) | 任务分配方法和系统、电子设备、计算机可读介质 | |
CN110990329B (zh) | 一种联邦计算高可用方法、设备及介质 | |
CN104615445A (zh) | 一种基于原子操作的设备io队列方法 | |
EP2710480B1 (en) | An interconnect structure to support the execution of instruction sequences by a plurality of engines | |
US10305740B2 (en) | System and method for performing mass renaming of list of items at run-time with variable differentiation factor | |
CN108415779A (zh) | 用于通过主机结构接口的队列管理的技术 | |
US20100199284A1 (en) | Information processing apparatus, self-testing method, and storage medium | |
KR101233664B1 (ko) | 멀티 코어 시스템에서 메모리 셔플링을 이용한 메모리 해킹 방지 방법 및 장치 | |
KR101448861B1 (ko) | 동기적 메시지 기반 대량 병렬처리 시스템 | |
CN114691566A (zh) | Ai模型的运行方法、加载方法、装置及ic芯片 | |
CN104267929A (zh) | 计算系统以及在该计算系统中操作锁的方法 | |
KR102466247B1 (ko) | 오케스트레이터 환경에서 에이전트를 이용한 컨테이너 관리 장치 및 관리 방법 |
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 |