CN115242563A - 一种网络通信方法、计算设备及可读存储介质 - Google Patents
一种网络通信方法、计算设备及可读存储介质 Download PDFInfo
- Publication number
- CN115242563A CN115242563A CN202210731163.1A CN202210731163A CN115242563A CN 115242563 A CN115242563 A CN 115242563A CN 202210731163 A CN202210731163 A CN 202210731163A CN 115242563 A CN115242563 A CN 115242563A
- Authority
- CN
- China
- Prior art keywords
- function
- ucx
- processor
- computing device
- loongson
- 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
- 238000004891 communication Methods 0.000 title claims abstract description 81
- 238000000034 method Methods 0.000 title claims abstract description 67
- 230000006870 function Effects 0.000 claims description 160
- 238000004364 calculation method Methods 0.000 claims description 10
- 230000014509 gene expression Effects 0.000 claims description 7
- 238000012360 testing method Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000009434 installation Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 230000007723 transport mechanism Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000011068 loading method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种网络通信方法,在计算设备中执行,计算设备包括预设处理器,该方法包括:获取网络通信软件框架UCX;在UCX中添加支持预设处理器架构的目标函数以及在UCX的获取处理器模式函数中增加获取预设处理器模式的功能,获得目标UCX;在计算设备上编译安装目标UCX,以使计算设备利用目标UCX提供的接口进行网络通信。本发明一并公开了相应的计算设备及可读存储介质。本发明的网络通信方法能够使原有UCX所不支持的架构平台也能利用其所提供的接口来实现高速网络互连通信。
Description
本申请是2021年06月25日提交的发明专利申请2021107103827的分案申请。
技术领域
本发明涉及计算机领域,尤其涉及一种网络通信方法、计算设备及可读存储介质。
背景技术
随着计算需求的与日剧增,高性能并行计算变得越来越重要。其中,高速互连网络通信是高性能并行计算中的重要组成部分,对高性能并行计算的计算效率有着至关重要的作用。现有能实现高速网络互连通信的有UCX(统一通信X)。
UCX是一个网络通信框架(库和接口的集合),为构建广泛使用的HPC(高性能计算)协议提供了有效且相对简单的方法:标签匹配、远程内存访问操作、流、远程原子操作等。
然而,现有的UCX可扩展性较差,仅支持X86_64、Power8、Power9和Arm v8架构。因此,基于其他架构的平台无法利用UCX所提供的接口来实现高速网络互连通信。
发明内容
为此,本发明提供了一种网络通信方法、计算设备及可读存储介质,以力图解决或者至少缓解上面存在的问题。
根据本发明的一个方面,提供一种网络通信方法,在计算设备中执行,计算设备包括预设处理器,该方法包括:获取网络通信软件框架UCX;在UCX中添加支持预设处理器架构的目标函数以及在UCX的获取处理器模式函数中增加获取预设处理器模式的功能,获得目标UCX,目标函数包括刷新处理器数据和指令缓存函数、计算二进制编码中前导零函数以及内联钩子函数;在计算设备上编译安装目标UCX,以使计算设备利用目标UCX提供的接口进行网络通信。
可选地,在根据本发明的网络通信方法中,预设处理器为龙芯处理器。
可选地,在根据本发明的网络通信方法中,在UCX中添加支持预设处理器架构的目标函数的步骤,包括:在UCX的UCS部分添加支持预设处理器架构的刷新处理器数据和指令缓存函数以及计算二进制编码中前导零函数;在UCX的UCM部分添加支持预设处理器架构的内联钩子函数。
可选地,在根据本发明的网络通信方法中,在UCX的获取处理器模式函数中增加获取预设处理器模式的功能的步骤,包括:在处理器模式枚举类型中添加预设处理器模式枚举项;在获取处理器模式函数中增加获取预设处理器模式枚举项的逻辑。
可选地,在根据本发明的网络通信方法中,在UCX的UCS部分添加支持预设处理器架构的刷新处理器数据和指令缓存函数后,通过如下内联汇编表达式来刷新预设处理器数据和指令缓存:
asm volatile("sync":::"memory")
其中,asm用于声明一个内联汇编表达式,volatile用于向编译器声明不对该内联汇编进行优化,sync用于在LoongISA架构中刷新处理器数据和缓存,memory用于声明内存已发生改动。
可选地,在根据本发明的网络通信方法中,在UCX的UCS部分添加支持预设处理器架构的计算二进制编码中前导零函数后,利用LoongISA架构的计算前导零指令来计算二进制编码中前导零的个数。
可选地,在根据本发明的网络通信方法中,在UCX的UCM部分添加支持预设处理器架构的内联钩子函数后,内联钩子函数通过如下方式来实现用UCX所自定义的函数替换调用的系统库函数:当调用系统库函数时,获取调用的系统库函数的地址,并获取与调用的系统库函数相对应的UCX所自定义的函数的地址;将跳转指令与获取的UCX所自定义的函数的地址写入调用的系统库函数的地址处。
可选地,在根据本发明的网络通信方法中,在UCX的获取处理器模式函数中增加获取预设处理器模式的功能后,通过如下方式来确定当前处理器为预设处理器:当获取处理器模式函数返回值为预设处理器模式的枚举项时,确定当前处理器为预设处理器。
根据本发明的又一个方面,提供一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,程序指令被配置为适于由至少一个处理器执行,程序指令包括用于执行根据本发明的网络通信方法的指令。
根据本发明的又一个方面,提供一种存储有程序指令的可读存储介质,当程序指令被计算设备读取并执行时,使得计算设备执行根据本发明的网络通信方法。
根据本发明的网络通信方法,首先获取网络通信软件框架UCX。然后,在UCX中添加支持预设处理器架构的目标函数以及在UCX的获取处理器模式函数中增加获取预设处理器模式的功能,获得目标UCX。在获得目标UCX后,在包括预设处理器的计算设备上编译安装目标UCX。这样,包括预设处理器的计算设备便可以利用目标UCX所提供的接口实现高速互联网络通信,从而能够提升该计算设备高性能并行计算的效率。可见,本发明的网络通信方法能够使原有UCX所不支持的架构平台也能利用其所提供的接口来实现高速网络互连通信,从而能够提升各平台高性能并行计算的效率。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的计算设备100的结构框图;
图2示出了根据本发明一个实施例的网络通信方法200的流程图;
图3示出了根据本发明一个实施例的使用了Inline Hook方法的函数调用流程的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
随着国产自主化进度的加快以及信创产业的快速发展,实现核心技术的自主可控变得越来越重要。其中,为了实现CPU的自主可控,我国自主研发了龙芯处理器。目前,龙芯处理器已被广泛应用于各行各业。
龙芯处理器基于的是龙芯(LoongISA)架构。基于前文的描述可知,现有的UCX并不支持LoongISA架构。因此,为解决在龙芯平台上支持高性能以及可并行通信的问题,本发明根据现有的UCX实现了一种支持龙芯平台的基于高速网络进行节点间通信的方法。进一步地讲,基于共享内存机制实现高效的节点内通信的UCX通信接口。
图1示出了根据本发明一个实施例的计算设备100的结构框图。需要说明的是,图1所示的计算设备100仅为一个示例,在实践中,用于实施本发明的网络通信方法的计算设备可以是任意型号的设备,其硬件配置情况可以与图1所示的计算设备100相同,也可以与图1所示的计算设备100不同。实践中用于实施本发明的网络通信方法的计算设备可以对图1所示的计算设备100的硬件组件进行增加或删减,本发明对计算设备的具体硬件配置情况不做限制。
如图1所示,在基本配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。
取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。
取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。计算设备中的物理内存通常指的是易失性存储器RAM,磁盘中的数据需要加载至物理内存中才能够被处理器104读取。系统存储器106可以包括操作系统120、一个或者多个应用122以及程序数据124。在一些实施方式中,应用122可以布置为在操作系统上由一个或多个处理器104利用程序数据124执行指令。操作系统120例如可以是Linux、Windows等,其包括用于处理基本系统服务以及执行依赖于硬件的任务的程序指令。应用122包括用于实现各种用户期望的功能的程序指令,应用122例如可以是浏览器、即时通讯软件、软件开发工具(例如集成开发环境IDE、编译器等)等,但不限于此。当应用122被安装到计算设备100中时,可以向操作系统120添加驱动模块。
在计算设备100启动运行时,处理器104会从系统存储器106中读取操作系统120的程序指令并执行。应用122运行在操作系统120之上,利用操作系统120以及底层硬件提供的接口来实现各种用户期望的功能。当用户启动应用122时,应用122会加载至系统存储器106中,处理器104从系统存储器106中读取并执行应用122的程序指令。
计算设备100还包括储存设备132,储存设备132包括可移除储存器136和不可移除储存器138,可移除储存器136和不可移除储存器138均与储存接口总线134连接。
计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个A/V端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个I/O端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
在根据本发明的计算设备100中,应用122包括用于执行本发明的网络通信方法200的指令,该指令可以指示处理器104执行本发明的网络通信方法。本领域技术人员可以理解,除了用于执行网络通信方法200的指令之外,应用122还可以包括用于实现其他功能的其他应用126。
图2示出了根据本发明一个实施例的网络通信方法200的流程图,方法200适于在计算设备(例如图1所示的计算设备100)中执行。该计算设备包括预设处理器。其中,预设处理器可以为网络通信软件框架UCX所不支持的处理器。根据本发明的一个实施例,预设处理器为龙芯处理器。
如图2所示,本发明的网络通信方法200始于步骤S210。在步骤S210中,获取网络通信软件框架UCX。
为了便于理解本发明,在此对UCX进行一个说明。UCX主要包括UCS、UCM、UCT和UCP四个部分。具体地:
UCS是一个服务层,为实现可移植的高效实用程序提供必要的功能。该层主要包括以下服务:用于访问平台特定功能(原子操作,线程安全性等)的抽象、用于高效内存管理的工具(内存池,内存分配器等)、常用的数据结构(哈希,树,列表)。
UCM主要是负责拦截内存注册缓存使用的内存分配和释放事件。
UCT是一个传输层,抽象了各种硬件体系结构之间的差异,并提供了一个底层API,可实现通信协议。该层的主要目标是提供对硬件网络功能的直接有效访问。此外,该层还提供了通信上下文管理(基于线程和应用程序级别)以及对服务器的分配和管理的构造。在通信API方面,根据数据长度的不同,UCT定义了短数据传输(short)、带数据拷贝的传输(bcopy)和零拷贝的传输(zcopy)的通信方式。短数据传输(short),此类型的操作针对短数据的传输进行了优化。带数据拷贝的传输(bcopy),这种类型的操作针对通过所谓的反弹缓冲区发送的中等大小的消息进行了优化。通常在给定网络限制的情况下分配该辅助缓冲区,并准备由硬件立即使用。由于可以提供自定义数据打包例程,因此该方法可以用于非连续的I/O。零拷贝的传输,这种类型的操作使得消息直接从用户缓冲区发送,或者直接从用户缓冲区接收,而无需在网络层之间进行复制。
UCP通过使用UCT层公开的较低级功能来实现MPI和PGAS等并行编程模型所使用的较高级协议。UCP主要提供以下功能:初始化、远程内存访问(RMA)通信、远程原子内存操作(AMO)、活动消息、标签匹配。初始化,此接口的功能包括通信上下文的设置,查询网络功能并初始化本地通信端点。通信上下文表示的是网络传输资源的抽象。通信端点设置接口初始化UCP端点,这是与特定连接关联的所有必要资源的抽象。通信端点用作所有通信操作的输入,以描述通信的源和目标。远程内存访问(RMA)通信,此接口定义了实现分布式和共享内存编程模型所需的低开销,直接访问内存通信结构所需的单面通信操作(例如PUT和GET)。UCP包含一组单独的接口,用于传递不连续的数据。包含此功能是为了支持各种编程模型的通信要求,并利用现代网络硬件的分散聚集功能。远程原子内存操作(AMO),此接口提供了对远程存储器上原子执行操作的支持,这是PGAS编程模型(尤其是OpenSHMEM)的一种重要操作。标签匹配,此接口支持发送-接收语义的标签匹配,这是MPI规范定义的关键通信语义。活动消息(Active Message),此接口实现了对传入的数据包调用发件人指定的回调,以便由接收过程进行处理。例如,可以在这种概念的上层轻松实现双面MPI接口。但是,这些接口更为通用,适用于其他程序设计范例,在这些程序设计中,接收器进程不会预先发布接收,而是希望直接对传入的数据包做出反应。与RMA和标签匹配接口一样,活动消息接口为不同的消息类型和不连续的数据提供了单独的API。流,此接口提供顺序和可靠的通信语义。数据被视为通过连接推送的字节的有序序列。与标签匹配接口相反,只要字节总数相同,每个发送方的大小不一定要与每个接收方的大小相匹配。此API旨在匹配广泛使用的BSD套接字基于编程模型。
随后进入步骤S220,在UCX中添加支持预设处理器架构的目标函数以及在UCX的获取处理器模式函数中增加获取预设处理器模式的功能,获得目标UCX。目标函数包括刷新处理器数据和指令缓存函数、计算二进制编码中前导零函数以及内联钩子函数。
其中,在UCX中添加支持预设处理器架构的目标函数时,涉及到的是UCX的UCS部分和UCM部分。具体地,在UCX的UCS部分添加支持预设处理器架构的刷新处理器数据和指令缓存函数以及计算二进制编码中前导零函数。在UCX的UCM部分添加支持预设处理器架构的内联钩子函数。
根据本发明的一个实施例,刷新处理器数据和指令缓存的函数通过内联汇编的方式实现。具体地,可以通过内联汇编表达式asm volatile("sync":::"memory")来实现。其中,asm(内联汇编表达式都以此为开头)用于声明一个内联汇编表达式。volatile用于向编译器声明不对该内联汇编进行优化。sync(sync是LoongISA架构刷新处理器数据和缓存的指令)用于在LoongISA架构中刷新处理器数据和缓存。memory用于声明内存已发生改动,即告诉编译器内存已发生改动,需直接到相应的内存中去读取,不应再使用存放在寄存器中的拷贝。
计算二进制编码中前导零的函数也通过内联汇编的方式实现。具体地,可以通过LoongISA架构的计算前导零指令来实现。其中,LoongISA架构的计算前导零指令包括clz汇编指令和dclz汇编指令。clz是返回32位二进制编码中第一个1前面0的个数,dclz是返回64位二进制编码中第一个1前面0的个数。
另外,关于在UCX的UCM部分添加支持预设处理器架构的内联钩子函数这一步骤,在此先说明一点。在UCX的UCM部分添加支持预设处理器架构的内联钩子函数的目的是,用UCX所自定义的函数替换系统库函数。具体而言,当某一程序调用某一系统库函数时,用与该系统库函数相对应的UCX所自定义的函数来替换该系统库函数。即,当某一程序调用某一系统库函数时,并不执行该系统库函数,而是执行与该系统函数相对应的UCX所自定义的函数。
其中,内联钩子(Inline Hook)是通过修改机器码的方式来实现用UCX所自定义的函数替换系统库函数。具体地,当程序调用系统库函数时,获取调用的系统库函数的地址,并获取与调用的系统库函数相对应的UCX所自定义的函数的地址。然后,将跳转指令与获取的UCX所自定义的函数的地址写入调用的系统库函数的地址处。这样,当某一程序执行系统库函数调用时,便会跳转到与该系统库函数相对应的自定义函数处执行。
具体地可参见3,图3示出了根据本发明一个实施例的使用了Inline Hook方法的函数调用流程的示意图。当某一程序执行系统库函数调用时,首先跳转到系统调用地址处。然后执行系统调用地址处的跳转指令,跳转到用户自定义的函数地址处。待执行完用户自定义的函数后,再返回执行jalr的下一条语句。具体地实现步骤如下:
(1)构造跳转指令,通过机器码的方式将自定义函数地址赋值给t9寄存器,再跳转到t9寄存器。
(2)将构造指令写入系统调用的地址处。
(3)执行系统调用时跳转到自定义函数处执行。
(4)执行完自定义函数后,执行原有流程。
可见,在UCX的UCM部分添加支持预设处理器架构的Inline Hook方法后,当某一程序调用系统库函数时,便可以拦截该系统库函数,从而执行与该系统库函数相对应的UCX所自定义的函数。其中,系统库函数mmap、munmap、mremap、shmat、shmdt、sbrk、brk、madvise与UCX所定义的函数ucm_mmap、ucm_munmap、ucm_mremap、ucm_shmat、ucm_shmdt、ucm_sbrk、ucm_brk、ucm_madvise一一对应。
至此,在UCX中添加了支持预设处理器架构的刷新处理器数据和指令缓存函数、计算二进制编码中前导零函数以及内联钩子函数。
接下来,对在UCX的获取处理器模式函数中增加获取预设处理器模式的功能这一步骤进行说明。其中,此步是在UCX的UCS部分的获取处理器模式函数中来增加获取预设处理器模式的功能。
具体地,在处理器模式枚举类型中添加预设处理器模式枚举项,并在获取处理器模式函数中增加获取预设处理器模式枚举项的逻辑。这样,当获取处理器模式函数返回值为预设处理器模式的枚举项时,可以确定当前处理器为预设处理器。
下面以LoongISA架构作为一个示例进行说明,在枚举类型ucs_cpu_model_t中添加UCS_CPU_MODEL_LOONGISA枚举项,在ucs_arch_get_cpu_model函数中增加获取UCS_CPU_MODEL_LOONGISA枚举项的逻辑。这样,当ucs_arch_get_cpu_model函数接收到的返回值是UCS_CPU_MODEL_LOONGISA时,则表明CPU的模式是LoongISA。
至此,在UCX的UCS部分中添加了支持预设处理器架构的刷新处理器数据和指令缓存函数、计算二进制编码中前导零函数和获取预设处理器模式的功能,在UCX的UCM部分添加了支持预设处理器架构的内联钩子函数,得到了目标UCX。
在此说明一点,本发明利用UCS_TEST_F(test_math,bitops)测试函数对UCS中计算二进制编码中前导零函数的功能进行了测试,利用UCS_TEST_F(test_type,cpu_set)测试函数对UCS中的cpu模式功能进行了测试,利用UCS_TEST_F(malloc_hook_cplusplus,mmap_ptrs)和UCS_TEST_F(malloc_hook,bistro_patch)测试函数对UCM中的Inline Hook功能进行了测试。其中,在运行测试命令make-C test/gtest test后,各项测试均通过,这表明在UCX中增加对预设处理器的支持后,UCX便可以在基于预设处理器架构的平台上进行编译和运行。
在得到目标UCX后,进入步骤S230,在计算设备上编译安装目标UCX,以使计算设备利用目标UCX提供的接口进行网络通信。
其中,在UCM部分增加支持预设处理器架构的Inline Hook方法后,可以拦截系统库函数mmap、munmap、mremap、shmat、shmdt、sbrk、brk、madvise,从而执行UCX所定义的ucm_mmap、ucm_munmap、ucm_mremap、ucm_shmat、ucm_shmdt、ucm_sbrk、ucm_brk、ucm_madvise等函数。
在UCS部分中添加支持预设处理器架构的刷新处理器数据和指令缓存函数、计算二进制编码中前导零函数和获取预设处理器模式的功能后,可以获取到预设处理器的模式、刷新预设处理器数据和缓存以及计算二进制编码中前导零,继而可以使得UCS中其他的功能,如(原子操作,线程安全性等)的抽象、用于高效内存管理的工具(内存池,内存分配器等)、常用的数据结构(哈希,树,列表)等,也可以在基于预设处理架构的平台中使用。因此,在计算设备上编译安装目标UCX后,计算设备便可以利用目标UCX所提供的接口进行网络通信。
下面以龙芯处理器作为一个示例进行说明,在UCX的UCS部分添加支持LoongISA架构的刷新处理器数据和指令缓存函数以及计算二进制编码中前导零函数、在UCX的UCM部分添加支持LoongISA架构的内联钩子函数、在UCX的UCS部分的获取处理器模式函数中增加获取龙芯处理器模式的功能,得到目标UCX。得到的目标UCX支持龙芯平台,因此可以在龙芯平台上编译安装目标UCX。这样,在龙芯平台上便可以利用UCX所提供的接口来实现高速互联网络通信,从而能够提升龙芯平台上高性能并行计算的效率。
根据本发明的网络通信方法,首先获取网络通信软件框架UCX。然后,在UCX中添加支持预设处理器架构的目标函数以及在UCX的获取处理器模式函数中增加获取预设处理器模式的功能,获得目标UCX。在获得目标UCX后,在包括预设处理的计算设备上编译安装目标UCX。这样,包括预设处理的计算设备便可以利用目标UCX所提供的接口实现高速互联网络通信,从而能够提升该计算设备高性能并行计算的效率。可见,本发明的网络通信方法能够使原有UCX所不支持的架构平台也能利用其所提供的接口来实现高速网络互连通信,从而能够显著提升各平台上高性能并行计算的效率。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的文档加载方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
Claims (9)
1.一种网络通信方法,适于在计算设备中执行,所述计算设备包括龙芯处理器,所述方法包括:
获取网络通信软件框架UCX;
在所述UCX的UCS部分和UCM部分中添加支持龙芯处理器架构的目标函数以及在所述UCX的UCS部分的获取处理器模式函数中增加获取龙芯处理器模式的功能,获得目标UCX,所述目标函数包括刷新处理器数据和指令缓存函数、计算二进制编码中前导零函数以及内联钩子函数;
在所述计算设备上编译安装所述目标UCX,以使所述计算设备利用所述目标UCX提供的接口进行网络通信。
2.如权利要求1所述的方法,其中,在所述UCX的UCS部分和UCM部分中添加支持龙芯处理器架构的目标函数的步骤,包括:
在UCX的UCS部分添加支持龙芯处理器架构的刷新处理器数据和指令缓存函数以及计算二进制编码中前导零函数;
在UCX的UCM部分添加支持龙芯处理器架构的内联钩子函数。
3.如权利要求1或2所述的方法,其中,在所述UCX的UCS部分的获取处理器模式函数中增加获取龙芯处理器模式的功能的步骤,包括:
在处理器模式枚举类型中添加龙芯处理器模式枚举项;
在获取处理器模式函数中增加获取龙芯处理器模式枚举项的逻辑。
4.如权利要求2所述的方法,其中,在UCX的UCS部分添加支持龙芯处理器架构的刷新处理器数据和指令缓存函数后,通过如下内联汇编表达式来刷新龙芯处理器数据和指令缓存:
asm volatile("sync":::"memory")
其中,asm用于声明一个内联汇编表达式,volatile用于向编译器声明不对该内联汇编进行优化,sync用于在LoongISA架构中刷新处理器数据和缓存,memory用于声明内存已发生改动。
5.如权利要求2或4所述的方法,其中,在UCX的UCS部分添加支持龙芯处理器架构的计算二进制编码中前导零函数后,利用LoongISA架构的计算前导零指令来计算二进制编码中前导零的个数。
6.如权利要求2所述的方法,其中,在UCX的UCM部分添加支持龙芯处理器架构的内联钩子函数后,所述内联钩子函数通过如下方式来实现用UCX所自定义的函数替换调用的系统库函数:
当调用系统库函数时,获取调用的系统库函数的地址,并获取与调用的系统库函数相对应的UCX所自定义的函数的地址;
将跳转指令与获取的UCX所自定义的函数的地址写入调用的系统库函数的地址处。
7.如权利要求3所述的方法,其中,在所述UCX的UCS部分的获取处理器模式函数中增加获取龙芯处理器模式的功能后,通过如下方式来确定当前处理器为龙芯处理器:
当获取处理器模式函数返回值为龙芯处理器模式的枚举项时,确定当前处理器为龙芯处理器。
8.一种计算设备,包括:
至少一个处理器;以及
存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1-7中任一项所述方法的指令。
9.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-7中任一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210731163.1A CN115242563B (zh) | 2021-06-25 | 2021-06-25 | 一种网络通信方法、计算设备及可读存储介质 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210731163.1A CN115242563B (zh) | 2021-06-25 | 2021-06-25 | 一种网络通信方法、计算设备及可读存储介质 |
CN202110710382.7A CN113452532B (zh) | 2021-06-25 | 2021-06-25 | 一种网络通信方法、计算设备及可读存储介质 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110710382.7A Division CN113452532B (zh) | 2021-06-25 | 2021-06-25 | 一种网络通信方法、计算设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115242563A true CN115242563A (zh) | 2022-10-25 |
CN115242563B CN115242563B (zh) | 2023-11-14 |
Family
ID=77812729
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210731163.1A Active CN115242563B (zh) | 2021-06-25 | 2021-06-25 | 一种网络通信方法、计算设备及可读存储介质 |
CN202110710382.7A Active CN113452532B (zh) | 2021-06-25 | 2021-06-25 | 一种网络通信方法、计算设备及可读存储介质 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110710382.7A Active CN113452532B (zh) | 2021-06-25 | 2021-06-25 | 一种网络通信方法、计算设备及可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (2) | CN115242563B (zh) |
WO (1) | WO2022267304A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115242563B (zh) * | 2021-06-25 | 2023-11-14 | 统信软件技术有限公司 | 一种网络通信方法、计算设备及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6609158B1 (en) * | 1999-10-26 | 2003-08-19 | Novell, Inc. | Component architecture in a computer system |
CN106991329A (zh) * | 2017-03-31 | 2017-07-28 | 山东超越数控电子有限公司 | 一种基于国产tcm的可信计算单元及其运行方法 |
WO2019194873A1 (en) * | 2018-04-06 | 2019-10-10 | Didi Research America, Llc | Method and system for kernel routine callbacks |
CN111597109A (zh) * | 2020-04-24 | 2020-08-28 | 清华大学 | 一种跨架构固件堆内存的缺陷检测方法及系统 |
CN112929461A (zh) * | 2021-01-21 | 2021-06-08 | 中国人民解放军国防科技大学 | 一种基于高速互连网络的mpi进程管理接口实现方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915206B (zh) * | 2015-06-15 | 2019-03-19 | 南京阿凡达机器人科技有限公司 | 一种基于文本解析的dsp上的属性和数据的管理方法 |
US9753701B2 (en) * | 2015-12-10 | 2017-09-05 | Sap Se | Generating logic with scripting language in software as a service enterprise resource planning |
CN106502706A (zh) * | 2016-11-10 | 2017-03-15 | 成都中嵌自动化工程有限公司 | 一种基于龙芯处理器的可信嵌入式计算机及其配置方法 |
CN106815086B (zh) * | 2017-01-13 | 2020-04-14 | 邦彦技术股份有限公司 | 一种基于龙芯平台的通信控制装置 |
CN110716710B (zh) * | 2019-08-26 | 2023-04-25 | 武汉滨湖电子有限责任公司 | 一种雷达信号处理方法 |
US20210042254A1 (en) * | 2020-10-28 | 2021-02-11 | Pratik Marolia | Accelerator controller hub |
CN115242563B (zh) * | 2021-06-25 | 2023-11-14 | 统信软件技术有限公司 | 一种网络通信方法、计算设备及可读存储介质 |
-
2021
- 2021-06-25 CN CN202210731163.1A patent/CN115242563B/zh active Active
- 2021-06-25 CN CN202110710382.7A patent/CN113452532B/zh active Active
- 2021-11-10 WO PCT/CN2021/129671 patent/WO2022267304A1/zh unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6609158B1 (en) * | 1999-10-26 | 2003-08-19 | Novell, Inc. | Component architecture in a computer system |
CN106991329A (zh) * | 2017-03-31 | 2017-07-28 | 山东超越数控电子有限公司 | 一种基于国产tcm的可信计算单元及其运行方法 |
WO2019194873A1 (en) * | 2018-04-06 | 2019-10-10 | Didi Research America, Llc | Method and system for kernel routine callbacks |
CN111597109A (zh) * | 2020-04-24 | 2020-08-28 | 清华大学 | 一种跨架构固件堆内存的缺陷检测方法及系统 |
CN112929461A (zh) * | 2021-01-21 | 2021-06-08 | 中国人民解放军国防科技大学 | 一种基于高速互连网络的mpi进程管理接口实现方法 |
Non-Patent Citations (1)
Title |
---|
谢?;张伟;周恩强;董勇;: "面向天河互连网络的可扩展通信框架实现技术", 计算机工程与科学, no. 10, pages 13 - 22 * |
Also Published As
Publication number | Publication date |
---|---|
CN113452532A (zh) | 2021-09-28 |
CN113452532B (zh) | 2022-08-12 |
CN115242563B (zh) | 2023-11-14 |
WO2022267304A1 (zh) | 2022-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7861065B2 (en) | Preferential dispatching of computer program instructions | |
US8345053B2 (en) | Graphics processors with parallel scheduling and execution of threads | |
US8230144B1 (en) | High speed multi-threaded reduced instruction set computer (RISC) processor | |
US8078850B2 (en) | Branch prediction technique using instruction for resetting result table pointer | |
US9189271B2 (en) | Operation transfer from an origin virtual machine to a destination virtual machine while continue the execution of the operation on the origin virtual machine | |
US20080162834A1 (en) | Task Queue Management of Virtual Devices Using a Plurality of Processors | |
US8782117B2 (en) | Calling functions within a deterministic calling convention | |
JPH08502612A (ja) | データ処理システムおよびオペレーティング・システム | |
WO2011064616A1 (en) | Method and system for enabling access to functionality provided by resources outside of an operating system environment | |
US10229045B2 (en) | Conditional stack frame allocation | |
WO2022237098A1 (zh) | 一种异构程序执行方法、装置、计算设备及可读存储介质 | |
US20200319893A1 (en) | Booting Tiles of Processing Units | |
CN114968373A (zh) | 指令分派方法、装置、电子设备及计算机可读存储介质 | |
CN113204385A (zh) | 一种插件加载方法、装置、计算设备及可读存储介质 | |
CN113452532B (zh) | 一种网络通信方法、计算设备及可读存储介质 | |
US9760282B2 (en) | Assigning home memory addresses to function call parameters | |
US8099724B2 (en) | Fast patch-based method calls | |
US9542319B2 (en) | Method and system for efficient communication and command system for deferred operation | |
US11132760B2 (en) | Graphics instruction operands alias | |
CN113646744A (zh) | 针对未对齐的存储器操作将存储器访问加宽至对齐的地址 | |
US11860785B2 (en) | Method and system for efficient communication and command system for deferred operation | |
CN111522600B (zh) | 一种在dsp上的异构计算框架构建方法及系统 | |
US20220027156A1 (en) | Performance optimization of close code | |
Bhat et al. | Accelerating Messages by Avoiding Copies in an Asynchronous Task-based Programming Model | |
CN116097213A (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 |