CN112632089B - 面向异构众核处理器的并行离散更新方法 - Google Patents

面向异构众核处理器的并行离散更新方法 Download PDF

Info

Publication number
CN112632089B
CN112632089B CN201910904039.9A CN201910904039A CN112632089B CN 112632089 B CN112632089 B CN 112632089B CN 201910904039 A CN201910904039 A CN 201910904039A CN 112632089 B CN112632089 B CN 112632089B
Authority
CN
China
Prior art keywords
discrete
core
slave
slave core
data
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
Application number
CN201910904039.9A
Other languages
English (en)
Other versions
CN112632089A (zh
Inventor
姜小成
尤洪涛
毛兴权
顾龙
张立博
孙俊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuxi Jiangnan Computing Technology Institute
Original Assignee
Wuxi Jiangnan Computing Technology Institute
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuxi Jiangnan Computing Technology Institute filed Critical Wuxi Jiangnan Computing Technology Institute
Priority to CN201910904039.9A priority Critical patent/CN112632089B/zh
Publication of CN112632089A publication Critical patent/CN112632089A/zh
Application granted granted Critical
Publication of CN112632089B publication Critical patent/CN112632089B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种面向异构众核处理器的并行离散更新方法,包括以下步骤:S1、对地址连续的离散更新数据区进行块划分,并将数据块与从核进行映射,使得每个从核负责其中一个数据块的更新;S2、每个从核将指令执行过程中产生的离散更新请求进行分类,分为需从核自己处理的离散更新请求和需其它从核处理的离散更新请求,并在产生离散更新请求的地方插入相应的处理函数;S3、需从核自己处理的离散更新请求按程序段func1的处理流程进行处理;S4、需其它从核处理的离散更新请求按程序段func2的处理流程进行处理。本发明可以实现较高性能的并行离散更新,并可以处理LDM空间装不下的大数据离散更新问题。

Description

面向异构众核处理器的并行离散更新方法
技术领域
本发明属于计算机编译与优化技术领域,尤其涉及一种面向异构众核处理器的并行离散更新方法。
背景技术
离散更新有两种:一种是先写后读的,表明循环迭代之间存在相关性,这样的循环通常无法进行并行化;另外一种是写相关的,只要保证写操作的原子性,即可以进行并行化。
通常在异构众核平台上采用生产者-消费者模式来解决离散更新问题:将从核划分为计算核(生产者)与更新核(消费者)两部分,生产者负责离散更新请求(中间计算结果)的生产,确定该更新请求应该属于哪个消费者,并将其通过从核之间的通信机制发送给对应的消费者;消费者则接收更新请求并完成最后的数据更新操作。生产者只负责生产离散更新请求,消费者只负责消费数据更新请求,生产者与消费者互相配合完成离散数据的更新操作。
生产者-消费者模式技术的缺点包括:1)必须按生产者-消费者模式的要求改造源码,将原始代码中一段简单的数组离散更新循环代码段改造为复杂的生产者-消费者代码段,不便于编译器进行程序的自动变换,降低了程序的可读性与可移植性;2)需要将从核组内的从核按比例划分为两部分:生产者和消费者,这个比例需要通过权衡从核处理能力、计算负载等因素来确定,或通过运行测试获得,加重了编程负担。
发明内容
本发明目的在于提供一种面向异构众核处理器的并行离散更新方法,该并行离散更新方法实现从核上的并行离散更新功能,便于编译器进行程序的自动变换,保持了原始程序良好的可读性与可移植性,不需要用户划分生产者与消费者,不增加用户负担。
为达到上述目的,本发明采用的技术方案是:一种面向异构众核处理器的并行离散更新方法,包括以下步骤:
S1、对地址连续的离散更新数据区进行块划分,并将数据块与从核进行映射,使得每个从核负责其中一块数据的更新,具体如下:
S11、对地址连续的离散更新数据区进行块划分的方法为:假设从核个数为N,离散更新数据区的总数据单元个数为M,对表达式“(M+N-1)/N”取整数,获得整数值m,然后将离散更新数据区按连续的m个单元为一组进行块划分,划分为N个数据块,其中前(N-1)个数据块的单元个数都是m,最后一个数据块的单元个数为(M-(N-1)*m);
S12、离散更新数据块与从核的映射方法为:第一个数据块由编号为0的从核负责更新,第二个数据块由编号为1的从核负责更新,依次类推,最后一个数据块由编号为N-1的从核负责更新;
S13、每个从核在开始执行并行核心循环之前,执行如下操作:
S131、初始化接收缓冲区的有效状态单元数组valid_stat[N],初始值设置为FALSE,其中N为从核数;
S132、更新请求处理状态单元数组deal_stat[N],初始状态设为TRUE;
S133、将与本从核号对应的主存内的离散更新数据块内容拷贝到LDM,形成本地副本;
S14、每个从核均记录离散更新数据区的起始地址a、离散更新数据区的总数据单元个数M、分块大小m、单个数据单元的字节长度b;
S2、每个从核将指令执行过程中产生的离散更新请求进行分类,分为需从核自己处理的离散更新请求和需其它从核处理的离散更新请求,并在产生离散更新请求的地方插入相应的处理函数;
对于指令执行过程中产生的离散更新请求:一个从核在指令执行过程中遇到的一个待执行的离散更新操作,该操作的内容包括:操作类型、源操作数和目的操作数,所述操作类型包括加、减、乘,所述源操作数指将要和目的操作数进行运算的数值,所述目的操作数指所述离散更新数据区内的某个数据单元;
S21、根据S11对离散更新数据区的块划分方法,确定离散更新请求的目的操作数对应的数据块,再根据S12中离散更新数据块与从核的映射关系,确定所述离散更新请求对应的从核号,即该离散更新请求由该对应的从核执行;
S22、若指令执行过程中产生的一个离散更新请求,其目的操作数属于从核自身,则称该离散更新请求为需从核自己处理的离散更新请求,否则,称为需其它从核处理的离散更新请求;
S23、如果一个离散更新请求属于需从核自己处理的离散更新请求,则在产生离散更新请求的地方插入离散更新请求处理程序段func1,用于处理所述离散更新请求,还用于处理其他从核发送过来的离散更新请求;
S24、如果一个离散更新请求属于需其它从核处理的离散更新请求,则在产生离散更新请求的地方插入离散更新请求处理程序段func2,用于将所述离散更新请求发送给对应的从核,还用于处理其他从核发送过来的离散更新请求;
S3、需从核自己处理的离散更新请求的处理程序段func1的处理流程为:
S31、根据S14中记录的信息,确定离散更新请求在本地副本中的位置,并直接对本地副本中对应数据单元进行更新;
S311、获取待更新数据单元的下标索引idx,根据S14中记录的分块大小m,计算出该待更新数据单元所属于的数据块号,即对应的从核号core_id,还可以计算出该待更新数据单元在所属数据块内的偏移下标;
S32、假定本从核的从核号为myid,循环检查接收缓冲区中与每个从核对应的有效状态单元valid_stat[i],若valid_stat[i]为TRUE,表示对应的从核i给自己发送了更新请求,则先将valid_stat[i]修改为FALSE,再按照步骤S31,处理该离散更新请求,最后通过消息将从核i内对应本从核的更新请求完成处理状态单元deal_stat[myid]置为TRUE,重复上述处理,直到接收缓冲区内的离散更新请求全部处理完毕;
S4、需其它从核处理的离散更新请求的处理程序段func2的处理流程为:
S41、获取待更新数据单元的下标索引idx,根据S14中记录的分块大小m,计算出该待更新数据单元所属于的数据块号,即对应的从核号core_id;
S42、等待直到LDM中core_id对应的更新请求完成处理状态单元deal_stat[core_id]变为TRUE状态;
S43、假定本从核的从核号为myid,给编号为core_id的从核发送更新请求,发送的内容包括更新操作的类型、源操作数、目的操作数(离散更新数据区的下标索引idx),待消息完成后,通过消息将编号为core_id的从核内本从核对应的有效状态单元valid_stat[myid]置为TRUE;
S44、循环检查接收缓冲区中与每个从核对应的有效状态单元valid_stat[i],若valid_stat[i]为TRUE,表示对应的从核i给自己发送了更新请求,则先将valid_stat[i]修改为FALSE,再按照步骤S31,处理该离散更新请求,最后通过消息将从核i内对应本从核的更新请求完成处理状态单元deal_stat[myid]置为TRUE,重复上述处理,直到接收缓冲区内的离散更新请求全部处理完毕;
S5、每一个从核在执行完并行核心循环后,将LDM中本地副本写回主存中对应的数据块中。
上述技术方案中进一步改进的技术方案如下:
1. 上述方案中,所述本地产生的更新请求包括三部分信息,包括更新操作的类型、待更新的位置即离散更新源数据的下标索引、将更新到上述位置的操作数。
2. 上述方案中,根据S1中描述的数据分块方法和S14中记录的信息,通过离散更新源数据的索引,定位到数据分块以及块内偏移,依据S12中数据块与从核之间的映射方法,获得该更新请求对应的从核号以及该从核所属数据块内的具体位置。
3. 上述方案中,所述本地产生的更新请求通过S2所述方法进行分类,分为需从核自己处理的离散更新请求和需其它从核处理的离散更新请求,每个从核既要处理自己产生的属于本从核处理的离散更新请求,还要处理其他从核产生的需本从核处理的离散更新请求。
由于上述技术方案的运用,本发明与现有技术相比具有下列优点:
本发明面向异构众核处理器的并行离散更新方法,其可以支持离散更新这种具有写相关操作的应用在众核上的并行编程问题,通过数据的合理划分、更新请求的缓存以及数据命中与脱靶处理,实现从核上的高性能的并行离散更新功能,并可以处理LDM空间装不下的大数据离散更新问题,在小容量的从核高速局存上支持并行离散更新操作,便于编译器进行程序的自动变换,保持了原始程序良好的可读性与可移植性,不需要用户划分生产者与消费者,不增加用户负担。
附图说明
附图1为本发明基本架构示意图;
附图2为本发明面向异构众核处理器的并行离散更新方法流程图。
具体实施方式
下面结合实施例对本发明作进一步描述:
实施例:一种面向异构众核处理器的并行离散更新方法,包括以下步骤:
S1、对地址连续的离散更新数据区进行块划分,并将数据块与从核进行映射,使得每个从核负责其中一块数据的更新,具体如下:
在地址连续的离散更新数据区内,数据单元在主存空间是连续编址的,对离散更新数据区内的数据单元进行更新操作,即取出该数据单元的数值,对其进行一个运算,例如加上一个数值,最后将结果写回上述数据单元,对所述离散更新数据区内数据单元的更新操作是离散的;
S11、对地址连续的离散更新数据区进行块划分的方法为:假设从核个数为N,离散更新数据区的总数据单元个数为M,对表达式“(M+N-1)/N”取整数,获得整数值m,然后将离散更新数据区按连续的m个单元为一组进行块划分,划分为N个数据块,其中前(N-1)个数据块的单元个数都是m,最后一个数据块的单元个数为(M-(N-1)*m);
S12、离散更新数据块与从核的映射方法为:第一个数据块由编号为0的从核负责更新,第二个数据块由编号为1的从核负责更新,依次类推,最后一个数据块由编号为N-1的从核负责更新;
通常情况下,m不是很大,即LDM容纳得下m个数据单元;
S13、每个从核在开始执行并行核心循环之前,执行如下操作:
S131、初始化接收缓冲区的有效状态单元数组valid_stat[N],初始值设置为FALSE,其中N为从核数(如非特殊声明,下面出现的N都表示从核数);
S132、更新请求处理状态单元数组deal_stat[N],初始状态设为TRUE;
S133、将与本从核号对应的主存内的离散更新数据块内容拷贝到LDM,形成本地副本;
S14、每个从核均记录离散更新数据区的起始地址a、离散更新数据区的总数据单元个数M、分块大小m、单个数据单元的字节长度b;
S2、每个从核将指令执行过程中产生的离散更新请求进行分类,分为需从核自己处理的离散更新请求和需其它从核处理的离散更新请求,并在产生离散更新请求的地方插入相应的处理函数;
对于指令执行过程中产生的离散更新请求:一个从核在指令执行过程中遇到的一个待执行的离散更新操作,该操作的内容包括:操作类型、源操作数和目的操作数,所述操作类型包括加、减、乘,所述源操作数指将要和目的操作数进行运算的数值,所述目的操作数指所述离散更新数据区内的某个数据单元;
S21、根据S11对离散更新数据区的块划分方法,确定离散更新请求的目的操作数对应的数据块,再根据S12中离散更新数据块与从核的映射关系,确定所述离散更新请求对应的从核号,即该离散更新请求由该对应的从核执行;
S22、若指令执行过程中产生的一个离散更新请求,其目的操作数属于从核自身,则称该离散更新请求为需从核自己处理的离散更新请求,否则,称为需其它从核处理的离散更新请求;
S23、如果一个离散更新请求属于需从核自己处理的离散更新请求,则在产生离散更新请求的地方插入离散更新请求处理程序段func1,用于处理所述离散更新请求,还用于处理其他从核发送过来的离散更新请求;
S24、如果一个离散更新请求属于需其它从核处理的离散更新请求,则在产生离散更新请求的地方插入离散更新请求处理程序段func2,用于将所述离散更新请求发送给对应的从核,还用于处理其他从核发送过来的离散更新请求;
S3、需从核自己处理的离散更新请求的处理程序段func1的处理流程为:
S31、根据S14中记录的信息,确定离散更新请求在本地副本中的位置,并直接对本地副本中对应数据单元进行更新;
S311、获取待更新数据单元的下标索引idx,根据S14中记录的分块大小m,计算出该待更新数据单元所属于的数据块号,即对应的从核号core_id,计算方法是idx除以m,并将结果取整数,还可以计算出该待更新数据单元在所属数据块内的偏移下标,计算方法是idx模m;
S32、假定本从核的从核号为myid,循环检查接收缓冲区中与每个从核对应的有效状态单元valid_stat[i],若valid_stat[i]为TRUE,表示对应的从核i给自己发送了更新请求,则先将valid_stat[i]修改为FALSE,再按照步骤S31,处理该离散更新请求,最后通过消息将从核i内对应本从核的更新请求完成处理状态单元deal_stat[myid]置为TRUE,重复上述处理,直到接收缓冲区内的离散更新请求全部处理完毕;
S4、需其它从核处理的离散更新请求的处理程序段func2的处理流程为:
S41、获取待更新数据单元的下标索引idx,根据S14中记录的分块大小m,计算出该待更新数据单元所属于的数据块号,即对应的从核号core_id;
S42、等待直到LDM中core_id对应的更新请求完成处理状态单元deal_stat[core_id]变为TRUE状态;
S43、假定本从核的从核号为myid,给编号为core_id的从核发送更新请求,发送的内容包括更新操作的类型、源操作数、目的操作数(离散更新数据区的下标索引idx),待消息完成后,通过消息将编号为core_id的从核内本从核对应的有效状态单元valid_stat[myid]置为TRUE;
S44、循环检查接收缓冲区中与每个从核对应的有效状态单元valid_stat[i],若valid_stat[i]为TRUE,表示对应的从核i给自己发送了更新请求,则先将valid_stat[i]修改为FALSE,再按照步骤S31,处理该离散更新请求,最后通过消息将从核i内对应本从核的更新请求完成处理状态单元deal_stat[myid]置为TRUE,重复上述处理,直到接收缓冲区内的离散更新请求全部处理完毕;
S5、每一个从核在执行完并行核心循环后,将LDM中本地副本写回主存中对应的数据块中。
上述本地产生的更新请求包括三部分信息,包括更新操作的类型、待更新的位置即离散更新源数据的下标索引、将更新到上述位置的操作数。
根据S1中描述的数据分块方法和S14中记录的信息,通过离散更新源数据的索引,定位到数据分块以及块内偏移,依据S12中数据块与从核之间的映射方法,获得该更新请求对应的从核号以及该从核所属数据块内的具体位置。
上述本地产生的更新请求通过S2所述方法进行分类,分为需从核自己处理的离散更新请求和需其它从核处理的离散更新请求,每个从核既要处理自己产生的属于本从核处理的离散更新请求,还要处理其他从核产生的需本从核处理的离散更新请求。
本发明上述内容进一步解释如下:
本专利提出的是写相关的离散更新问题的并行化解决方法,解决的问题包括:在从核之间如何划分待更新的离散数据,使得每个从核各负责一部分数据的离散更新;如何在从核之间传递与存储离散更新请求;如何解决从核局存空间太小以至于放不下待更新数据;如何将上述三个方面的解决方案组装在一起,实现在小容量的从核高速局存上支持并行离散更新操作的目的。
基于上述问题,提出一种所有从核地位对等的处理方法,通过分而治之的策略,对离散更新数据区进行合理的划分和从核映射,使得每个从核各负责处理一部分数据的离散更新操作;无论采用何种策略进行划分,都是为了让每个从核尽可能公平地参与离散更新操作,达到加速并行离散操作的目的;更新请求通过消息批量发送给宿主从核进行数据更新,通过缓存更新请求,使得尽量减少远程通信次数,提高更新请求处理的效率;通过对LDM中源数据的数据命中与脱靶处理,支持对LDM空间存放不下的大数据的离散更新操作。
详细技术方案说明如下:
1、离散更新源数据的划分与映射
为了在异构众核处理器上并行处理离散更新问题,需要对离散更新数据区进行划分,并实现源数据区与从核的映射,使得每个从核都能处理一部分的离散更新操作,所有从核合作完成完整的数据更新操作。
选择对源数据区进行划分的策略必须便于对更新请求进行高效快速的分类计算。
2、离散更新请求的传递与处理
本地的更新请求按源数据区的划分进行分类,分为本地处理的更新请求和其它从核处理的更新请求。不同的更新请求,其处理方法是不一样的。
需本地处理的更新请求的处理方法为:如果更新请求命中源数据在本地LDM的副本,则直接执行更新操作,否则将更新请求登记到本从核未命中的离散更新请求的临时缓冲区。在登记临时缓冲区时,若缓冲区满,则需要更新源数据在本地LDM的副本,并执行临时缓冲区的所有更新请求。
需其它从核处理的更新请求的处理方法为:先将更新请求登记在发送缓冲区里;当发送缓冲区满时,触发一次发送操作,将其发往对应的从核的接收缓冲区。
每一个从核在处理完本地的一个更新请求时,将检查本地接收缓冲中的数据,若接收缓冲内存入了新的数据,则开始源数据区的命中与脱靶处理。
图1为示意图。
3、源数据区的命中与脱靶处理
从核在处理一个属于本地源数据区的更新请求时,首先检查源数据是否命中LDM里的缓冲,若命中,则直接在LDM缓冲里进行数据更新;否则按顺序执行下列操作进行脱靶处理:1)检查LDM缓冲内数据的状态,若处于脏状态,则将脏数据写回主存;2)往LDM缓冲里装入新的数据。此时LDM缓冲里的数据处于命中状态,可以继续进行数据更新操作。
采用上述面向异构众核处理器的并行离散更新方法时,其可以支持离散更新这种具有写相关操作的应用在众核上的并行编程问题;通过数据的合理划分、更新请求的缓存以及数据命中与脱靶处理,可以实现较高性能的并行离散更新,并可以处理LDM空间装不下的大数据离散更新问题。
为了便于更好的理解本发明,下面将对本文中使用的术语进行简要的解释:
LDM:Local Data Memory,本地数据存储。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。

