一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于智能网卡的GPU网络通信方法、智能网卡、介质、设备与流程

2022-02-20 06:11:34 来源:中国专利 TAG:

基于智能网卡的gpu网络通信方法、智能网卡、介质、设备
技术领域
1.本发明涉及计算机网络技术和gpu分布式计算领域,特别是一种gpu直接使用智能网卡(smart nic)进行网络通信的技术。


背景技术:

2.当前gpu在分布式计算场景下例如分布式数据库、机器学习等领域有着广泛的应用,分布式场景下系统的计算能力很大程度取决于不同节点间的网络延时,如何降低网络延时成为当今的热点问题。传统收发数据包涉及多次内存交换,人们开始使用直接内存访问技术来消除数据在gpu内存和cpu内存之间的交换带来的影响,然而此种方法的控制端依旧位于cpu,即需要cpu来进行收发包的控制,增加了系统通信的延时。从图1中可以看出,现有技术中gpu和智能网卡进行网络传输的模式中,当gpu在需要收发网络数据时,需要先由cpu通知网卡,再由网卡进行数据传输,gpu到cpu的上下文切换增加了很多数据传输延时。
3.因此,如何降低gpu通过智能网卡进行网络传输过程中的数据传输延时,是目前亟待解决的技术问题。


技术实现要素:

