[发明专利]一种查询任务通信方法及系统有效
申请号: | 201810596030.1 | 申请日: | 2018-06-11 |
公开(公告)号: | CN109062929B | 公开(公告)日: | 2020-11-06 |
发明(设计)人: | 陈榕;陈海波;臧斌宇;管海兵;王思源 | 申请(专利权)人: | 上海交通大学 |
主分类号: | G06F16/245 | 分类号: | G06F16/245;G06F16/2458;H04L29/08 |
代理公司: | 上海汉声知识产权代理有限公司 31236 | 代理人: | 庄文莉 |
地址: | 200240 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 查询 任务 通信 方法 系统 | ||
1.一种查询任务通信方法,其特征在于,包括:
注册步骤:将数据集分发加载在集群中的每台服务器上,并在服务器上注册GPU内存和CPU内存分别用于GPUDirect RDMA和RDMA;
查询请求步骤:将查询请求发送给集群中的一台服务器;
解析查询步骤:在接收到的查询请求的服务器解析查询请求,将查询请求中的查询语句分解成多个子步骤,子步骤的相关信息属于查询任务的元数据;
查询处理步骤:从多个子步骤的第一个子步骤开始逐步处理查询请求,得到查询中间结果;
其中,若下一个子步骤依赖的数据在远端服务器,则将查询中间结果和查询任务的元数据分别通过GPUDirect RDMA和RDMA的方式发送给远端的服务器,远端服务器根据接收到的查询中间结果和查询任务的元数据继续处理查询请求的子步骤;
所述查询处理步骤包括:
服务器从第一个子步骤开始处理查询请求,用子步骤中的查询条件对数据集进行匹配操作;其中,查询请求的控制流逻辑在CPU上执行,对数据集的匹配操作在GPU上执行,匹配操作得出的查询中间结果存放在GPU内存中;由于数据集会分散地存储在整个集群中,接收到查询请求的服务器在本地执行完一部分子步骤后,判断下一个子步骤依赖的数据是否在本地,如果在本地,那么继续处理后续子步骤;如果不在本地,那么把查询中间结果发给远端的服务器,由远端服务器基于已得出的中间结果执行后续的子步骤;
所述把查询中间结果发给远端的服务器包括:以GPU内存的起始地址和查询中间结果的大小作为参数,调用RDMA网卡的单侧操作,将查询中间结果写入到远端服务器的GPU内存中,查询中间结果属于查询任务的数据信息;
服务器发送完查询中间结果后,还需要发送查询任务的元数据,元数据中记录了查询请求后续的子步骤,远端服务器根据元数据来执行后续的子步骤;服务器将元数据进行序列化,将序列化后的元数据拷贝到CPU内存中,然后以缓冲区的起始地址和元数据的大小作为参数,调用RDMA网卡的单侧操作,将元数据写入到远端服务器的CPU内存中。
2.根据权利要求1所述的查询任务通信方法,其特征在于,所述注册步骤包括:
在集群中的服务器上加载数据集,并进行初始化工作,在每台服务器分别注册GPU内存和CPU内存。
3.根据权利要求1所述的查询任务通信方法,其特征在于,所述查询请求步骤包括:
服务器接收到查询请求后初始化查询任务的相关数据,清空中间结果表,为处理查询任务做准备。
4.根据权利要求1所述的查询任务通信方法,其特征在于,所述解析查询步骤包括:
服务器对查询请求进行解析,查询请求包括多个查询语句,根据不同的查询语句,将查询请求分解成多个子步骤执行;在执行每一个子步骤之前,先把子步骤依赖的数据从CPU内存拷贝到GPU内存,然后再在GPU上执行子步骤的处理逻辑。
5.根据权利要求1所述的查询任务通信方法,其特征在于,远端服务器接收到查询的中间结果后,将中间结果从GPU内存拷贝到另一块GPU内存中,记录所述另一块GPU内存的起始地址;
远端服务器继续接收查询任务的元数据,将元数据从CPU内存中拷贝到另一块CPU内存中,反序列化后得到查询任务的元数据信息;并将记录的GPU内存的起始地址保存到元数据中;
远端服务器依据元数据在CPU上执行查询任务的控制流逻辑,继续执行后续的子步骤,将子步骤依赖的数据从CPU内存拷贝到GPU内存,同时基于先前得出的中间结果,在GPU上进行数据集的匹配操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学,未经上海交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810596030.1/1.html,转载请声明来源钻瓜专利网。