Claims (4)

1.一种面向异构众核处理器的并行离散更新方法,其特征在于:包括以下步骤:
S1、对地址连续的离散更新数据区进行块划分,并将数据块与从核进行映射,使得每个从核负责其中一块数据的更新,具体如下:
S11、对地址连续的离散更新数据区进行块划分的方法为:假设从核个数为N,离散更新数据区的总数据单元个数为M,对表达式“(M+N-1)/N”取整数,获得整数值m,然后将离散更新数据区按连续的m个单元为一组进行块划分,划分为N个数据块,其中前N-1个数据块的单元个数都是m,最后一个数据块的单元个数为(M-(N-1)*m);
S12、离散更新数据块与从核的映射方法为:第一个数据块由编号为0的从核负责更新,第二个数据块由编号为1的从核负责更新,依次类推,最后一个数据块由编号为N-1的从核负责更新;
S13、每个从核在开始执行并行核心循环之前,执行如下操作:
S131、初始化接收缓冲区的有效状态单元数组valid_stat[N],初始值设置为FALSE,其中N为从核数;
S132、更新请求处理状态单元数组deal_stat[N],初始状态设为TRUE;
S133、将与本从核号对应的主存内的离散更新数据块内容拷贝到LDM,形成本地副本;
S14、每个从核均记录离散更新数据区的起始地址a、离散更新数据区的总数据单元个数M、分块大小m、单个数据单元的字节长度b;
S2、每个从核将指令执行过程中产生的离散更新请求进行分类,分为需从核自己处理的离散更新请求和需其它从核处理的离散更新请求,并在产生离散更新请求的地方插入相应的处理函数;
S21、根据S11对离散更新数据区的块划分方法,确定离散更新请求的目的操作数对应的数据块,再根据S12中离散更新数据块与从核的映射关系,确定所述离散更新请求对应的从核号,即该离散更新请求由该对应的从核执行;
S22、若指令执行过程中产生的一个离散更新请求,其目的操作数属于从核自身,则称该离散更新请求为需从核自己处理的离散更新请求,否则,称为需其它从核处理的离散更新请求;
S23、如果一个离散更新请求属于需从核自己处理的离散更新请求,则在产生离散更新请求的地方插入离散更新请求处理程序段func1,用于处理所述离散更新请求,还用于处理其他从核发送过来的离散更新请求;
S24、如果一个离散更新请求属于需其它从核处理的离散更新请求,则在产生离散更新请求的地方插入离散更新请求处理程序段func2,用于将所述离散更新请求发送给对应的从核,还用于处理其他从核发送过来的离散更新请求;
S3、需从核自己处理的离散更新请求的处理程序段func1的处理流程为:
S31、根据S14中记录的信息,确定离散更新请求在本地副本中的位置,并直接对本地副本中对应数据单元进行更新;
S311、获取待更新数据单元的下标索引idx,根据S14中记录的分块大小m,计算出该待更新数据单元所属于的数据块号,即对应的从核号core_id,还可以计算出该待更新数据单元在所属数据块内的偏移下标;
S32、假定本从核的从核号为myid,循环检查接收缓冲区中与每个从核对应的有效状态单元valid_stat[i],若valid_stat[i]为TRUE,表示对应的从核i给自己发送了更新请求,则先将valid_stat[i]修改为FALSE,再按照步骤S31,处理该离散更新请求,最后通过消息将从核i内对应本从核的更新请求完成处理状态单元deal_stat[myid]置为TRUE,重复上述处理,直到接收缓冲区内的离散更新请求全部处理完毕;
S4、需其它从核处理的离散更新请求的处理程序段func2的处理流程为:
S41、获取待更新数据单元的下标索引idx,根据S14中记录的分块大小m,计算出该待更新数据单元所属于的数据块号,即对应的从核号core_id;
S42、等待直到LDM中core_id对应的更新请求完成处理状态单元deal_stat[core_id]变为TRUE状态;
S43、假定本从核的从核号为myid,给编号为core_id的从核发送更新请求,发送的内容包括更新操作的类型、源操作数、目的操作数,待消息完成后,通过消息将编号为core_id的从核内本从核对应的有效状态单元valid_stat[myid]置为TRUE;
S44、循环检查接收缓冲区中与每个从核对应的有效状态单元valid_stat[i],若valid_stat[i]为TRUE,表示对应的从核i给自己发送了更新请求,则先将valid_stat[i]修改为FALSE,再按照步骤S31,处理该离散更新请求,最后通过消息将从核i内对应本从核的更新请求完成处理状态单元deal_stat[myid]置为TRUE,重复上述处理,直到接收缓冲区内的离散更新请求全部处理完毕;
S5、每一个从核在执行完并行核心循环后,将LDM中本地副本写回主存中对应的数据块中。
2.根据权利要求1所述的面向异构众核处理器的并行离散更新方法,其特征在于:所述本地产生的更新请求包括三部分信息,包括更新操作的类型、待更新的位置即离散更新源数据的下标索引、将更新到上述位置的操作数。
3.根据权利要求2所述的面向异构众核处理器的并行离散更新方法,其特征在于:根据S1中描述的数据分块方法和S14中记录的信息,通过离散更新源数据的索引,定位到数据分块以及块内偏移,依据S12中数据块与从核之间的映射方法,获得该更新请求对应的从核号以及该从核所属数据块内的具体位置。
4.根据权利要求1~3中任意一项所述的面向异构众核处理器的并行离散更新方法,其特征在于:所述本地产生的更新请求通过S2所述方法进行分类,分为需从核自己处理的离散更新请求和需其它从核处理的离散更新请求,每个从核既要处理自己产生的属于本从核处理的离散更新请求,还要处理其他从核产生的需本从核处理的离散更新请求。
CN201910904039.9A 2019-09-24 2019-09-24 面向异构众核处理器的并行离散更新方法 Active CN112632089B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910904039.9A CN112632089B (zh) 2019-09-24 2019-09-24 面向异构众核处理器的并行离散更新方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910904039.9A CN112632089B (zh) 2019-09-24 2019-09-24 面向异构众核处理器的并行离散更新方法

