基于局部存储器的主核与从核之间消息传递系统技术方案

技术编号:38057580 阅读:12 留言:0更新日期:2023-06-30 11:23
本发明专利技术公开了基于局部存储器的主核与从核之间消息传递系统。所述系统在x86微处理器、SW26010处理器、面向E级计算的异构融合加速器等不同平台上提供通用的消息传递编程接口。与传统的基于国产高性能众核处理器的独有接口编程相比,具有以下优点:编程模型简单易学,降低了编程难度;应用软件可以在仅仅修改编译器配置的情况下在不同类型的国产高性能微处理器上快速迁移;在软件开发方法上,可以首先使用基于x86平台上的模型开发和调试高性能计算软件,然后再将应用软件移植到国产高性能众核处理器上,可以有效减少开发的难度。这些特点将有效提升国产高性能计算软件开发和迁移的效率。效率。效率。

【技术实现步骤摘要】
基于局部存储器的主核与从核之间消息传递系统


[0001]本专利技术涉及众核处理器的领域,具体涉及基于局部存储器的主核与从核之间消息传递系统。

技术介绍

[0002](1)国产众核处理器体系结构
[0003]如图1所示,一颗SW26010微处理器(Haohuan FU,Junfeng LIAO.The Sunway Taihu Light supercomputer:system and applications[J].Science China Information Sciences,2016,59(7):1

16)包含了4个异构群。每个异构群包括一个主核和64个从核构成的从核簇,主频为1.5GHz,如图2所示。每个异构群的存储器层次关系相同,由异构群内存(8GB)和从核局部存储空间两部分组成。主核具有容量为32KB的L1数据Cache和256KB的L2Cache(数据和指令)。每个从核具有64KB的局部存储空间和16KB的指令存储,支持256位的SIMD指令集。从核可以通过直接访问或DMA方式访问主存。
[0004]面向E级高性能计算的加速器芯片(Liu Sheng,Lu Kai,Guo Yang,Liu Zhong,Chen Haiyan,Lei Yuanwu,Sun Haiyan,Yang Qianming,Chen Xiaowen,Chen Shenggang,Liu Biwei,Lu Jianzhuang.A Self

Designed Heterogeneous Accelerator for Exascale High Performance Computing[J].Journal of Computer Research and Development,2021,58(6):1234

1237.)采用了CPU+GPDSP的异构融合架构,由多核CPU和4个GPDSP_Cluster组成,如图3所示。多核CPU包含了16个FT