4.本发明的目的在于解决gpu通过智能网卡进行网络传输过程中的数据传输延时过高的技术问题,并提出一种给gpu使用的智能网卡,使得gpu能够直接访问网卡并进行控制,整个收发包过程不需要cpu的参与。
5.为实现上述目的,本发明采取如下技术方案:
6.第一方面,本发明提供了一种基于智能网卡的gpu网络通信方法,其包括:
7.gpu进行发包时,将待发送数据块所在存储区的虚拟地址、待发送数据块的长度和数据传输所需的网络参数写入智能网卡的寄存器中,由智能网卡根据预先存储的查找表查找得到寄存器中的虚拟地址对应的物理地址,然后利用智能网卡内的dma控制器根据查找得到的物理地址以及寄存器中的长度从gpu内存中读取对应的待发送数据,再按照寄存器中的网络参数将读取得到的待发送数据以网络包形式发送至目的地址;
8.gpu进行收包时,将用于存储待接收网络包的存储区的虚拟地址和待接收网络包的长度写入智能网卡的寄存器中;再由智能网卡根据预先存储的查找表查找得到寄存器中的虚拟地址对应的物理地址,在智能网卡实际接收到网络包后,利用智能网卡内的dma控制器根据查找得到的物理地址将网络包写入gpu内存中的对应位置;
9.所述查找表内包含gpu内存中不同存储区的虚拟地址和物理地址的映射关系,预先由cpu对gpu内存进行存储区分配后建立并存储于智能网卡中。
10.作为上述第一方面的优选,gpu进行收包时,在将接收到的网络包写入gpu内存的过程中,需通过寄存器记录本次写入数据的总长度,并根据gpu的轮询请求向其反馈寄存器中记录的长度数值,用于供gpu结合所述待接收网络包的长度判断是否完成全部接收数据的写入。
11.作为上述第一方面的优选,所述gpu通过memory mapped io的方式将数据写入智能网卡的寄存器。
12.作为上述第一方面的优选,所述智能网卡中的寄存器预先经过注册,使其能被gpu直接读写。
13.作为上述第一方面的优选,所述存储模块中的查找表中还存储有各存储区的长度。
14.作为上述第一方面的优选,所述数据传输所需的网络参数包括目的地址的ip和port;
15.第二方面,本发明提供了一种用于gpu网络通信的智能网卡,其特征在于,智能网卡内部包括:
16.存储模块,用于存储有gpu内存中不同存储区的虚拟地址和物理地址的查找表,所述查找表预先由cpu对gpu内存进行存储区分配后建立;
17.发包模块,用于在寄存器中被gpu写入待发送数据块所在存储区的虚拟地址、待发送数据块的长度和数据传输所需的网络参数后,根据所述查找表查找得到寄存器中的虚拟地址对应的物理地址,然后利用智能网卡内的dma控制器根据查找得到的物理地址以及寄存器中的长度从gpu内存中读取对应的待发送数据,再按照寄存器中的网络参数将读取得到的待发送数据以网络包形式发送至目的地址;
18.收包模块,用于在寄存器中被gpu写入用于存储待接收网络包的存储区的虚拟地址和待接收网络包的长度后,根据所述查找表查找得到寄存器中的虚拟地址对应的物理地址,在智能网卡实际接收到网络包后,利用智能网卡内的dma控制器根据查找得到的物理地址将网络包写入gpu内存中的对应位置。
19.作为上述第二方面的优选,所述收包模块将接收到的网络包写入gpu内存的过程中,通过寄存器记录本次写入数据的总长度,并根据gpu的轮询请求向其反馈寄存器中记录的长度数值,用于供gpu结合所述待接收网络包的长度判断是否完成全部接收数据的写入。
20.作为上述第二方面的优选,所述gpu通过memory mapped io的方式将数据写入智能网卡的寄存器。
21.作为上述第二方面的优选,所述智能网卡中的寄存器预先经过注册,使其能被gpu直接读写。
22.作为上述第二方面的优选,所述存储模块中的查找表中还存储有各存储区的长度。
23.作为上述第二方面的优选,所述数据传输所需的网络参数包括目的地址的ip和port;
24.第三方面,本发明提供了一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,当所述计算机程序被处理器执行时,能实现如上述第一方面任一方案所述的基于智能网卡的gpu网络通信方法。
25.第四方面,本发明提供了一种计算机设备,其特征在于,计算机设备中安插有gpu、cpu和上述第二方面所述的智能网卡,gpu、cpu和智能网卡相互之间通过通信总线构成通信连接,gpu进行收发包时不经过cpu而是直接通过所述智能网卡进行网络通信。
26.本发明相对于现有技术而言,具有以下有益效果:
27.本发明通过初始化将gpu内存进行存储区划分,预先在智能网卡中建立gpu内存中不同存储区的虚拟地址和物理地址的查找表,由此在实际应用中,初始化只会在系统开始运行时进行,系统实际运行过程中发生的大量收发包操作无需cpu接入。因此cpu参与的流程仅仅只有占比极小的初始化流程,占比极大的收发包流程可由gpu直接访问网卡并进行控制,完全不需要cpu参与。因此本发明大大节省了大量的cpu和gpu程序上下文切换的开销,有效降低了gpu通过智能网卡进行网络传输过程中的数据传输延时。
附图说明
28.图1是现有技术中gpu和nic进行网络传输的示意图;
29.图2是本发明提出的gpu和nic进行网络传输的示意图;
30.图3是本发明提出的gpu和nic网络传输的流程图。
具体实施方式
31.下面结合附图和具体实施方式对本发明做进一步阐述和说明。本发明中各个实施方式的技术特征在没有相互冲突的前提下,均可进行相应组合。
32.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似改进,因此本发明不受下面公开的具体实施例的限制。本发明各个实施例中的技术特征在没有相互冲突的前提下,均可进行相应组合。
33.在现有方法中,在初始化完成后,gpu会频繁地进行网络收发数据,而现有方法中每次收发数据都需要cpu来进行控制,导致运行中gpu和cpu会一直发生上下文的切换。因此在初始化完成后gpu进行具体的收发网络包时尽量减少cpu的参与,以减少gpu和cpu程序上下文切换的开销。
34.下面首先对本发明的一个较佳实施例所提供的一种基于智能网卡的gpu网络通信方法进行介绍。
35.需说明的是,本发明所述的智能网卡(smart network interface card,smart nic,本发明中亦简称为nic),一般用于服务器与交换机等网络设备之间的连接。智能网卡(smart nic)和普通网卡(nic)的根本区别在于,smartnic可以为主机(例如服务器主机)cpu减轻数据处理量。智能网卡可以有自己独立的cpu、内存操作系统和硬件加速单元等资源。智能网卡可以是任意可编程的智能网卡,其具体型号和参数不限,可根据具体的应用场景进行配置。
36.在一实施例中,基于智能网卡的gpu网络通信方法需要借助智能网卡来实现gpu对外的网络包收发功能,其主要目的是希望在网络包的收发过程中无需通过cpu,进而减少传统的网络包收发过程中gpu和cpu程序上下文切换的开销。该目的具体是通过如下方式实现的:
37.预先在智能网卡中存储一张查找表,查找表内包含gpu内存中不同存储区的虚拟地址和物理地址的映射关系。该查找表可以在进行收发包系统初始化的过程中由cpu对gpu内存进行存储区分配后建立并存储于智能网卡中,后续在进行收发包的过程中直接查找该
表格即可,无需再依赖cpu。
38.另外,在一种实施方式中,上述存储模块中的查找表中还可以存储有各存储区的长度大小,以便于后续数据收发过程中确定网络包数据存储所需的存储区。
39.如图2所示,gpu不经过cpu直接进行发包和收包的过程如下:
40.一方面,gpu进行发包时,将待发送数据块所在存储区的虚拟地址、待发送数据块的长度和数据传输所需的网络参数写入智能网卡的寄存器中,由智能网卡根据预先存储的查找表查找得到寄存器中存储的待发送数据块所在存储区的虚拟地址对应的物理地址,然后利用智能网卡内的dma控制器根据查找得到的物理地址以及寄存器中的长度从gpu内存中读取对应的待发送数据,再从寄存器中读取存储的数据传输所需的网络参数,并根据该网络参数将读取得到的待发送数据以网络包形式发送至目的地址。
41.其中数据传输所需的网络参数应当根据数据传输的通信协议进行确定。在一种实施方式中,数据传输所需的网络参数可选择为发包的目的地址对应的ip和port。由此,在该gpu的发包过程中,仅需调用预先存储的查找表,不再需要先由cpu通知网卡,再由网卡进行数据传输,因此数据延时大大降低。
42.另一方面,gpu进行收包时,将用于存储待接收网络包的存储区的虚拟地址和待接收网络包的长度写入智能网卡的寄存器中;再由智能网卡根据预先存储的查找表查找得到寄存器中待接收网络包的存储区的虚拟地址对应的物理地址,在智能网卡实际接收到网络包后,利用智能网卡内的dma控制器根据查找得到的物理地址将网络包写入gpu内存中的对应位置。
43.由此,在该gpu的收包过程中,也仅需调用预先存储的查找表,不再需要先由cpu通知网卡,再由网卡进行数据传输,因此数据延时大大降低。
44.进一步的,为了使gpu能够知道智能网卡是否已经完成了网络包数据的收取,在gpu进行收包时还可以进一步利用一个寄存器来记录本次将接收到的网络包写入gpu内存的过程中已写入数据的总长度,该总长度可以与前述寄存器中存储的待接收网络包的长度进行对比,当两者长度一致时即表明已完成网络包的收取和全部写入,gpu即可开始按照下一步动作指令进行相应的下游计算。在一种实施方式中,该功能可由gpu不断轮询记录已写入数据总长度的寄存器来实现,智能网卡根据gpu的轮询请求向其反馈寄存器中记录的长度数值,用于供gpu判断是否完成全部接收数据的写入。
45.另外,应当说明的是,上述cpu、gpu、智能网卡之间的数据查询、写入可以通过任意可行方式来实现。在一实施例中,gpu可通过memory mapped io的方式将数据写入智能网卡的寄存器,同样的,cpu也可通过memory mapped io的方式将查找表数据写入智能网卡的寄存器。
46.但需要注意的是,由于gpu将直接向智能网卡中的寄存器写入数据,因此智能网卡中的寄存器需要预先经过注册,使其能被gpu直接读写。
47.为了进一步便于理解,下面将给出上述基于智能网卡的gpu网络通信方法在一个实施例中的具体实现方式,如图3所示其具体实现过程如下:
48.1)首先由cpu的应用程序对gpu的内存进行分配形成多块存储区,将每块存储区的虚拟地址、物理地址、长度大小存在结构体中,结构体标记为gpumemstruct(v1,p1,l1;

;vn,pn,ln),其中vj是存储区j的虚拟地址,pj是存储区j的物理地址,lj是存储区j的长度,j
=1,2,