Publications (2)

Publication Number Publication Date
CN112632089A CN112632089A (zh) 2021-04-09
CN112632089B true CN112632089B (zh) 2022-07-12

Family

ID=75283163

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910904039.9A Active CN112632089B (zh) 2019-09-24 2019-09-24 面向异构众核处理器的并行离散更新方法

Country Status (1)

Country Link
CN (1) CN112632089B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114218149B (zh) * 2021-04-30 2024-03-22 无锡江南计算技术研究所 一种众核处理器上从核局存空间动态管理方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102929724A (zh) * 2012-11-06 2013-02-13 无锡江南计算技术研究所 基于异构众核处理器的多级访存方法、离散访存方法
US20140298313A1 (en) * 2013-01-07 2014-10-02 Tencent Technology (Shenzhen) Company Limited Method, server, client and system for updating data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102929724A (zh) * 2012-11-06 2013-02-13 无锡江南计算技术研究所 基于异构众核处理器的多级访存方法、离散访存方法
US20140298313A1 (en) * 2013-01-07 2014-10-02 Tencent Technology (Shenzhen) Company Limited Method, server, client and system for updating data

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
《Research on optimization of DAG task scheduling model based on heterogeneous multicore processor》;Xiaohui Cheng 等;《2018 IEEE 3rd Advanced Information Technology, Electronic and Automation Control Conference》;20181231;全文 *
《基于Caffe的嵌入式多核处理器深度学习框架并行实现》;高榕 等;《西安交通大学学报》;20180630;第52卷(第6期);全文 *

