CN112783663A - 一种可扩展的栅栏同步方法及设备 - Google Patents
一种可扩展的栅栏同步方法及设备 Download PDFInfo
- Publication number
- CN112783663A CN112783663A CN202110055048.2A CN202110055048A CN112783663A CN 112783663 A CN112783663 A CN 112783663A CN 202110055048 A CN202110055048 A CN 202110055048A CN 112783663 A CN112783663 A CN 112783663A
- Authority
- CN
- China
- Prior art keywords
- fence
- synchronization
- local
- global
- request
- 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
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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种可扩展的栅栏同步方法及设备,本发明方法包括:接收并解析超节点内核心的进程发起的栅栏同步请求;若收到的栅栏同步请求包含超节点内核心的进程栅栏同步以及超节点间核心的进程栅栏同步,则超节点内的本地栅栏通过本地栅栏实例执行本超节点内核心的进程的栅栏同步,发送全局更新请求给超节点间的全局栅栏,超节点间的全局栅栏通过全局栅栏实例执行超节点间核心的进程的栅栏同步,发送栅栏释放信号给各个发起全局更新请求的超节点内的本地栅栏,收到栅栏释放信号的各个超节点内的本地栅栏释放本地栅栏实例并发送读返回信号。本发明采用层次化的栅栏设计,减少了栅栏同步过程中的通信量,适用于大规模系统,具有良好的扩展性能。
Description
技术领域
本发明涉及处理器的栅栏同步技术,具体涉及一种可扩展的栅栏同步方法及设备。
背景技术
传统的单核处理器通过采用超标量以及流水线等技术提高处理器的主频,进而达到提升处理器性能的目的。提升处理器的主频导致功耗的增大,功耗增大的速度高于处理器性能的提升,同时带来散热问题。随着半导体制造工艺的发展,芯片上集成的晶体管数量越来越多。单核性能的提升几乎走到尽头,所以增加单片处理器集成的核心数量,利用进程级并行技术使程序运行在多个核心上来提升性能。现代处理器一般拥有较多的核心,一个任务可能由运行在不同核心上的多个进程共同完成,这些进程共享一块存储空间,为了保持内存访问的一致性,栅栏同步机制十分重要。软件栅栏的解决方案往往效率较低,传统的硬件栅栏同步一方面共用互连网络,所以当栅栏同步请求十分频繁时,会产生大量的同步报文,造成严重的网络竞争;另一方面,扁平化的栅栏同步网络扩展性较差,当处理器核心上执行的进程到达同步时需要向该装置发送通知消息,产生了严重的访问瓶颈。。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种可扩展的栅栏同步方法及设备,本发明采用层次化的栅栏设计,减少了栅栏同步过程中的通信量,适用于大规模系统,具有良好的扩展性能。
为了解决上述技术问题,本发明采用的技术方案为:
一种可扩展的栅栏同步方法,包括:
1)接收并解析超节点内核心的进程发起的栅栏同步请求;若收到的栅栏同步请求包含超节点内核心的进程栅栏同步以及超节点间核心的进程栅栏同步,则跳转执行下一步;
2)超节点内的本地栅栏通过本地栅栏实例执行本超节点内核心的进程的栅栏同步,在完成本超节点内核心的进程的栅栏同步后发送全局更新请求给超节点间的全局栅栏;
3)超节点间的全局栅栏通过全局栅栏实例执行超节点间核心的进程的栅栏同步,在完成超节点间核心的进程的栅栏同步后发送栅栏释放信号给各个发起全局更新请求的超节点内的本地栅栏;
4)收到栅栏释放信号的各个超节点内的本地栅栏释放本地栅栏实例,并发送读返回信号给发起栅栏同步请求的各个进程。
可选地,步骤1)中解析超节点内核心的进程发起的栅栏同步请求是指解析获得栅栏同步请求中的栅栏同步编号ID、栅栏同步进程总数Total_Count以及超节点内进程总数Local_Count;所述收到的栅栏同步请求包含超节点内核心的进程栅栏同步以及超节点间核心的进程栅栏同步是指:超节点内进程总数Local_Count大于或等于1、且栅栏同步进程总数Total_Count大于或等于超节点内进程总数Local_Count。
可选地,步骤1)中解析超节点内核心的进程发起的栅栏同步请求时还包括对栅栏同步请求进行合法性判断的步骤,若栅栏同步编号ID超过预设范围、或栅栏同步进程总数Total_Count小于超节点内进程总数Local_Count,则判定栅栏同步请求不合法,返回错误并退出;否则继续往下执行。
可选地,步骤2)包括:
2.1)判断栅栏同步请求的栅栏同步编号ID是否已经在超节点内的本地栅栏中登记,若尚未登记,则在本地栅栏中分配本地栅栏实例LBar并登记栅栏同步编号ID和超节点内进程总数Local_Count、并启动计时,并初始化设置本地的已到达进程数量Arrived_Count为1;若已经登记,则将本地的已到达进程数量Arrived_Count加1;
2.2)本地栅栏判断分配给该栅栏同步编号ID的本地栅栏实例LBar中本地的已到达进程数量Arrived_Count、超节点内进程总数Local_Count两者相等或者超时是否成立,若两者相等或者超时是否成立,则判定该栅栏同步编号ID已完成本超节点内核心的进程的栅栏同步,跳转执行下一步;
2.3)本地栅栏发送包含栅栏同步编号ID、栅栏同步进程总数Total_Count以及本地的已到达进程数量Arrived_Count的全局更新请求给超节点间的全局栅栏。
可选地,步骤3)包括:
3.1)判断全局更新请求的栅栏同步编号ID是否已经在超节点间的全局栅栏中登记,若尚未登记,则在全局栅栏中分配全局栅栏实例GBar并登记栅栏同步编号ID和栅栏同步进程总数Total_Count、并启动计时,并初始化设置全局的已到达进程数量Arrived_Count为全局更新请求中携带的本地的已到达进程数量Arrived_Count;若已经登记,则将全局的已到达进程数量Arrived_Count加上全局更新请求中携带的本地的已到达进程数量Arrived_Count;
3.2)全局栅栏判断分配给该栅栏同步编号ID的全局栅栏实例GBar中全局的已到达进程数量Arrived_Countt、栅栏同步进程总数Total_Count两者相等或者超时是否成立,若两者相等或者超时是否成立,则判定该栅栏同步编号ID已完成超节点间核心的进程的栅栏同步,跳转执行下一步;
3.3)发送栅栏释放信号给各个发起全局更新请求的超节点内的本地栅栏。
可选地,步骤1)中解析超节点内核心的进程发起的栅栏同步请求后,还包括在超节点内进程总数Local_Count等于1的情况下执行的下述超节点间核心的进程栅栏同步的步骤:判断栅栏同步请求的栅栏同步编号ID是否已经在超节点间的全局栅栏中登记,若尚未登记,则在全局栅栏中分配全局栅栏实例GBar并登记栅栏同步编号ID和栅栏同步进程总数Total_Count、并启动计时,并初始化设置全局的已到达进程数量Arrived_Count为1;若已经登记,则将全局的已到达进程数量Arrived_Count加1;全局栅栏判断分配给该栅栏同步编号ID的全局栅栏实例GBar中全局的已到达进程数量Arrived_Countt、栅栏同步进程总数Total_Count两者相等或者超时是否成立,若两者相等或者超时是否成立,则判定该栅栏同步编号ID已完成超节点间核心的进程的栅栏同步,释放分配给该栅栏同步编号ID的全局栅栏实例GBar,并发送读返回信号给发起栅栏同步请求的各个进程。
可选地,步骤1)中解析超节点内核心的进程发起的栅栏同步请求后,还包括在栅栏同步进程总数Total_Count等于超节点内进程总数Local_Count的情况下执行的下述本超节点内核心的进程栅栏同步的步骤:判断栅栏同步请求的栅栏同步编号ID是否已经在超节点内的本地栅栏中登记,若尚未登记,则在本地栅栏中分配本地栅栏实例LBar并登记栅栏同步编号ID和超节点内进程总数Local_Count、并启动计时,并初始化设置本地的已到达进程数量Arrived_Count为1;若已经登记,则将本地的已到达进程数量Arrived_Count加1;本地栅栏判断分配给该栅栏同步编号ID的本地栅栏实例LBar中本地的已到达进程数量Arrived_Count、超节点内进程总数Local_Count两者相等或者超时是否成立,若两者相等或者超时是否成立,则判定该栅栏同步编号ID已完成本超节点内核心的进程的栅栏同步,释放分配给该栅栏同步编号ID的本地栅栏实例LBar,并发送读返回信号给发起栅栏同步请求的各个进程。
此外,本发明还提供一种可扩展的栅栏同步设备,包括相互连接的微处理器和存储器,其特征在于,该微处理器被编程或配置以执行所述可扩展的栅栏同步方法的步骤。
此外,本发明还提供一种计算机可读存储介质,其特征在于,该计算机可读存储介质中存储有被编程或配置以执行所述可扩展的栅栏同步方法的计算机程序。
此外,本发明还提供一种用于应用所述可扩展的栅栏同步方法的设备,包括全局栅栏和分别分布于每一个超节点中的本地栅栏,所述本地栅栏包括栅栏同步控制器和多个本地栅栏实例LBar,所述栅栏同步控制器包括:信号解析模块,用于接收并解析超节点内核心的进程发起的栅栏同步请求;本地/全局栅栏同步调度单元,用于根据栅栏同步请求的解析结果将其发送给本地栅栏或者全局栅栏;本地栅栏分配选择单元,用于为发送给本地栅栏的栅栏同步请求分配或者选择一个本地栅栏实例LBar处理该栅栏同步请求;所述本地栅栏实例LBar用于针对达到的栅栏同步请求进行栅栏同步,且在栅栏同步请求的所有进程都到达后,若为超节点内核心的进程栅栏同步,则释放本地栅栏实例LBar并发送读返回信号给发起栅栏同步请求的各个进程,若为包含超节点内核心的进程栅栏同步以及超节点间核心的进程栅栏同步,则向全局栅栏发送全局更新请求;所述全局栅栏包括全局栅栏分配选择单元和多个全局栅栏实例GBar,所述全局栅栏分配选择单元的输入端通过先入先出队列FIFO与各个本地栅栏中本地栅栏实例LBar的输出端相连,所述全局栅栏分配选择单元用于在通过超节点间的全局栅栏处理该栅栏同步请求时,为该栅栏同步请求分配或者选择一个全局栅栏实例GBar处理该栅栏同步请求,所述全局栅栏实例GBar用于针对达到的栅栏同步请求进行栅栏同步,且在栅栏同步请求的所有进程都到达后,若为超节点间核心的进程栅栏同步,则释放全局栅栏实例GBar并发送读返回信号给发起栅栏同步请求的各个进程,若为包含超节点内核心的进程栅栏同步以及超节点间核心的进程栅栏同步,则向发送全局更新请求发送释放栅栏信号,使得对应的本地栅栏实例LBar释放本地栅栏实例LBar并发送读返回信号给发起栅栏同步请求的各个进程;每一个所述先入先出队列FIFO均配置有一个计时器,当先入先出队列FIFO的FIFO头部存在请求时计时器开始计时,当计时超过设定阈值时判定出现死锁阻塞,将FIFO头部的请求移入FIFO尾部,并继续处理下一请求。
和现有技术相比,本发明具有下述优点:本发明方法包括接收并解析超节点内核心的进程发起的栅栏同步请求;若收到的栅栏同步请求包含超节点内核心的进程栅栏同步以及超节点间核心的进程栅栏同步,则超节点内的本地栅栏通过本地栅栏实例执行本超节点内核心的进程的栅栏同步,发送全局更新请求给超节点间的全局栅栏,超节点间的全局栅栏通过全局栅栏实例执行超节点间核心的进程的栅栏同步,发送栅栏释放信号给各个发起全局更新请求的超节点内的本地栅栏,收到栅栏释放信号的各个超节点内的本地栅栏释放本地栅栏实例并发送读返回信号。本发明采用层次化的栅栏设计,减少了栅栏同步过程中的通信量,适用于大规模系统,具有良好的扩展性能。
附图说明
图1为本发明实施例方法的基本流程图。
图2为本发明实施例中一次栅栏同步操作的流程图。
图3为本发明实施例中全局栅栏实例的操作流程图。
图4为本发明实施例中本地栅栏实例的操作流程图。
图5为本发明实施例中用于应用所述可扩展的栅栏同步方法的设备的结构原理图。
图6为本发明实施例中防死锁阻塞机制的执行流程示意图。
具体实施方式
如图1和图2所示,本实施例可扩展的栅栏同步方法包括:
1)接收并解析超节点内核心的进程发起的栅栏同步请求;若收到的栅栏同步请求包含超节点内核心的进程栅栏同步以及超节点间核心的进程栅栏同步(混合型进程栅栏同步),则跳转执行下一步;
2)超节点内的本地栅栏通过本地栅栏实例执行本超节点内核心的进程的栅栏同步,在完成本超节点内核心的进程的栅栏同步后发送全局更新请求给超节点间的全局栅栏;
3)超节点间的全局栅栏通过全局栅栏实例执行超节点间核心的进程的栅栏同步,在完成超节点间核心的进程的栅栏同步后发送栅栏释放信号给各个发起全局更新请求的超节点内的本地栅栏;
4)收到栅栏释放信号的各个超节点内的本地栅栏释放本地栅栏实例,并发送读返回信号给发起栅栏同步请求的各个进程。
本实施例中,步骤1)中解析超节点内核心的进程发起的栅栏同步请求是指解析获得栅栏同步请求中的栅栏同步编号ID、栅栏同步进程总数Total_Count以及超节点内进程总数Local_Count;收到的栅栏同步请求包含超节点内核心的进程栅栏同步以及超节点间核心的进程栅栏同步是指:超节点内进程总数Local_Count大于或等于1、且栅栏同步进程总数Total_Count大于或等于超节点内进程总数Local_Count。此外,识别包含超节点内核心的进程栅栏同步以及超节点间核心的进程栅栏同步(混合型进程栅栏同步)的方式也可以根据需要采用特定的标识来实现。
本实施例中,步骤1)中解析超节点内核心的进程发起的栅栏同步请求时还包括对栅栏同步请求进行合法性判断的步骤,若栅栏同步编号ID超过预设范围、或栅栏同步进程总数Total_Count小于超节点内进程总数Local_Count,则判定栅栏同步请求不合法,返回错误并退出;否则继续往下执行。
本实施例中,步骤2)包括:
2.1)判断栅栏同步请求的栅栏同步编号ID是否已经在超节点内的本地栅栏中登记,若尚未登记,则在本地栅栏中分配本地栅栏实例LBar并登记栅栏同步编号ID和超节点内进程总数Local_Count、并启动计时,并初始化设置本地的已到达进程数量Arrived_Count为1;若已经登记,则将本地的已到达进程数量Arrived_Count加1;
2.2)本地栅栏判断分配给该栅栏同步编号ID的本地栅栏实例LBar中本地的已到达进程数量Arrived_Count、超节点内进程总数Local_Count两者相等或者超时是否成立,若两者相等或者超时是否成立,则判定该栅栏同步编号ID已完成本超节点内核心的进程的栅栏同步,跳转执行下一步;
2.3)本地栅栏发送包含栅栏同步编号ID、栅栏同步进程总数Total_Count以及本地的已到达进程数量Arrived_Count的全局更新请求给超节点间的全局栅栏。
本实施例中,步骤3)包括:
3.1)判断全局更新请求的栅栏同步编号ID是否已经在超节点间的全局栅栏中登记,若尚未登记,则在全局栅栏中分配全局栅栏实例GBar并登记栅栏同步编号ID和栅栏同步进程总数Total_Count、并启动计时,并初始化设置全局的已到达进程数量Arrived_Count为全局更新请求中携带的本地的已到达进程数量Arrived_Count;若已经登记,则将全局的已到达进程数量Arrived_Count加上全局更新请求中携带的本地的已到达进程数量Arrived_Count;
3.2)全局栅栏判断分配给该栅栏同步编号ID的全局栅栏实例GBar中全局的已到达进程数量Arrived_Countt、栅栏同步进程总数Total_Count两者相等或者超时是否成立,若两者相等或者超时是否成立,则判定该栅栏同步编号ID已完成超节点间核心的进程的栅栏同步,跳转执行下一步;
3.3)发送栅栏释放信号给各个发起全局更新请求的超节点内的本地栅栏。
参见图1和图2,本实施例步骤1)中解析超节点内核心的进程发起的栅栏同步请求后,还包括在超节点内进程总数Local_Count等于1的情况下执行的下述超节点间核心的进程栅栏同步的步骤:判断栅栏同步请求的栅栏同步编号ID是否已经在超节点间的全局栅栏中登记,若尚未登记,则在全局栅栏中分配全局栅栏实例GBar并登记栅栏同步编号ID和栅栏同步进程总数Total_Count、并启动计时,并初始化设置全局的已到达进程数量Arrived_Count为1;若已经登记,则将全局的已到达进程数量Arrived_Count加1;全局栅栏判断分配给该栅栏同步编号ID的全局栅栏实例GBar中全局的已到达进程数量Arrived_Countt、栅栏同步进程总数Total_Count两者相等或者超时是否成立,若两者相等或者超时是否成立,则判定该栅栏同步编号ID已完成超节点间核心的进程的栅栏同步,释放分配给该栅栏同步编号ID的全局栅栏实例GBar,并发送读返回信号给发起栅栏同步请求的各个进程。
如图3所示,SuperNode_Bar_First_Arrived表示尚未登记的栅栏同步请求/全局更新请求首次到达,首次到达需要在全局栅栏中分配全局栅栏实例GBar并登记栅栏同步编号ID和栅栏同步进程总数Total_Count、并启动计时器Bar_Timer计时,并初始化设置全局的已到达进程数量Arrived_Count为1;SuperNode_Bar_Arrived表示已经登记的栅栏同步请求/全局更新请求再次到达,再次到达则将全局的已到达进程数量Arrived_Count加1。上侧的“=?”表示判断分配给该栅栏同步编号ID的全局栅栏实例GBar中全局的已到达进程数量Arrived_Countt、栅栏同步进程总数Total_Count两者是否相等,下侧的“=?”表示动计时器Bar_Timer的计时时间、预设时间阈值Bar_TimeOut两者是否相等,两个“=?”任一成立,则会触发释放分配给该栅栏同步编号ID的全局栅栏实例GBar:若为普通栅栏同步请求,则直接释放分配给该栅栏同步编号ID的全局栅栏实例GBar,并发送读返回信号给发起栅栏同步请求的各个进程;若为全局更新请求,还需要更新本地栅栏,以使得本地栅栏释放分配给该栅栏同步编号ID的本地栅栏实例LBar,并发送读返回信号给发起栅栏同步请求的各个进程。栅栏同步请求/全局更新请求的到达,都会触发更新到达向量Arrived_Vector以记录达到的进程,如果检测到所有进程全部达到(All_Arrived),则会触发:计时器Bar_Timer停止计时并清零,全局的已到达进程数量Arrived_Count清零,到达向量Arrived_Vector清零。此外,图3中的Bar_TimeOut_set为设置预设时间阈值Bar_TimeOut的操作。
本实施例中,全局栅栏通过先入先出队列FIFO接收各个超节点的本地栅栏发出的栅栏同步请求/全局更新请求,且每一个先入先出队列FIFO均配置有一个计时器,当先入先出队列FIFO的FIFO头部存在请求时计时器开始计时,当计时超过设定阈值时判定出现死锁阻塞,将FIFO头部的请求移入FIFO尾部,并继续处理下一请求。
参见图1和图2,本实施例步骤1)中解析超节点内核心的进程发起的栅栏同步请求后,还包括在栅栏同步进程总数Total_Count等于超节点内进程总数Local_Count的情况下执行的下述本超节点内核心的进程栅栏同步的步骤:判断栅栏同步请求的栅栏同步编号ID是否已经在超节点内的本地栅栏中登记,若尚未登记,则在本地栅栏中分配本地栅栏实例LBar并登记栅栏同步编号ID和超节点内进程总数Local_Count、并启动计时,并初始化设置本地的已到达进程数量Arrived_Count为1;若已经登记,则将本地的已到达进程数量Arrived_Count加1;本地栅栏判断分配给该栅栏同步编号ID的本地栅栏实例LBar中本地的已到达进程数量Arrived_Count、超节点内进程总数Local_Count两者相等或者超时是否成立,若两者相等或者超时是否成立,则判定该栅栏同步编号ID已完成本超节点内核心的进程的栅栏同步,释放分配给该栅栏同步编号ID的本地栅栏实例LBar,并发送读返回信号给发起栅栏同步请求的各个进程。
如图4所示,Bar_First_Arrived表示尚未登记的栅栏同步请求首次到达,首次到达需要在本地栅栏中分配本地栅栏实例LBar并登记栅栏同步编号ID和栅栏同步进程总数Total_Count、并启动计时器Bar_Timer计时,并初始化设置本地的已到达进程数量Arrived_Count为1;Bar_Arrived表示已经登记的栅栏同步请求再次到达,再次到达则将本地的已到达进程数量Arrived_Count加1。上侧的“=?”表示判断分配给该栅栏同步编号ID的本地栅栏实例LBar中本地的已到达进程数量Arrived_Countt、超节点内进程总数Local_Count两者是否相等,下侧的“Total_Count=Local_Count”表示超节点内进程总数Local_Count、栅栏同步进程总数Total_Count两者相等的情况下会触发发送全局更新请求给超节点间的全局栅栏。下侧的“=?”表示动计时器Bar_Timer的计时时间、预设时间阈值Bar_TimeOut两者是否相等,两个“=?”任一成立,则会触发释放分配给该栅栏同步编号ID的本地栅栏实例LBar:若为普通栅栏同步请求,则直接释放分配给该栅栏同步编号ID的本地栅栏实例LBar,并发送读返回信号给发起栅栏同步请求的各个进程;若为本地更新请求,还需要更新本地栅栏,以使得本地栅栏释放分配给该栅栏同步编号ID的本地栅栏实例LBar,并发送读返回信号给发起栅栏同步请求的各个进程。栅栏同步请求的到达,都会触发更新到达向量Arrived_Vector以记录达到的进程,如果检测到所有进程全部达到(All_Arrived),则会触发:计时器Bar_Timer停止计时并清零,本地的已到达进程数量Arrived_Count清零,到达向量Arrived_Vector清零。此外,图4中的Bar_TimeOut_set为设置预设时间阈值Bar_TimeOut的操作。
运行在某超节点的某个核心的进程执行到栅栏同步点,发出load请求(加载请求),经过译码后为栅栏同步请求,相关地址信息通过片上网络发送到本地栅栏。本地栅栏中的栅栏同步控制器接收到栅栏同步请求,经过对地址信息解码,获取到参与此次栅栏同步线程总数、此次栅栏同步的编号以及参与此次栅栏同步超节点内进程总数这三个信息。根据这三个信息有不同的处理情况:1、请求不合法:栅栏同步编号ID超出允许的范围;超节点内进程总数Local_Count大于栅栏同步进程总数Total_Count。2、超节点内进程总数Local_Count为1,栅栏同步进程总数Total_Count大于1:直接将请求发送到全局栅栏进行处理。3、超节点内进程总数Local_Count大于1,栅栏同步进程总数Total_Count大于或者等于超节点内进程总数Local_Count:若本地栅栏实例中有此同步编号,本地栅栏分配选择单元直接将请求发送到该栅栏实例;若本地栅栏实例中没有此同步编号,本地栅栏分配选择单元分配一个栅栏实例给此次同步请求,将同步请求发送到该栅栏实例进行处理。本地栅栏实例接收到同步信息后,若是第一次接收到,则需要登记此次请求同步编号,已到达的进程数加1,同时开始计时。在这之后接收到请求只需要更新已到达进程数,直到所有本超节点内需要同步的进程到达或者计时超过预设值。栅栏计时超时后或者本超节点内需要同步的进程全部到达后,若总同步进程数若等于超节点内同步进程数,栅栏实例发出释放信号,表现为各需要同步的核心执行的load指令返回。若总同步进程数若大于超节点内同步进程数,本地栅栏将同步编号,已到达进程数,总同步进程数发送到全局栅栏,由全局栅栏进行处理。
本实施例中设计的栅栏同步方案通过Load指令访问栅栏同步装置,发出栅栏同步请求,同时发出请求的核心暂时停止流水线的执行。当参与此次同步的所有核心到达全部到达同步点后,栅栏同步装置返回Load请求,发出栅栏释放信号,各核心恢复流水线的执行。全局栅栏负责超节点间的核心的栅栏同步;本地栅栏负责超节点内的核心的栅栏同步,若一个超节点内有多个核心需要与其他超节点的核心进行栅栏同步时,本地栅栏负责本超节点内多个核心的栅栏同步,当本超节点内所有需要同步的核心到达本地栅栏后,将通知全局栅栏以确认是否所有参与同步的核心均已到达栅栏,当所有参与同步的核心到达栅栏后,将同时释放本地栅栏和全局栅栏,并发出信号恢复核心工作。所有的栅栏同步实例采用全局统一编址,通过使用访存指令的地址进行栅栏同步操作。栅栏同步装置用于进程间的相互等待,当多个进程需要在某个点进行同步的时候需要用到栅栏同步操作。本装置的所有的栅栏实例对程序员透明,当需要进行进程同步时,程序员仅需明确参与同一栅栏同步的核心总数、各核心在同一超节点内的核向量、以及赋予同一栅栏同步编号。栅栏同步操作的相关信息被放入load指令的地址之中,核心执行load指令经过译码,若为栅栏同步操作,则将地址发送至栅栏同步装置。当栅栏同步操作完成后,栅栏同步装置发出释放信号,load指令返回,核心可以继续执行指令。一次栅栏同步操作从一个核心发出读请求开始,读请求的地址中包含栅栏同步的所有信息。其中地址的高位部分表明本次访存是一次栅栏同步请求;其他位由栅栏同步编号、参与此次栅栏同步的核心总数、参与此次栅栏同步的本超节点内核心总数组成。所有参与同一栅栏同步的核心通过栅栏同步编号确认是否为同一次栅栏同步。当所有参与此次栅栏同步的核心都发出了该读请求到达栅栏后,栅栏同步实例将释放栅栏,将读返回信号多播返回给各核心,各核心收到读返回信号后,激活流水线,继续执行指令。当有核心发出栅栏操作的时候,由于采用自陷(收到请求后等待)的方式进行栅栏的收集,因此一个核心不能在上一次栅栏未离开之前就再次到达栅栏。每次一个新的核心到达栅栏,一方面将更新到达向量Arrived_Vector(用于记录已到达的进程),另一方面将已到达进程数量Arrived_Count与栅栏同步进程总数Total_Count进行比较,当所有进程到达栅栏后,二者值相同。若满足此条件,则开始执行栅栏的释放。栅栏的释放是向所有的到达进程执行Load返回,采用多播的方式,保证所有进程同时离开栅栏。进程成功离开之后,清除栅栏计数器和已到达进程标志。当核心栅栏到达与栅栏登记不匹配时,也会进行相应的例外处理。此外,每一个栅栏实例设有超时释放机制,每一个到达栅栏的进程会等待未达到的同步事件,当时间超过预先设定的最大值之后,会被强行释放,此时的释放采用多播的方式,将已到达栅栏的核心返回读请求,进行相应的例外处理。可通过配置网络设置超时寄存器来设定超时时间。在程序员视角,栅栏同步实例的栅栏操作是对特定地址的读操作,直到栅栏释放才返回读返回。栅栏操作由参与栅栏同步的每个进程向本超节点内的栅栏同步控制器发出,参与此次栅栏同步的进程相继到达栅栏,到达栅栏后该进程所在核心流水线暂停,当所有参与此次栅栏同步的进程均到达栅栏后,释放栅栏同时参与该次栅栏同步的所有进程流水线激活,继续执行。
此外,本实施例还提供一种可扩展的栅栏同步设备,包括相互连接的微处理器和存储器,该微处理器被编程或配置以执行前述可扩展的栅栏同步方法的步骤。
此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有被编程或配置以执行前述可扩展的栅栏同步方法的计算机程序。
如图5所示,本实施例还提供一种用于前述可扩展的栅栏同步方法的设备,包括全局栅栏和分别分布于每一个超节点中的本地栅栏,本地栅栏包括栅栏同步控制器和多个本地栅栏实例LBar,栅栏同步控制器包括:信号解析模块,用于接收并解析超节点内核心的进程发起的栅栏同步请求;本地/全局栅栏同步调度单元,用于根据栅栏同步请求的解析结果将其发送给本地栅栏或者全局栅栏;本地栅栏分配选择单元,用于为发送给本地栅栏的栅栏同步请求分配或者选择一个本地栅栏实例LBar处理该栅栏同步请求;本地栅栏实例LBar用于针对达到的栅栏同步请求进行栅栏同步,且在栅栏同步请求的所有进程都到达后,若为超节点内核心的进程栅栏同步,则释放本地栅栏实例LBar并发送读返回信号给发起栅栏同步请求的各个进程,若为包含超节点内核心的进程栅栏同步以及超节点间核心的进程栅栏同步,则向全局栅栏发送全局更新请求;全局栅栏包括全局栅栏分配选择单元和多个全局栅栏实例GBar,全局栅栏分配选择单元的输入端通过先入先出队列FIFO与各个本地栅栏中本地栅栏实例LBar的输出端相连,全局栅栏分配选择单元用于在通过超节点间的全局栅栏处理该栅栏同步请求时,为该栅栏同步请求分配或者选择一个全局栅栏实例GBar处理该栅栏同步请求,全局栅栏实例GBar用于针对达到的栅栏同步请求进行栅栏同步,且在栅栏同步请求的所有进程都到达后,若为超节点间核心的进程栅栏同步,则释放全局栅栏实例GBar并发送读返回信号给发起栅栏同步请求的各个进程,若为包含超节点内核心的进程栅栏同步以及超节点间核心的进程栅栏同步,则向发送全局更新请求发送释放栅栏信号,使得对应的本地栅栏实例LBar释放本地栅栏实例LBar并发送读返回信号给发起栅栏同步请求的各个进程;每一个所述先入先出队列FIFO均配置有一个计时器,当先入先出队列FIFO的FIFO头部存在请求时计时器开始计时,当计时超过设定阈值时判定出现死锁阻塞,将FIFO头部的请求移入FIFO尾部,并继续处理下一请求,如图6所示。
本实施例中,栅栏同步控制器主要包括信号解析模块、FIFO以及本地/全局栅栏同步调度单元。信号解析模块可以同时处理超节点内的全部核心的请求,如果本地栅栏第一次处理该栅栏同步,则需要串行执行,若已登记该次栅栏同步,则本地栅栏可以处理多个核心同时发出栅栏操作请求。进程发出栅栏同步的读请求到达本地栅栏后,若同步编号未分配本地栅栏单元,则本地栅栏分配选择单元为本次同步分配一个本地栅栏单元,并将相关同步信息登记到本地栅栏单元中。如果本地栅栏中已有该同步编号,则需要更新栅栏实例中的相关信息。超节点内的本地栅栏在收集到本超节点内的所有栅栏请求后,如果还需要与其他超节点内的进程进行同步,需要将栅栏同步信息发送到全局栅栏。全局栅栏接收请求后,若该请求的同步编号未分配全局栅栏实例,则全局栅栏分配选择单元为本次同步分配一个全局栅栏实例,并将相关同步信息登记到全局栅栏实例中。如果全局栅栏中已有该同步编号,则直接将信息传入分配的全局栅栏实例中。本地栅栏主要负责超节点内的核心之间的栅栏同步功能,全局栅栏主要负责超节点间的核心之间的栅栏同步功能。当超节点内的多个核心与另一超节点内的核心进行栅栏同步操作时,首先由该超节点的本地栅栏对多个核心进行栅栏同步,当本地超节点的全部栅栏到达后,再更新到全局栅栏上进行同步。通过本地栅栏与全局栅栏的高度协同配合,实现高速低流量的栅栏同步功能。
为支持可扩展性,同时节省开销,全局栅栏实例数量无需与系统支持的同时最大栅栏同步数相同,为避免由此产生的死锁问题(全部全局栅栏实例已被占用且未释放,所有超节点发送来的新请求均需申请新的栅栏实例,同时在各超节点与全局栅栏互连的先入先出队列FIFO处阻塞后续可释放已占用的全局栅栏实例的请求),本实施例中设计一种死锁避免的调度机制:一方面,在全局栅栏和各超节点之间分别设置一组先入先出队列FIFO,其作用是缓存从各超节点本地栅栏发送至全局栅栏的同步数据。超节点发送同步请求时,首先将其存储在发送请求的超节点对应的先入先出队列FIFO中,全局栅栏实例从该先入先出队列FIFO中不断取出同步请求进行处理。另一方面,每一个先入先出队列FIFO均配置有一个计时器,当先入先出队列FIFO的FIFO头部存在请求时计时器开始计时,当计时超过设定阈值时判定出现死锁阻塞,将FIFO头部的请求移入FIFO尾部,并继续处理下一请求。
本实施例中,栅栏同步控制器具有下述优点:(1)快速:采用本地-全局两级层次化栅栏设计,超节点内的同步可在本地栅栏完成,高效快速。此外,栅栏同步实例可以处理同拍到达的多个核心的栅栏到达请求。(2)耦合:本地栅栏与全局栅栏基于栅栏请求情况协同工作,超节点间的同步通过层次化Tree-based算法实现,参与全局栅栏同步的同一超节点内核心在本地栅栏进行同步,所有参与栅栏同步的核心到达后更新到全局栅栏,全部到达后进行栅栏释放,减少了本地栅栏与全局栅栏通信量。(3)独立:栅栏操作通过独立的栅栏网络执行,栅栏状态查询和栅栏配置等操作则通过配置网络执行,相互独立,无需与网络上其他消息竞争带宽。(4)友好:对程序员高度友好,硬件系统自动分配和管理栅栏实例,程序员仅需关心参与栅栏同步的核心总数,所有栅栏实例对程序员透明。(5)易于扩展:本装置可以经过调整本地栅栏实例与全局栅栏实例的数目来适应各种大型系统。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种可扩展的栅栏同步方法,其特征在于,包括:
1)接收并解析超节点内核心的进程发起的栅栏同步请求;若收到的栅栏同步请求包含超节点内核心的进程栅栏同步以及超节点间核心的进程栅栏同步,则跳转执行下一步;
2)超节点内的本地栅栏通过本地栅栏实例执行本超节点内核心的进程的栅栏同步,在完成本超节点内核心的进程的栅栏同步后发送全局更新请求给超节点间的全局栅栏;
3)超节点间的全局栅栏通过全局栅栏实例执行超节点间核心的进程的栅栏同步,在完成超节点间核心的进程的栅栏同步后发送栅栏释放信号给各个发起全局更新请求的超节点内的本地栅栏;
4)收到栅栏释放信号的各个超节点内的本地栅栏释放本地栅栏实例,并发送读返回信号给发起栅栏同步请求的各个进程。
2.根据权利要求1所述的可扩展的栅栏同步方法,其特征在于,步骤1)中解析超节点内核心的进程发起的栅栏同步请求是指解析获得栅栏同步请求中的栅栏同步编号ID、栅栏同步进程总数Total_Count以及超节点内进程总数Local_Count;所述收到的栅栏同步请求包含超节点内核心的进程栅栏同步以及超节点间核心的进程栅栏同步是指:超节点内进程总数Local_Count大于或等于1、且栅栏同步进程总数Total_Count大于或等于超节点内进程总数Local_Count。
3.根据权利要求2所述的可扩展的栅栏同步方法,其特征在于,步骤1)中解析超节点内核心的进程发起的栅栏同步请求时还包括对栅栏同步请求进行合法性判断的步骤,若栅栏同步编号ID超过预设范围、或栅栏同步进程总数Total_Count小于超节点内进程总数Local_Count,则判定栅栏同步请求不合法,返回错误并退出;否则继续往下执行。
4.根据权利要求3所述的可扩展的栅栏同步方法,其特征在于,步骤2)包括:
2.1)判断栅栏同步请求的栅栏同步编号ID是否已经在超节点内的本地栅栏中登记,若尚未登记,则在本地栅栏中分配本地栅栏实例LBar并登记栅栏同步编号ID和超节点内进程总数Local_Count、并启动计时,并初始化设置本地的已到达进程数量Arrived_Count为1;若已经登记,则将本地的已到达进程数量Arrived_Count加1;
2.2)本地栅栏判断分配给该栅栏同步编号ID的本地栅栏实例LBar中本地的已到达进程数量Arrived_Count、超节点内进程总数Local_Count两者相等或者超时是否成立,若两者相等或者超时是否成立,则判定该栅栏同步编号ID已完成本超节点内核心的进程的栅栏同步,跳转执行下一步;
2.3)本地栅栏发送包含栅栏同步编号ID、栅栏同步进程总数Total_Count以及本地的已到达进程数量Arrived_Count的全局更新请求给超节点间的全局栅栏。
5.根据权利要求4所述的可扩展的栅栏同步方法,其特征在于,步骤3)包括:
3.1)判断全局更新请求的栅栏同步编号ID是否已经在超节点间的全局栅栏中登记,若尚未登记,则在全局栅栏中分配全局栅栏实例GBar并登记栅栏同步编号ID和栅栏同步进程总数Total_Count、并启动计时,并初始化设置全局的已到达进程数量Arrived_Count为全局更新请求中携带的本地的已到达进程数量Arrived_Count;若已经登记,则将全局的已到达进程数量Arrived_Count加上全局更新请求中携带的本地的已到达进程数量Arrived_Count;
3.2)全局栅栏判断分配给该栅栏同步编号ID的全局栅栏实例GBar中全局的已到达进程数量Arrived_Countt、栅栏同步进程总数Total_Count两者相等或者超时是否成立,若两者相等或者超时是否成立,则判定该栅栏同步编号ID已完成超节点间核心的进程的栅栏同步,跳转执行下一步;
3.3)发送栅栏释放信号给各个发起全局更新请求的超节点内的本地栅栏。
6.根据权利要求1所述的可扩展的栅栏同步方法,其特征在于,步骤1)中解析超节点内核心的进程发起的栅栏同步请求后,还包括在超节点内进程总数Local_Count等于1的情况下执行的下述超节点间核心的进程栅栏同步的步骤:判断栅栏同步请求的栅栏同步编号ID是否已经在超节点间的全局栅栏中登记,若尚未登记,则在全局栅栏中分配全局栅栏实例GBar并登记栅栏同步编号ID和栅栏同步进程总数Total_Count、并启动计时,并初始化设置全局的已到达进程数量Arrived_Count为1;若已经登记,则将全局的已到达进程数量Arrived_Count加1;全局栅栏判断分配给该栅栏同步编号ID的全局栅栏实例GBar中全局的已到达进程数量Arrived_Countt、栅栏同步进程总数Total_Count两者相等或者超时是否成立,若两者相等或者超时是否成立,则判定该栅栏同步编号ID已完成超节点间核心的进程的栅栏同步,释放分配给该栅栏同步编号ID的全局栅栏实例GBar,并发送读返回信号给发起栅栏同步请求的各个进程。
7.根据权利要求1所述的可扩展的栅栏同步方法,其特征在于,步骤1)中解析超节点内核心的进程发起的栅栏同步请求后,还包括在栅栏同步进程总数Total_Count等于超节点内进程总数Local_Count的情况下执行的下述本超节点内核心的进程栅栏同步的步骤:判断栅栏同步请求的栅栏同步编号ID是否已经在超节点内的本地栅栏中登记,若尚未登记,则在本地栅栏中分配本地栅栏实例LBar并登记栅栏同步编号ID和超节点内进程总数Local_Count、并启动计时,并初始化设置本地的已到达进程数量Arrived_Count为1;若已经登记,则将本地的已到达进程数量Arrived_Count加1;本地栅栏判断分配给该栅栏同步编号ID的本地栅栏实例LBar中本地的已到达进程数量Arrived_Count、超节点内进程总数Local_Count两者相等或者超时是否成立,若两者相等或者超时是否成立,则判定该栅栏同步编号ID已完成本超节点内核心的进程的栅栏同步,释放分配给该栅栏同步编号ID的本地栅栏实例LBar,并发送读返回信号给发起栅栏同步请求的各个进程。
8.一种可扩展的栅栏同步设备,包括相互连接的微处理器和存储器,其特征在于,该微处理器被编程或配置以执行权利要求1~7中任意一项所述可扩展的栅栏同步方法的步骤。
9.一种计算机可读存储介质,其特征在于,该计算机可读存储介质中存储有被编程或配置以执行权利要求1~7中任意一项所述可扩展的栅栏同步方法的计算机程序。
10.一种用于应用权利要求1~7中任意一项所述可扩展的栅栏同步方法的设备,其特征在于,包括全局栅栏和分别分布于每一个超节点中的本地栅栏,所述本地栅栏包括栅栏同步控制器和多个本地栅栏实例LBar,所述栅栏同步控制器包括:信号解析模块,用于接收并解析超节点内核心的进程发起的栅栏同步请求;本地/全局栅栏同步调度单元,用于根据栅栏同步请求的解析结果将其发送给本地栅栏或者全局栅栏;本地栅栏分配选择单元,用于为发送给本地栅栏的栅栏同步请求分配或者选择一个本地栅栏实例LBar处理该栅栏同步请求;所述本地栅栏实例LBar用于针对达到的栅栏同步请求进行栅栏同步,且在栅栏同步请求的所有进程都到达后,若为超节点内核心的进程栅栏同步,则释放本地栅栏实例LBar并发送读返回信号给发起栅栏同步请求的各个进程,若为包含超节点内核心的进程栅栏同步以及超节点间核心的进程栅栏同步,则向全局栅栏发送全局更新请求;所述全局栅栏包括全局栅栏分配选择单元和多个全局栅栏实例GBar,所述全局栅栏分配选择单元的输入端通过先入先出队列FIFO与各个本地栅栏中本地栅栏实例LBar的输出端相连,所述全局栅栏分配选择单元用于在通过超节点间的全局栅栏处理该栅栏同步请求时,为该栅栏同步请求分配或者选择一个全局栅栏实例GBar处理该栅栏同步请求,所述全局栅栏实例GBar用于针对达到的栅栏同步请求进行栅栏同步,且在栅栏同步请求的所有进程都到达后,若为超节点间核心的进程栅栏同步,则释放全局栅栏实例GBar并发送读返回信号给发起栅栏同步请求的各个进程,若为包含超节点内核心的进程栅栏同步以及超节点间核心的进程栅栏同步,则向发送全局更新请求发送释放栅栏信号,使得对应的本地栅栏实例LBar释放本地栅栏实例LBar并发送读返回信号给发起栅栏同步请求的各个进程;每一个所述先入先出队列FIFO均配置有一个计时器,当先入先出队列FIFO的FIFO头部存在请求时计时器开始计时,当计时超过设定阈值时判定出现死锁阻塞,将FIFO头部的请求移入FIFO尾部,并继续处理下一请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110055048.2A CN112783663B (zh) | 2021-01-15 | 2021-01-15 | 一种可扩展的栅栏同步方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110055048.2A CN112783663B (zh) | 2021-01-15 | 2021-01-15 | 一种可扩展的栅栏同步方法及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112783663A true CN112783663A (zh) | 2021-05-11 |
CN112783663B CN112783663B (zh) | 2023-06-13 |
Family
ID=75756106
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110055048.2A Active CN112783663B (zh) | 2021-01-15 | 2021-01-15 | 一种可扩展的栅栏同步方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112783663B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100124241A1 (en) * | 2008-11-19 | 2010-05-20 | Fujitsu Limited | Barrier synchronization apparatus, barrier synchronization system, and barrier synchronization method |
CN103116527A (zh) * | 2013-03-05 | 2013-05-22 | 中国人民解放军国防科学技术大学 | 一种基于网络控制器的超大规模栅栏同步方法 |
CN104932947A (zh) * | 2014-03-17 | 2015-09-23 | 华为技术有限公司 | 一种栅栏同步方法及设备 |
CN110147253A (zh) * | 2019-05-16 | 2019-08-20 | 湖南毂梁微电子有限公司 | 一种基于延迟栅栏同步操作指令的多核处理器同步方法 |
-
2021
- 2021-01-15 CN CN202110055048.2A patent/CN112783663B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100124241A1 (en) * | 2008-11-19 | 2010-05-20 | Fujitsu Limited | Barrier synchronization apparatus, barrier synchronization system, and barrier synchronization method |
CN103116527A (zh) * | 2013-03-05 | 2013-05-22 | 中国人民解放军国防科学技术大学 | 一种基于网络控制器的超大规模栅栏同步方法 |
CN104932947A (zh) * | 2014-03-17 | 2015-09-23 | 华为技术有限公司 | 一种栅栏同步方法及设备 |
CN110147253A (zh) * | 2019-05-16 | 2019-08-20 | 湖南毂梁微电子有限公司 | 一种基于延迟栅栏同步操作指令的多核处理器同步方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112783663B (zh) | 2023-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8209690B2 (en) | System and method for thread handling in multithreaded parallel computing of nested threads | |
US7443836B2 (en) | Processing a data packet | |
US9733981B2 (en) | System and method for conditional task switching during ordering scope transitions | |
US8112559B2 (en) | Increasing available FIFO space to prevent messaging queue deadlocks in a DMA environment | |
WO2010105013A1 (en) | Scalable interface for connecting multiple computer systems which performs parallel mpi header matching | |
WO2012027959A1 (zh) | 一种多处理器系统及其同步引擎装置 | |
JPH03126158A (ja) | スケジユーリング方法及び装置 | |
CN112463400B (zh) | 一种基于共享内存的实时数据分发方法及装置 | |
JP2012512452A (ja) | マルチプロセス間のバリアの物理マネージャ | |
KR100895536B1 (ko) | 데이터 전송 방법, 시스템 및 컴퓨터 판독가능 매체 | |
CN113434284B (zh) | 一种隐私计算服务端设备、系统及任务调度方法 | |
US8631086B2 (en) | Preventing messaging queue deadlocks in a DMA environment | |
CN101189579A (zh) | 基于行为模型的多线程体系结构 | |
US9437299B2 (en) | Systems and methods for order scope transitions using cam | |
CA2382728A1 (en) | Efficient event waiting | |
CN112783663B (zh) | 一种可扩展的栅栏同步方法及设备 | |
CN116382861A (zh) | Numa架构的服务器网络进程自适应调度方法、系统及介质 | |
CN112306703A (zh) | 一种numa系统中的临界区执行方法及装置 | |
CN117331655A (zh) | 多线程调度方法及装置 | |
CN114548389A (zh) | 异构计算中计算单元的管理方法及相应处理器 | |
JP2001067298A (ja) | ハブ及びポート・アーキテクチャーを有する転送制御装置における低速ポートについての障害を防止するための書込み要求キューの使用 | |
JP6930139B2 (ja) | 並列プロセス実行方法 | |
CN103181132B (zh) | 请求报文处理方法以及发送方法、节点和系统 | |
US20240095062A1 (en) | Offloaded task computation on network-attached co-processors | |
US10235225B2 (en) | Data processing system having messaging |
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 |