C662CPU内核。每个GPDSP_Cluster包含6个DSP节点(每个DSP节点包含4个DSP核)。多核CPU采用硬件维护Cache一致性,包含16MB的L2Cache。GPDSP簇采用80MB的私有存储、24MB的全局共享存储、32GB的HBM存储三级存储结构。在每个DSP核心上包括了64KB的私有标量内存SM和768KB的私有向量内存AM。DSP内核采用了超长指令字(Very Long Instruction Word,VLIW)技术和标向量协同融合的结构.向量部件由16个同构的VPE阵列组成,最高支持1024位的SIMD指令操作。
[0005](2)国产众核处理器体系结构抽象
[0006]以SW26010、面向E级高性能计算的加速器芯片为例,国产众核高性能微处理器具有以下特点:
[0007]1、它们都采用了非对称的结构,包括少量复杂的主核和数量众多的较为简单的计算核,主处理器负责处理复杂的逻辑控制任务,协处理器负责处理计算密度高、逻辑分支简单的大规模数据并行任务。
[0008]2、每个计算核都具有独立的局部存储器空间,而且这些存储器空间不具备Cache一致性,需要程序员通过显式程序控制系统主存与各个计算核存储器之间的数据交换。
[0009]3、主核和从核之间的数据交换有两种方法:1)从核直接访问主核的内存空间,延迟较长,仅仅适用于传递控制信息;2)从核启动的DMA过程,可以传输规模较大的数据。
[0010]4、从核上支持SIMD指令,不同处理器的SIMD宽度各不相同。
[0011]5、从核上不具备多进程(线程)的操作系统支持,仅仅支持一个线程在从核上运
行。不同的处理器具有不同的从核线程编程接口。
[0012]可以使用图4所述的抽象结构描述这两种不同类型的众核处理器。一个主核和N个从核构成一个完整的处理器簇。主核通过片上Cache并访问主存。从核具有局部存储器,且不支持Cache一致性协议,由DMA完成主核内存和从核之间的数据交换。每个从核上都具有SIMD指令系统。不同的处理器中,SIMD的数据宽度不尽相同。表1给出了SW26010和面向E级计算的异构融合加速器的主要体系结构参数。
[0013](3)已有多核处理器编程模型
[0014]OpenMP(DE SUPINSKI B R,SCOGLAND T R W,DURANA,et al.The ongoing evolution of openmp[J].Proceedings of the IEEE,2018,106(11):2004

2019.)是当前对称多处理器系统上的常见多线程编程接口,得到了广泛支持。基于该标准开发的应用程序具有良好的可移植性。
[0015]Cilk(Leiserson,Charles E.;Plaat,Aske(1998)."Programming parallel applications in Cilk".SIAM News.31.)是一种基于任务的多线程并行编程扩展。在此基础上,Cilk++(Leiserson C E.The Cilk++concurrency platform[J].The Journal of Supercomputing,2010,51(3):244

257.)使用了_Cilk_for、_Cilk_spawn和_Cilk_sync三个关键字对C/C++进行并行扩展。运行时应用分而治之的方法在工作线程之间调度任务,以确保多个线程负载均衡。
[0016]Intel公司提出了开源线程构建库TBB(Threading Building Blocks)(Anonymous"Intel threading building blocks;outfitting C++for multi

core processor parallelism,"SciTech Book News,vol.32,(3),2008.//REINDERS J.Intel threading building blocks:Outfitting c++for multi

core processor parallelism 1st edition)。TBB以任务为调度单位,并在POSIX和Windows线程库上具有可移植性。2018年,Intel公司又公布了OneAPI的软件编程框架。OneAPI旨在提供一个适用于CPU、GPU、FPGA、神经网络处理器,或者其他硬件加速器的统一编程模型和应用程序接口。OneAPI的核心是Data Parallel C++(DPC++)(James Reinders et al.Data Parallel C++[M].Apress,Berkeley,CA,2021.Gerhard R.Joubert,Hugh Leather本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于局部存储器的主核与从核之间消息传递系统,其特征在于,包括主核集合M,分别记为m1,

,m
|M|
,其中|M|表示主核集合M中主核的数量;主核m
i
对应一个或多个从核集合S
a
,且满足|S
a
|=|S
b
|,|S
a
|表示从核集合S
a
中的从核数量,1≤a,b≤M;通过从核线程管理接口,一个主核m
i
可以管理从核集合S
i
,1≤i≤|M|;其中,在创建第i个主核m
i
到第i个从核集合S
i
中的第j个从核s
i,j
的第k个消息队列q
i,j,k
时,其中,s
i,j
∈S
i
,1≤j≤|S
i
|,1≤k,可以利用调用接口在主核m
i
和从核s
i,j
的内存中创建对应的消息队列q
i,j,k
,所有的主核m
i
到从核s
i,j
的消息队列q
i,j,k
构成了集合Q,q
i,j,k
∈Q,完成主核m
i
和从核s
i,j
之间的连接;主核m
i
或从核s
i,j
通过消息发送机制,将一系列的消息r
x
,,传输到消息队列q
i,j,k
之中,得到消息序列集合R,对其中的消息进行有序的发送,1≤x,r
x
∈R;从核s
i,j
或主核m
i
根据消息队列q
i,j,k
的相关信息,从消息序列R中选择对应的消息r
x
,其中r
x
∈R,1≤x≤|R|,用户获取消息r
x
,完成自定义的对消息r
x
的处理后,消息队列q
i,j,k
中释放该消息r
x
所用内存;从核s
i,j
处理完数据之后注销从核s
i,j
的缓存,主核m
i
的运行线程回收从核s
i,j
的线程并继续处理主核m
i
的其余任务,若没有任务则主核m
i
注销缓存,程序多线程并行结束。2.根据权利要求1所述的基于局部存储器的主核与从核之间消息传递系统,其特征在于,在主核上创建消息队列,需要指明以下参数:字符串类型的消息队列名称qName、连接的从核编号slaveID、消息的尺寸msgSize、消息队列在主核部分容纳的消息数量mSize、在从核部分容纳的消息数量sSize、主核消息队列的起始地址mQaddr、消息队列在从核中所占用的存储器类型sType以及消息队列的方向direction;调用成功后将返回句柄号handle;其中,主核以(从核编号,句柄号)或者(从核编号,队列名称)标识一个队列实体;从核以句柄号或者队列名称作为队列的唯一标识号,以确定唯一的队列实体;同一个的队列在主核上的句柄与从核上的句柄相同;消息队列仅仅用于主核和从核之间的通信,用户可以指定队列所在的从核slaveID;在一对主核和从核之间,可以设置多个;不同的消息队列;消息队列中每个消息的尺寸不大于msgSize个字节;一个消息队列分布在主核存储器和从核的局部存储器中,两者容纳的消息数量分别为mSize和sSize;消息队列在主核存储器上的起始地址是由应用程序指定的连续存储器空间,起始地址为mQaddr;如果从核上的局部存储器具有不同类型,可以通过从核存储器类型sType指定该消息队列所占用的局部存储器类型;消息队列采用单向,分为主核写入/从核读出,从核写入主核/读出两种方向,由direction参数指定;主核可以在主核与一个从核之间创建多个消息队列,主核与全部从核之间的消息队列构成了消息队列集合;主核根据从核线程管理接口完成对从核线程的控制,主要为接口创建并启动从核线程组、等待线程组终止、关闭线程组、主核加载镜像文件到设备。
3.根据权利要求2所述的基于局部存储器的主核与从核之间消息传递系统,其特征在于,一个消息队列在主核部分和从核部分都具有一块连续的存储空间存放消息内容,两者能容纳的消息数量分为mSize和sSize,所占用的存储器容量分别为mSize
×
msgSize字节和sSize
×
msgSize字节;消息队列从核部分的容量受限于局部存储器的容量;每个消息队列的控制信息布局分为两个部分:状态列表和位置索引;位置索引分为:与主核位置相关的IMTran、IMReady、IMLocked和IMIdle,与从核位置相关的ISTran、ISReady、ISLocked和ISIdle;根据消息队列方向的不同也会有不同的设计,在主核发往从核的消息队列控制信息布局中,IMLocked和IMIdle存储在主核地址区域;IMTran、IMReady和其余4个位置索引均位于从核局部存储器;而在从核发往主核的消息队列控制信息布局中IMReady、IMLocked和IMIdle存储在主核地址区域;IMTran和其余4个位置索引均位于从核局部存储器;IMTran表示主核空间中第一个消息块状态为传输中的消息位置索引;IMReady表示主核空间中第一个消息块状态为消息准备好的消息位置索引;IMLocked表示主核空间中第一个消息块状态为消息锁定中的消息位置索引;IMIdle表示主核空间中第一个消息块状态为消息空闲中的消息位置索引;ISTran表示从核空间中第一个消息块状态为传输中的消息位置索引;ISReady表示从核空间中第一个消息块状态为消息准备好的消息位置索引;ISLocked表示从核空间中第一个消息块状态为消息锁定中的消息位置索引;ISIdle表示从核空间中第一个消息块状态为消息空闲中的消息位置索引;状态列表中每个状态与环形的消息块数据区中的每个消息块一一对应;主核部分的消息块状态列表和从核部分的消息块状态列表分别记为MState和SState,分别处于主核地址区域和从核局部存储器;一个消息队列分为主核部分和从核部分;在消息队列创建时,主核部分和从核部分能容纳的消息数量就已经确定。4.根据权利要求3所述的基于局部存储器的主核与从核之间消息传递系统,其特征在于,在主核到从核的消息队列中,一个消息块在主核部分的状态包括:MasterIdle,MasterLocked,MasterReady,MTransferring;一个消息块在从核部分的状态包括SlaveIdle,STransferring,SlaveReady,SlaveLocked;每个消息块的状态信息都存储在各自存储器中;消息队列创建后,主核部分所有的消息块都处于MasterIdle状态,从核部分所有消息块处于SlaveIdle状态;MasterIdle表示主核中该消息块为空闲可分配状态,MasterLocked表示主核中该消息块为锁定状态,MasterReady表示主核中该消息块为准备好可使用状态,MTransferring表示主核中该消息块为传输中状态;SlaveIdle表示从核中该消息块为空闲可分配状态,STransferring表示从核中该消息块为传输中状态,SlaveReady表示从核中该消息块为准备好可使用状态,SlaveLocked表示从核中该消息块为锁定状态;基于局部存储器的主核与从核之间消息传递系统为主核应用程序所提供的接口包括:M1、mAllocateMsg(),在消息队列主核部分获得一个消息块的地址;
M2、mSendMsg(),启动主核向从核传递消息;M3、mRecvMsg(),接收一个从核发送来的消息;M4、mReleaseMsg(),释放一个主核部分的消息;所述的消息队列系统为从核应用程序所提供的接口包括:S1、sRecvMsg(),接收一个主核发送来的消息;S2、sReleaseMsg(),释放一个从核部分的消息;S3、sAllocateMsg(),在消息队列从核部分获得一个消息块的地址;S4、sSendMsg(),启动从核向主核传递消息;上述接口中,M1、M2、S1和S2用于主核向从核传递消息,M3、M4、S3和S4用于从核向主核传递消息。5.根据权利要求4所述的基于局部存储器的主核与从核之间消息传递系统,其特征在于,从主核向从核发送一个消息的操作序列包括:a1、主核应用程序调用mAllocateMsg();基于局部存储器的主核与从核之间消息传递系统在消息队列的主核部分中分配一个位置索引IMIdle指向的空闲的消息块,设置该块为MasterLocked状态,循环移动IMIdle,将该块地址MasterMsg返回给主核应用程序;a2、主核应用程序在MasterMsg指向的空闲消息块中设置需要发送的消息;a3、主核应用程序调用mSendMsg(),取得位置索引IMLocked指向的第一个消息块MasterMsg,基于局部存储器的主核与从核之间消息传递系统将设置消息块MasterMsg为MasterReady状态,循环移动IMLocked;a4、基于局部存储器的主核与从核之间消息传递系统在设定的时机,为需要传输的消息块在从核部分分配一个位置索引ISIdle指向的空闲的消息块消息存储空间SlaveMsg,循环移动ISIdle;启动DMA将MasterMsg中的消息块传输SlaveMsg,取得位置索引IMReady指向的第一个消息块MasterMsg,并将消息块MasterMsg设置为MTransferring状态,将SlaveMsg设置为STransferring状态;当DMA传输结束后,基于局部存储器的主核与从核之间消息传递系统将从核消息块位置索引ISTran指向的消息块SlaveMsg设置为SlaveReady状态,将主核消息块位置索引IMTran指向的消息块MasterMsg设置为MasterIdle状态;a5、从核应用程序调用sRecvMsg();消息队列向从核应用程序返回已经处于从核部分的位置索引ISReady指向的消息块SlaveMsg,将其设置为SlaveLocked;a6、从核应用程序读取SlaveMsg中的内容;a7、从核应用程序调用sReleaseMsg();消息队列将从核消息块SlaveMsg设置为SlaveIdle状态;从核向主核发送一个消息的操作序列包括:b1、从核应用程序调用sAllocateMsg();基于局部存储器的主核与从核之间消息传递系统...

【专利技术属性】
技术研发人员:陈虎周鹏灵
申请(专利权)人:广东省科技基础条件平台中心
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1