,n,n为gpu内存中总的存储区个数。结构体gpumemstruct本质上构成了一张查找表,可以根据任一存储区的虚拟地址来查找其在gpu内存中的实际物理地址以及存储区的长度大小。后续,cpu应用程序再通过linux的memory mapped io将这个结构体传给智能网卡。
49.另外,在进行实际的收发包之前,还需要使用gpu内存注册函数cudamemregister将智能网卡上的多个寄存器注册,使得gpu可以直接读写这些位于智能网卡上的寄存器。
50.2)发送数据包时,gpu和智能网卡的通信流程如下:
51.步骤1,gpu将需要发送的数据块的虚拟地址和长度分别写入智能网卡上的两个寄存器并标记为regsendvaddr和regsendlen。同时gpu将目的ip和port分别写入智能网卡上的两个寄存器并标记为regip和regport。
52.步骤2,智能网卡使用regsendvaddr存储的数值查找gpumemstruct来得到数据块的实际物理地址并标记为sendpaddr,智能网卡使用sendpaddr和regsendlen中的数值调用位于智能网卡上的dma控制器,直接读取gpu内存对应的数据。
53.步骤3,智能网卡读取到gpu需要发送的数据后,根据regip和regport的数值将数据通过网络模块发送到目的机器。
54.3)接收数据包时,gpu和智能网卡的通信流程如下:
55.步骤1,gpu将数据将要被存放区域的虚拟地址和长度分别写入智能网卡上的两个寄存器并标记为regrecvvaddr和regrecvlen。同时gpu开始轮询智能网卡上用于记录智能网卡写入gpu内存数据长度的寄存器并标记为regtotallen。
56.步骤2.,智能网卡使用regrecvvaddr存储的数值查找gpumemstruct来得到物理地址并标记为recvpaddr。
57.步骤3,智能网卡收到网络数据包后,使用recvpaddr和regrecvlen的数值调用位于智能网卡上的dma控制器,将数据写入gpu内存对应的地址。
58.步骤4,智能网卡将已写入的数据长度加在regtotallen寄存器上,gpu轮询发现此寄存器发生了变化且增加的数值等于需要收到包的长度,gpu完成此次收包。
59.由此可见,本发明实现了一种在gpu和智能网卡间直接进行网络通信的技术,除了初始化以外完全不需要cpu的参与,消除了传统方法gpu和cpu程序上下文的切换开销,从而提升了系统的网络性能。本发明适用于高吞吐量的分布式数据库和分布式机器学习等领域。
60.在本发明的另一实施例中,还提供了一种用于实现上述gpu网络通信方法的智能网卡,该智能网卡可用于gpu直接实现网络通信而无需借助cpu。该智能网卡内部包括:
61.存储模块,用于存储有gpu内存中不同存储区的虚拟地址和物理地址的查找表,其中该查找表预先由cpu对gpu内存进行存储区分配后建立。
62.在一种实施方式中,存储模块中的查找表中也可以进一步存储有各存储区的长度,以便于确定数据收发所需的存储区。
63.发包模块,用于在寄存器中被gpu写入待发送数据块所在存储区的虚拟地址、待发送数据块的长度和数据传输所需的网络参数后,根据前述的查找表查找得到寄存器中的虚拟地址对应的物理地址,然后利用智能网卡内的dma控制器根据查找得到的物理地址以及寄存器中的长度从gpu内存中读取对应的待发送数据,再按照寄存器中的网络参数将读取
得到的待发送数据以网络包形式发送至目的地址。
64.收包模块,用于在寄存器中被gpu写入用于存储待接收网络包的存储区的虚拟地址和待接收网络包的长度后,根据前述的查找表查找得到寄存器中的虚拟地址对应的物理地址,在智能网卡实际接收到网络包后,利用智能网卡内的dma控制器根据查找得到的物理地址将网络包写入gpu内存中的对应位置。
65.同样的,作为一种实施方式,为了使gpu能够知道智能网卡是否已经完成了网络包数据的收取,在收包模块,还可以进一步利用一个寄存器来记录本次将接收到的网络包写入gpu内存的过程中已写入数据的总长度,并根据gpu的轮询请求向其反馈寄存器中记录的长度数值,用于供gpu结合前述寄存器中存储的待接收网络包的长度来判断是否完成全部接收数据的写入,进而触发后续的数据计算流程。
66.在一种实施方式中,gpu通过memory mapped io的方式将数据写入智能网卡的寄存器。在一种实施方式中,所述智能网卡中的寄存器预先经过注册,使其能被gpu直接读写。在一种实施方式中,所述存储模块中的查找表中还存储有各存储区的长度。在一种实施方式中,所述数据传输所需的网络参数包括目的地址的ip和port。
67.上述智能网卡中除了存储模块、发包模块、收包模块之外,还应当有其他能够实现智能网卡自身所起功能的必要设备,例如通信接口、通信总线等等,具体可根据智能网卡自身所需的必要器件进行确定,此处不再赘述。
68.需要说明的是,根据本发明公开的实施例,上述智能网卡中的存储模块、发包模块、收包模块的具体实现功能可以通过编写的计算机软件程序来实现,计算机程序中包含用于执行相应方法的程序代码。
69.因此,在本发明的另一实施例中,还提供了一种计算机可读存储介质,该计算机可读介质可以是智能网卡自身所包含的,也可以是单独存在,可以是单一的存储介质也可以多个存储介质的组合。该存储介质上存储有一个或者多个计算机程序,当一个或者多个计算机程序被处理器执行时,能实现上述实施例所述的基于智能网卡的gpu网络通信方法。
70.可以理解的是,上述存储介质可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
71.上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signalprocessing,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
72.在本发明的另一实施例中,还提供了一种基于gpu和智能网卡的收发包系统,包括相互通信连接的gpu、cpu和上述实施例所描述的智能网卡,另外还包括:
73.gpu存储区分配模块,用于供cpu应用程序对gpu内存执行存储区分配,并将每个存储区物理地址和长度大小用内存块参数标记后映射到一个虚拟地址以建立映射关系,并各存储区的映射关系传递并存储至智能网卡中。
74.信息传递模块,用于供gpu将智能网卡控制收包或发包所需的参数传递给智能网卡,同时用于智能网卡向gpu反馈gpu发出的轮询请求。
75.数据直接传输模块,在发包时用于供gpu直接将数据传输给智能网卡,而收包时用于供所述智能网卡将收到的网络包数据直接传输到gpu内存中。
76.另外,需要说明的是,描述于本发明前述实施例中所涉及到的部分计算机程序模块除了通过软件的方式实现之外,也可以通过硬件的方式来实现,例如通过电路实现类似的数据处理功能,对此不做限定。
77.在本发明的另一实施例中,还提供了一种计算机设备,该计算机设备中安插有gpu、cpu和前述实施例中所描述的智能网卡,gpu、cpu和智能网卡相互之间通过通信总线构成通信连接,gpu进行收发包时不经过cpu而是直接通过智能网卡进行网络通信。
78.需要说明的是,计算机设备可以是任意具有gpu、cpu、智能网卡插槽的物理机,个人电脑(pc机)、服务器均包含在内。举例而言,计算机设备可以采用高性能的服务器,智能网卡和gpu均应通过pcie接口连接在服务器的pcie插槽,使得该服务器能够借助低时延的gpu实现高性能计算,可应用于分布式数据库和分布式机器学习等领域。
79.以上所述的实施例只是本发明的一种较佳的方案,然其并非用以限制本发明。有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型。因此凡采取等同替换或等效变换的方式所获得的技术方案,均落在本发明的保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献