一种面向众核处理器的并发通信方法、装置、设备和介质制造方法及图纸

技术编号:38236895 阅读:6 留言:0更新日期:2023-07-25 18:01
本申请涉及一种面向众核处理器的并发通信方法、装置、设备和介质。所述方法包括:在发送和接收报文数据时,分别为虚拟端口在主存中设置报文发送缓冲区和报文接收缓冲区,并通过锁机制进行访问,并在网卡芯片设置缓冲区的计数器和读指针或写指针,由发送端或接收端软件和网卡硬件协同构成虚拟端口队列状态管理机制。本发明专利技术可以支持每个进程形成独占硬件的编程视图,允许多个进程在用户空间受保护地并发访问通信硬件资源,以确保并发通信时通信操作请求处理的原子性。此外,基于网卡硬件的软硬件协同虚拟端口队列状态管理机制,提高了内存中虚拟端口队列的利用效率与访问性能,提高了报文读写速度。报文读写速度。报文读写速度。

【技术实现步骤摘要】
一种面向众核处理器的并发通信方法、装置、设备和介质


[0001]本申请涉及计算机系统结构领域,特别是涉及一种面向众核处理器的并发通信方法、装置、设备和介质。

技术介绍

[0002]近年来,高性能计算机(High Performance Computer,HPC)不仅在传统科学计算领域发挥着重要作用,而且为人工智能等技术的发展提供了算力基础。随着对HPC算力需求的不断提高,单个计算节点的计算能力也在不断提高。为解决单个节点计算能力提高带来的功耗、延迟、设计复杂度急剧上升的难题,越来越多的高性能计算平台采用了拥有几十甚至上百核心的众核处理器。例如,使用Intel Xeon Phi众核协处理器的超级计算机可以实现每秒千万亿次的浮点计算能力。
[0003]众核处理器可以同时执行的进程数量与核数成正比。同时,对HPC系统中软件的运行分析表明,并行计算任务主要提交至少量节点,因此每个节点往往会同时启动数十乃至上百进程。这些进程一般通过消息传递接口(Message Passing Interface,MPI)进行。MPI是一种流行的并行编程模型,用于开发并行计算应用,例如科学计算和大规模人工智能模型训练。MPI应用程序通常需要执行大量的通信操作,包括点对点通信和聚合通信。因此,通信操作的时间开销与并行程序的执行时间密切相关,高性能的并行程序需要低延迟的进程间通信。
[0004]然而,众核处理器同时启动的大量进程并发执行通信操作时,通信时延往往较高。这是因为当前互连网络接口芯片中通信硬件接口数量有限,因此能够同时支持的通信连接数往往有限。当大量进程同时需要通信数据时,需要首先获得互连网络接口芯片中寄存器等硬件资源的访问权限。因此不同的通信操作需要对通信硬件资源竞争以通信数据,当通信硬件资源较少时,无法支持超出通信硬件资源限制的进程进行通信。
[0005]国际上主流的互连网络解决方案中,Infiniband通过QP来解决进程数量与通信接口数量不匹配的问题。进程通过分配QP来创建虚拟通信端口,通信发生在源节点的QP和目的节点的QP之间。多个进程并发通信时,发送和接收数据将被放入各自的QP当中,然后以轮询的方式发送、接收QP中的数据。日本富士公司推出的Tofu互连网络中也实现了类似的生产者

消费者模式的队列。然而,现有网卡的并发通信方案中,有的硬件参与程度较低,通信延迟不理想;有的网卡过度依赖于处理器和网卡的高度集成,无法支持跨PCIE等总线的主机/网卡间的软硬件通信。因此,现有技术存在适应性不佳的问题。

技术实现思路