Also Published As

Publication number Publication date
CN112632089A (zh) 2021-04-09

Similar Documents

Publication Publication Date Title
JP2644780B2 (ja) 処理依頼機能を持つ並列計算機
US9098327B2 (en) Method and apparatus for implementing a transactional store system using a helper thread
US6658451B1 (en) Parallel join operation to support space and time dimensional program execution
US7243195B2 (en) Software managed cache optimization system and method for multi-processing systems
KR100368166B1 (ko) 컴퓨터 처리 시스템에서 스택 레퍼런스를 변경하는 방법
TW201346721A (zh) 處理器中的重疊原子區域
US7904879B2 (en) Reorganized storing of applications to improve execution
CN111443949B (zh) 一种飞腾服务器平台下的内核内存页拷贝加速方法
EP0939370B1 (en) Computer code translator
US9110791B2 (en) Optimistic object relocation
CN112632089B (zh) 面向异构众核处理器的并行离散更新方法
CN101847096A (zh) 包含栈变量函数的优化方法
CA2762563A1 (en) Data prefetching and coalescing for partitioned global address space languages
CN117289995B (zh) 指令处理方法以及处理器
CN116414458A (zh) 指令处理方法以及处理器
US11567774B2 (en) Optimized branching using safe static keys
CN101923486A (zh) 一种硬件事务内存系统中避免数据移动的方法
US8589621B2 (en) Object persistency
TW201005649A (en) Operating system fast run command
WO2000070451A1 (en) Parallel join operation to support space and time dimensional program execution
CN114579264A (zh) 处理装置、处理系统和处理方法
CN116192963A (zh) 微服务的错误码处理方法、装置、设备及存储介质
CN114761924A (zh) 基于对废弃寄存器编码指令的处理来废弃存储在处理器中的寄存器中的值
CN117112138A (zh) 一种指针偏移获取方法、系统、设备及存储介质
CN102981837B (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
GR01 Patent grant
GR01 Patent grant