[0006]基于此,有必要针对上述技术问题,提供一种能够支持众核处理器大规模并发通信的软硬件协同机制的面向众核处理器的并发通信方法、装置、计算机设备和存储介质。
[0007]一种面向众核处理器的并发通信方法,所述方法包括:基于众核处理器的高性能计算机系统中多个进程并发通信时,由发送端进程确定
用于数据发送的第一虚拟端口;所述第一虚拟端口在主存中分配有专用的报文发送缓冲区;所述第一虚拟端口对应的网卡芯片中设置了所述报文发送缓冲区的报文预发送计数器和报文发送缓冲区读指针;由发送端程序通过锁机制获取所述报文发送缓冲区的访问权限后,将要发送的数据封装为传输层报文写入所述报文发送缓冲区,并根据写入的报文数量更新所述报文预发送计数器的值,释放所述报文发送缓冲区的锁;由网卡芯片通过检测所述报文预发送计数器的值,根据所述报文发送缓冲区读指针启动传输层报文读取过程;由接收端进程确定用于数据接收的第二虚拟端口;所述第二虚拟端口在主存中分配有专用的报文接收缓冲区;所述第二虚拟端口对应的网卡芯片中设置了所述报文接收缓冲区的报文预接收计数器和报文接收缓冲区写指针;由网卡芯片将接收到的数据以所述传输层报文的字节大小为单位,根据所述报文接收缓冲区写指针写入所述报文接收缓冲区,并由硬件修改所述报文预接收计数器的值;由所述接收端程序通过轮询所述报文预接收计数器获取所述报文接收缓冲区报文到达的信息,从所述报文接收缓冲区中读取数据,释放所述报文接收缓冲区的锁。
[0008]在其中一个实施例中,所述第一虚拟端口对应的网卡芯片中还设置了所述报文发送缓冲区的信用值,在将要发送的数据封装为传输层报文写入所述报文发送缓冲区之前,还包括:通过检查所述报文发送缓冲区的信用值判断所述报文发送缓冲区中是否还有存储空间,若没有,则返回错误信息。
[0009]在其中一个实施例中,还包括:将要发送的数据切分成传输层报文中的数据载荷;所述数据载荷大小为112字节;将所述数据载荷封装为传输层报文写入所述报文发送缓冲区;所述传输层报文为128字节,包括112字节的数据载荷、8字节报文头和8字节报文尾。
[0010]在其中一个实施例中,还包括:通过发送端程序访问所述报文发送缓冲区的写指针;所述报文发送缓冲区写指针指向所述报文发送缓冲区队列队首;在所述报文发送缓冲区队列队首写入所述传输层报文。
[0011]在其中一个实施例中,所述第一虚拟端口对应的网卡芯片中还设置了硬件动态共享缓冲区,由网卡芯片通过检测所述报文预发送计数器的值,根据所述报文发送缓冲区读指针启动传输层报文读取过程时,还包括:在多个发送端进程向各自虚拟端口的报文发送缓冲区中写入数据时,所述报文发送缓冲区中的数据将从主存写入所述硬件动态共享缓冲区中。
[0012]在其中一个实施例中,还包括:通过所述接收端程序通过所述报文接收缓冲区的读指针访问所述报文接收缓冲区队列队尾,读取所述报文接收缓冲区队尾的数据。
[0013]在其中一个实施例中,还包括:所述报文发送缓冲区的大小由分别配置的基地址和上界地址确定,大小可变,但最大不超过8M字节;所述报文发送缓冲区的所述基地址和所述上界地址存储在所述网卡芯片中;所述报文接收缓冲区的大小由分别配置的基地址和上界地址确定,大小可变,但最大不超过8M字节;所述报文接收缓冲区的所述基地址和所述上界地址存储在所述网卡芯
片中。
[0014]一种面向众核处理器的并发通信装置,所述装置包括:第一虚拟端口确定模块,用于基于众核处理器的高性能计算机系统中多个进程并发通信时,由发送端进程确定用于数据发送的第一虚拟端口;所述第一虚拟端口在主存中分配有专用的报文发送缓冲区;所述第一虚拟端口对应的网卡芯片中设置了所述报文发送缓冲区的报文预发送计数器和报文发送缓冲区读指针;数据发送模块,用于由发送端程序通过锁机制获取所述报文发送缓冲区的访问权限后,将要发送的数据封装为传输层报文写入所述报文发送缓冲区,并根据写入的报文数量更新所述报文预发送计数器的值,释放所述报文发送缓冲区的锁;网卡读取模块,用于由网卡芯片通过检测所述报文预发送计数器的值,根据所述报文发送缓冲区读指针启动传输层报文读取过程;第二虚拟端口确定模块,用于由接收端进程确定用于数据接收的第二虚拟端口;所述第二虚拟端口在主存中分配有专用的报文接收缓冲区;所述第二虚拟端口对应的网卡芯片中设置了所述报文接收缓冲区的报文预接收计数器和报文接收缓冲区写指针;网卡写入模块,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向众核处理器的并发通信方法,其特征在于,所述方法包括:基于众核处理器的高性能计算机系统中多个进程并发通信时,由发送端进程确定用于数据发送的第一虚拟端口;所述第一虚拟端口在主存中分配有专用的报文发送缓冲区;所述第一虚拟端口对应的网卡芯片中设置了所述报文发送缓冲区的报文预发送计数器和报文发送缓冲区读指针;由发送端程序通过锁机制获取所述报文发送缓冲区的访问权限后,将要发送的数据封装为传输层报文写入所述报文发送缓冲区,并根据写入的报文数量更新所述报文预发送计数器的值,释放所述报文发送缓冲区的锁;由网卡芯片通过检测所述报文预发送计数器的值,根据所述报文发送缓冲区读指针启动传输层报文读取过程;由接收端进程确定用于数据接收的第二虚拟端口;所述第二虚拟端口在主存中分配有专用的报文接收缓冲区;所述第二虚拟端口对应的网卡芯片中设置了所述报文接收缓冲区的报文预接收计数器和报文接收缓冲区写指针;由网卡芯片将接收到的数据以所述传输层报文的字节大小为单位,根据所述报文接收缓冲区写指针写入所述报文接收缓冲区,并由硬件修改所述报文预接收计数器的值;由所述接收端程序通过轮询所述报文预接收计数器获取所述报文接收缓冲区报文到达的信息,从所述报文接收缓冲区中读取数据,释放所述报文接收缓冲区的锁。2.根据权利要求1所述的方法,其特征在于,所述第一虚拟端口对应的网卡芯片中还设置了所述报文发送缓冲区的信用值,在将要发送的数据封装为传输层报文写入所述报文发送缓冲区之前,还包括:通过检查所述报文发送缓冲区的信用值判断所述报文发送缓冲区中是否还有存储空间,若没有,则返回错误信息。3.根据权利要求1所述的方法,其特征在于,将要发送的数据封装为传输层报文写入所述报文发送缓冲区,包括:将要发送的数据切分成传输层报文中的数据载荷;所述数据载荷大小为112字节;将所述数据载荷封装为传输层报文写入所述报文发送缓冲区;所述传输层报文为128字节,包括112字节的数据载荷、8字节报文头和8字节报文尾。4.根据权利要求1所述的方法,其特征在于,所述将要发送的数据封装为传输层报文写入所述报文发送缓冲区,还包括:通过发送端程序访问所述报文发送缓冲区的写指针;所述报文发送缓冲区写指针指向所述报文发送缓冲区队列队首;在所述报文发送缓冲区队列队首写入所述传输层报文。5.根据权利要求1所述的方法,其特征在于,所述第一虚拟端口对应的网卡芯片中还设置了硬件动态共享缓冲区,由网卡芯片通过检测所述报文预发送计数器的值,根据所述报文发送缓冲区读指针启动传输层报文读取过程时,还包括:在多个发送端进程向各自虚拟端口的...

【专利技术属性】
技术研发人员:卢凯葛可适赖明澈徐金波马迪谢旻齐星云董勇张伟徐佳庆陆平静
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

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

1