CN104899007B - 利用Xeon Phi协处理器提升布隆滤波器处理性能的系统及方法 - Google Patents
利用Xeon Phi协处理器提升布隆滤波器处理性能的系统及方法 Download PDFInfo
- Publication number
- CN104899007B CN104899007B CN201510331094.5A CN201510331094A CN104899007B CN 104899007 B CN104899007 B CN 104899007B CN 201510331094 A CN201510331094 A CN 201510331094A CN 104899007 B CN104899007 B CN 104899007B
- Authority
- CN
- China
- Prior art keywords
- task
- coprocessor
- thread
- queue
- host end
- 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.)
- Active
Links
Abstract
本发明公开了一种利用Xeon Phi协处理器提升布隆滤波器处理性能的系统及方法,包括:性能采样模块、任务调度模块、通信模块和任务处理模块。性能采样模块用于获取宿主端和协处理器端的处理能力,决定两端分配的任务比例;任务调度模块控制宿主端和协处理器端之间整体的任务调度;通信模块管理宿主端和协处理器端的通讯;任务处理模块负责任务的查询与计算。系统将每个任务分配给相应的线程,每个线程在一个私有的子向量进行处理,并将单个任务的串行Hash运算转化为多个任务的并行Hash运算。方法的流程按照任务调度‑通讯‑任务处理的流水线方式并行执行,高效的任务调度消除了任务处理阶段中的同步开销,同时高效的并行机制提高了任务处理的吞吐量。
Description
技术领域
本发明属于多核/众核性能优化技术领域,更具体地,涉及一种利用Xeon Phi协处理器提升布隆滤波器处理性能的系统及方法。
背景技术
布隆滤波器(Bloom Filter)是一种空间效率高的随机数据结构,由Burton Bloom于1970年提出,其使用一个位向量表示一个集合,将单个元素使用k个相互独立的Hash函数映射到该位向量中。插入一个元素时,将这k个映射在该位向量上的位置都置为1;查找一个元素时,判断这k个位置是否都为1即可。这种数据结构能够在很短的时间内判断需查询的元素是否存在于集合内。相较于其他数据结构例如搜索树、Hash表等查找效率和空间效率均随元素增加而不断降低的特性,布隆滤波器的查找效率与元素个数无关,并且空间占用往往只有传统数据结构的1/8~1/4。但高效的查找效率和空间效率带来的问题是存在误报率(False Positive rate),当查询结果为真时,结果有一定几率是错误的;但当查询结果为否时,结果一定是正确的。
布隆滤波器广泛应用于海量数据处理、冲突检测、网络路由等领域,其任务处理的吞吐量对于这类高性能计算应用尤为重要,对布隆滤波器性能的优化能够至少为相关应用带来10%的性能提升。目前使用多核、众核、异构体系结构进行高性能的计算是一种趋势,理解并使用这些新型体系结构对传统数据结构的优化是一个巨大挑战。
Xeon Phi是Intel公司在2012年推出的基于x86架构的高并发协处理器(ManyIntegrated Core,MIC),其第二代产品Knight Corner最多包括61个x86核心,每个核心都配备一个长度为512bit的单指令多数据流(Single Instruction Multiple Data,SIMD)向量处理器,支持32个单精度和16个双精度的浮点数同时运算,拥有较强的计算性能。由于核心数量的增多而采用了更为复杂的体系结构和内存系统,一方面,使其在处理同步通信操作较多的应用时效率不高。而目前常采用的并行处理布隆滤波器的方法大多使用了同步操作来保证结果的正确性,所以尽管众核协处理器相对于多核处理器能够支持更多线程的同时执行,但一旦单个线程进入了布隆滤波器的临界区后,更多的线程会处于等待状态,而不能够发挥全部的性能;另一方面,由于布隆滤波器中每个Hash函数的独立性,对于每个物理线程而言,访存的特点存在随机性,不能够有效利用到Cache的局部性,并且与其他物理线程的Cache存在着一致性问题,为了维护缓存的一致性带来了更多的开销,导致整体访存效率偏低。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供一种利用Xeon Phi协处理器提升布隆滤波器处理性能的系统及方法,旨在提升系统整体处理布隆滤波器任务的吞吐量,并降低现有方法中占大部分处理时间的同步操作开销和访存时间。
为实现上述目的,根据本发明的一个方面,提供一种利用Xeon Phi协处理器提升布隆滤波器处理性能的系统,包括宿主端和协处理器端,其中:
所述宿主端包括性能采样模块、任务调度模块、第一通信模块和第一任务处理模块,其中:
所述性能采样模块用于周期性地测试所述宿主端和所述协处理器端的性能,并按照其处理能力分别设定任务分配比例;
所述任务调度模块用于根据所述任务分配比例将任务交付到所述宿主端和所述协处理器端的各个物理线程进行处理,并在运行过程中动态调整所述宿主端和所述协处理器端的负载;
所述第一通信模块用于管理所述宿主端与所述协处理器端之间的通信任务,并为所述宿主端维护一个双缓冲队列;
所述第一任务处理模块用于从所述任务调度模块获取任务,根据任务的类型进行处理,并在所述任务处理结束后直接将结果写入文件;
所述协处理器端包括第二通信模块和第二任务处理模块,其中:
所述第二通信模块用于管理所述协处理器端与所述宿主端之间的通信任务,并为所述协处理器端维护一个双缓冲队列;
所述第二任务处理模块用于从所述第二通信模块获取任务,根据任务的类型进行处理,并在所述任务处理结束后会将结果发送到所述第二通信模块,以传回所述宿主端写入文件。
根据本发明的另一方面,提供一种利用Xeon Phi协处理器提升布隆滤波器处理性能的方法,包括以下步骤:
步骤1周期性地获取宿主端和协处理器端的处理能力的比例;
步骤2对所述宿主端和所述协处理器端的物理线程进行负载均衡操作,包括以下子步骤:
(2-1)根据现有负载构造任务-线程映射表,计算出目前所述宿主端和所述协处理器端的每个物理线程所计算的任务个数Ti,并计算所有线程的总和SumT和所述协处理器线程任务个数总和SumC;
(2-2)找到所有运行在所述协处理器端的线程编号满足Tj/SumC>4×SumC/NumCT的线程j,并在所述宿主端找到一个满足Ti/SumC<=2×SumC/NumCT的线程i,其中NumCT表示所述协处理器端的线程个数,若不存在则取最小值Ti/SumC的线程i,交换所述任务-线程映射表中线程i和线程j的子向量对应的项;
(2-3)将线程i对应的子向量和线程i与线程j交换子向量的信息发送到所述协处理器端的输入缓冲队列,若所述输入缓冲队列为满,则向所述协处理器端发送一个队列满的信号并进入等待状态,直至所述协处理器端返回输入缓冲队列可写的信息时,再将线程i对应的子向量和线程i与线程j交换子向量的信息发送到所述输入缓冲队列;
(2-4)等待所述协处理器端发送替换线程j对应的子向量的内容到达接收队列,获得后将所述协处理器端线程j对应的子向量替换所述宿主端线程i对应子向量的内容;
步骤3将待处理的任务交付至所述宿主端或所述协处理器端进行处理,若所述待处理的任务交付至所述宿主端则执行步骤4,否则执行步骤5;
步骤4所述宿主端的每个物理线程从所属的任务队列中获取任务,令取出任务的数量x等于宿主端所支持的向量计算长度/Hash函数运算的字长,使用SIMD指令同时计算x个任务的Hash函数,并将操作在子向量上获得的结果写入到文件中;
步骤5将交付至所述协处理器端的任务发送至所述协处理器端进行处理;
步骤6所述协处理器端从对应的任务队列中获取任务,令取出任务的数量x等于所述协处理器端所支持的向量计算长度/Hash函数运算的字长,使用SIMD指令同时计算x个任务的Hash函数,并将操作在子向量上获得的结果回传到所述宿主端;
步骤7所述宿主端接收所述协处理器端回传的结果,并回写到文件。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
1、获取宿主端与协处理器端处理一定数量布隆滤波器任务的时间比例,获取两端处理性能的比例,任务调度模块依据这个比例动态调整两端的任务-线程映射表,目的是尽可能使两端的处理时间相同,在所有任务的处理过程中两端都保持峰值性能,以达到最快的处理时间;
2、每个任务的处理工作被任务调度模块中的任务-线程映射表映射到了对应的物理线程上,同一个任务的任何操作不会被2个或多个物理线程进行处理,同时每个物理线程在整体的向量上仅管理一个容量与缓存大小相同的子向量,所处理元素的Hash函数都映射在这个子向量内。首先,由于每个物理线程所访问的内存区域不存在重叠部分,所以避免了缓存一致性带来的开销,这个开销在物理线程数量高时尤为显著;另外,由于每个物理线程管理的子向量与其拥有的缓存大小相同,这样每个物理线程所访问的内存空间将不大于缓存的大小,所以除了第一次访问访存的强制缺失外,不存在其他的缓存缺失,均为缓存命中,这样极大的提高了访存的速度;
3、通信模块在传输任务达到一定数量时才会将任务发送至目的端,目的是为了减少整个传输过程中的启动开销、停滞开销、冗余信息开销,获得更高的传输速率,加快系统整体的处理速度;
4、任务处理模块将原先的对单个元素的串行Hash计算转化为多个元素的串行Hash计算,利用处理器中的SIMD向量处理器,能够在一个指令内完成多个任务的计算,提升了处理任务的吞吐量。
附图说明
图1为本发明利用Xeon Phi协处理器提升布隆滤波器处理性能的系统的结构框图;
图2为本发明利用Xeon Phi协处理器提升布隆滤波器处理性能的方法的流程图;
图3为本发明任务调度模块中任务-线程映射表划分后的布隆滤波器向量的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明中描述的每个任务包括两个部分:操作符和被操作元素,其中操作符包括查找、插入、删除三种。
图1所示为本发明利用Xeon Phi协处理器提升布隆滤波器处理吞吐量的系统的结构框图,包括宿主端和协处理器端,其中宿主端包括性能采样模块、任务调度模块、通信模块和任务处理模块;协处理器端包括通信模块和任务处理模块,其中:
性能采样模块用于周期性地测试宿主端和协处理器端的性能,并按照其处理能力分别设定任务分配比例。在本发明实施例中,性能采样模块将一部分的实际任务同时放置到宿主端和协处理器端进行测试,获得所有设备处理相同任务时间的比例,以确定在当前平台下宿主端和协处理器端处理布隆滤波器任务吞吐量的比例。
任务调度模块用于通过合适的任务调度方法提升系统整体的吞吐量。具体的方式是将任务队列中的任务按照一定规则交付到宿主端和协处理器端的各个物理线程处理,并在运行过程中动态调整宿主端和协处理器端的负载。在本发明实施例中,任务调度模块维护一个任务-线程映射表,每个表项包括元素和经任务调度模块分配的线程号,在系统的运行过程中会自动的调整,用于平衡宿主端与协处理器端之间的负载。对于每个被插入/删除/查询的元素,其所有相关的任务均被划分到同一个物理线程,且均在这个物理线程所分配到的子向量上进行处理。任务调度模块根据性能采样模块获得的性能比例将任务映射到宿主端和协处理器端。并且每个物理线程管理的子向量与其拥有的缓存大小相同,每个物理线程所访问的内存空间将不大于其缓存的大小。任务调度模块还实时监测每个子向量的负载,动态迁移部分不适于在宿主端或协处理器端的子向量到另一端。
通信模块用于管理宿主端与协处理器端的通信任务,在本发明实施例中,宿主端的通信模块向协处理器端发送两种数据:任务和在动态迁移过程中被迁移的子向量。宿主端的通信模块为宿主端维护一个双缓冲队列,其中一个缓冲队列为输入缓冲队列,用于缓存来自于宿主端的任务调度模块传输到协处理器端的数据;另一个缓冲队列为传输缓冲队列,用于放置正在传输的数据。宿主端的通信模块接收两种数据:任务结果和动态迁移过程中迁入的子向量。这些数据放置在宿主端通信模块的接收队列中,宿主端的通信模块会循环的处理这个队列中的事件,包括回存任务结果到文件和替换迁入的子向量。以上的接收、发送和处理接收队列事件的执行是并行执行的。
协处理器端的通信模块向宿主端发送两种数据:任务结果和在动态迁移过程中被迁移的子向量。协处理器端的通信模块为协处理器端维护一个双缓冲队列,其中一个缓冲队列为输入缓冲队列,用于缓存来自于协处理器端传给宿主端任务结果的数据;另一个缓冲队列为传输缓冲队列,用于放置正在传输的数据。协处理器端的通信模块接收两种数据:任务和动态迁移过程中迁入的子向量。这些数据放置在协处理器端通信模块的接收队列中,协处理器端的通信模块会循环的处理这个队列中的事件,包括分发任务到协处理器端的各个线程的任务队列和替换迁入的子向量。以上的接收、发送和处理接收队列事件的执行是并行执行的。
任务处理模块是系统整体查询和计算的主体部分,用于将任务分配到相应的线程执行。运行在宿主端的任务处理模块在任务处理结束后直接将结果写入文件,运行在协处理器端的任务处理模块在任务处理结束后会将结果发送到协处理器端的通信模块,以传回宿主端写入文件。任务处理模块主要功能有:宿主端的任务处理模块从宿主端的任务调度模块获取任务,并根据任务的类型,例如查询、插入、删除分别进行处理;协处理器端的任务处理模块从通信模块的接收队列中获取任务,并根据任务的类型查询、插入、删除分别进行处理。在本发明实施例中,宿主端和协处理器端的任务处理模块分别为本端处理器的每个线程维护一个子向量,将任务置于子向量中进行处理。任务的处理方式是获取每个任务中被处理的元素,使用预先设定的k个Hash函数计算得到k个当前元素所属的子向量数组的下标。若是查找操作,则检查子向量数组中的这k个位置是否为正值,若均为正值,返回结果为真,否则为假;若是插入操作,将子向量数组中的这k个位置增加1;若是删除操作,则首先检查子向量数组中的k个位置是否为正值,如果均为正值,则k个值均减去1,若存在非正值,则删除失败。常用的Hash函数一般存在多次计算步骤,任务处理模块将单次任务的串行的k次Hash计算扩展成多次任务的串行的k次Hash计算,转化为数据级并行的处理方式。
图2所示为本发明利用Xeon Phi协处理器提升布隆滤波器处理性能的方法的流程图,具体包括以下步骤:
步骤1性能采样模块周期性地获取宿主端和协处理器端处理能力的比例,更新到一个全局变量,并告知任务调度模块,获取比例的方法具体包括以下子步骤:
(1-1)周期性地获取系统信息,包括:宿主端支持的线程个数Nh、协处理器端线程个数NumCT;
(1-2)获取宿主端输入的任务队列中的下一批任务,若该任务队列为空,则等待直到获得下一批任务,若该任务队列不为空,执行步骤(1-3);
(1-3)在每处理一批请求之前先截取部分任务,例如前10%的任务,同时发送给宿主端和协处理器端,例如系统中配置一块协处理器,记录宿主端返回结果所需的时间△t1和协处理器端返回结果所需的时间△t2,判定两者的性能比例为△t2:△t1,则分配到两者的任务数量比例为△t1:△t2;
(1-4)将本批次任务发送给宿主端的任务调度模块,然后执行步骤2。
步骤2任务调度模块对宿主端和协处理器端的物理线程进行负载均衡操作,具体包括以下子步骤:
(2-1)根据现有负载构造任务-线程映射表,首先计算出目前宿主端和协处理器端的每个物理线程所计算的任务个数Ti,并计算所有线程的总和SumT和协处理器线程任务个数总和SumC;
(2-2)找到所有运行在协处理器端的部分线程,这类线程的特征是其线程编号j满足Tj/SumC>4×SumC/NumCT,并在宿主端找到一个线程i,其特征是满足Ti/SumC<=2×SumC/NumCT,若不存在则取最小值Ti/SumC的线程i,并交换任务-线程映射表中线程i和线程j的子向量对应的项;
(2-3)将线程i对应的子向量和线程i与线程j交换子向量的信息发送到协处理器端的通信模块的输入缓冲队列,若出现输入缓冲队列满,则向协处理器端的通信模块发送一个队列满的信号并进入等待状态,直至协处理器端的通信模块返回输入缓冲队列可写的信息时重复本步骤,传输完成后执行步骤(2-4);
(2-4)等待协处理器发送替换线程j对应的子向量的内容到达通信模块的接收队列,获得后将协处理器端线程j对应的子向量替换宿主端线程i对应子向量的内容。
步骤3任务调度模块将待处理的任务交付至相应端的任务处理模块,具体包括以下子步骤:
(3-1)从宿主端的性能采样模块获取下一批次任务,对已划分的元素使用映射函数按任务-线程映射表进行映射,若任务属于宿主端,将相应任务发送到宿主端被映射的物理线程的任务队列作处理,然后执行步骤4,若任务不属于宿主端,则执行步骤(3-2);
(3-2)被任务-线程映射表映射到协处理器端的任务经宿主端的通信模块发送到协处理器端进行处理;
(3-3)任务调度模块尝试批量发送任务给宿主端的通信模块的输入缓冲队列,若出现输入缓冲队列满,则向宿主端的通信模块发送一个队列满的信号并进入等待状态,直至宿主端的通信模块返回输入缓冲队列可写的信息时重复本步骤,传输完成后执行步骤5。
步骤4宿主端的多个物理线程从对应的任务队列中获取任务,任务处理模块令取出任务的数量x等于宿主端所支持的向量计算长度/Hash函数运算的字长,使用SIMD指令同时计算x个任务的Hash函数,并依据操作在子向量上获得查找/插入/删除的结果,然后将结果写入到文件中。任务队列为空时,任务处理模块以一定时间间隔循环等待。
步骤5宿主端将分配到协处理器端的任务发送至协处理器端进行处理,具体包括以下子步骤:
(5-1)宿主端的通信模块等待其输入缓冲队列写满的信息;
(5-2)获得输入缓冲队列满的信息后,查看传输缓冲队列的发送任务是否完成,若未完成则在此处按照一定的时间间隔循环等待,若完成则执行步骤(5-3);
(5-3)将输入缓冲队列与传输缓冲队列互换,并发送传输缓冲队列的数据到协处理器端,向任务调度模块发送输入缓冲队列可写的信息。
步骤6协处理器端从对应的任务队列中获取任务,协处理器端的任务处理模块令取出任务的数量x等于协处理器端所支持的向量计算长度/Hash函数运算的字长,使用SIMD指令同时计算x个任务的Hash函数,并依据操作在子向量上获得查找/插入/删除的结果,最后将操作结果通过协处理器端的通信模块回传到宿主端。
步骤7协处理器将处理结果发送到宿主端,并回写到文件,具体包括以下子步骤:
(7-1)协处理器端的通信模块等待其输入缓冲队列满的信息;
(7-2)获得输入缓冲队列满的信息后,查看传输缓冲队列的发送任务是否完成,若未完成则在此处按照一定的时间间隔循环等待,若完成则执行步骤(7-3);
(7-3)将输入缓冲队列与传输缓冲队列互换,并发送传输缓冲队列中的数据到宿主端;
(7-4)宿主端的接收队列检测到队列中有回传结果,将回传结果写入到文件。
以上的流程可以视作单个任务的处理流程,在实际的实施过程中,为了减少处理器处于等待状态的时间,系统整体流程是按多线程流水线方式并行执行的。
图3所示为经过本发明任务调度模块中任务-线程映射表划分后的布隆滤波器向量的示意图,图中以60核的Xeon Phi协处理器为环境,宿主端和协处理器的每个物理线程管理4bit的子向量(实际情况子向量长度与每个物理线程的缓存大小相关)。每个物理线程所访问的内存区域均是独立的局域,不存在重叠部分,避免缓存一致性带来的开销;另外,每个物理线程管理的子向量与其拥有的缓存大小相同,每个物理线程所访问的内存空间将不大于缓存的大小,使除了第一次访问访存的强制缺失外,不存在其他的缓存缺失,均为缓存命中,提升访存速度。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种利用Xeon Phi协处理器提升布隆滤波器处理性能的系统,其特征在于,包括宿主端和协处理器端,其中:
所述宿主端包括性能采样模块、任务调度模块、第一通信模块和第一任务处理模块,其中:
所述性能采样模块用于周期性地测试所述宿主端和所述协处理器端的性能,并按照其处理能力分别设定任务分配比例;
所述任务调度模块用于根据所述任务分配比例将任务交付到所述宿主端和所述协处理器端的各个物理线程进行处理,并在运行过程中动态调整所述宿主端和所述协处理器端的负载;
所述第一通信模块用于管理所述宿主端与所述协处理器端之间的通信任务,并为所述宿主端维护一个双缓冲队列;
所述第一任务处理模块用于从所述任务调度模块获取任务,根据任务的类型进行处理,并在所述任务处理结束后直接将结果写入文件;
所述协处理器端包括第二通信模块和第二任务处理模块,其中:
所述第二通信模块用于管理所述协处理器端与所述宿主端之间的通信任务,并为所述协处理器端维护一个双缓冲队列;
所述第二任务处理模块用于从所述第二通信模块获取任务,根据任务的类型进行处理,并在所述任务处理结束后会将结果发送到所述第二通信模块,以传回宿主端写入文件;
所述第一任务处理模块和第二任务处理模块获取其分配到的每个任务中被处理的元素,使用预先设定的k个Hash函数计算得到k个当前元素所属的子向量数组的下标,将单次任务的k次串行Hash计算扩展成多次任务的k次串行Hash计算,以转化为数据级并行的处理方式。
2.如权利要求1所述的利用Xeon Phi协处理器提升布隆滤波器处理性能的系统,其特征在于,所述任务调度模块维护一个任务-线程映射表,每个表项包括待处理的元素和经所述任务调度模块分配的线程号,对于每个待处理的元素,其所有相关的任务均被划分到同一个物理线程,且均在这个物理线程所分配到的子向量上进行处理。
3.如权利要求2所述的利用Xeon Phi协处理器提升布隆滤波器处理性能的系统,其特征在于,每个物理线程管理的子向量与其拥有的缓存大小相同,每个物理线程所访问的内存空间将不大于其缓存的大小。
4.如权利要求1-3中任一项所述的利用Xeon Phi协处理器提升布隆滤波器处理性能的系统,其特征在于,所述第一通信模块维护的双缓冲队列,其中一个缓冲队列为输入缓冲队列,用于缓存来自于所述任务调度模块并传输到所述协处理器端的数据,另一个缓冲队列为传输缓冲队列,用于放置正在传输的数据;所述第二通信模块维护的双缓冲队列,其中一个缓冲队列为输入缓冲队列,用于缓存所述协处理器端传给所述宿主端的任务结果的数据;另一个缓冲队列为传输缓冲队列,用于放置正在传输的数据。
5.一种利用Xeon Phi协处理器提升布隆滤波器处理性能的方法,其特征在于,包括:
步骤1周期性地获取宿主端和协处理器端的处理能力的比例;
步骤2对所述宿主端和所述协处理器端的物理线程进行负载均衡操作,包括以下子步骤:
(2-1)根据现有负载构造任务-线程映射表,计算出目前所述宿主端和所述协处理器端的每个物理线程所计算的任务个数T,并计算所有线程的总和SumT和协处理器线程任务个数总和SumC;
(2-2)找到所有运行在所述协处理器端的线程编号满足Tj/SumC>4×SumC/NumCT的线程j,并在所述宿主端找到一个满足Ti/SumC<=2×SumC/NumCT的线程i,其中NumCT表示所述协处理器端的线程个数,若不存在则取最小值Ti/SumC的线程i,交换所述任务-线程映射表中线程i和线程j的子向量对应的项;
(2-3)将线程i对应的子向量和线程i与线程j交换子向量的信息发送到所述协处理器端的输入缓冲队列,若所述输入缓冲队列为满,则向所述协处理器端发送一个队列满的信号并进入等待状态,直至所述协处理器端返回输入缓冲队列可写的信息时,再将线程i对应的子向量和线程i与线程j交换子向量的信息发送到所述输入缓冲队列;
(2-4)等待所述协处理器端发送替换线程j对应的子向量的内容到达接收队列,获得后将所述协处理器端线程j对应的子向量替换所述宿主端线程i对应子向量的内容;
步骤3将待处理的任务交付至所述宿主端或所述协处理器端进行处理,若所述待处理的任务交付至所述宿主端则执行步骤4,否则执行步骤5;
步骤4所述宿主端的每个物理线程从所属的任务队列中获取任务,令取出任务的数量x等于宿主端所支持的向量计算长度/Hash函数运算的字长,使用SIMD指令同时计算x个任务的Hash函数,并将操作在子向量上获得的结果写入到文件中;
步骤5将交付至所述协处理器端的任务发送至所述协处理器端进行处理;
步骤6所述协处理器端从对应的任务队列中获取任务,令取出任务的数量x等于所述协处理器端所支持的向量计算长度/Hash函数运算的字长,使用SIMD指令同时计算x个任务的Hash函数,并将操作在子向量上获得的结果回传到所述宿主端;
步骤7所述宿主端接收所述协处理器端回传的结果,并回写到文件。
6.如权利要求5所述的方法,其特征在于,所述步骤1中获取所述宿主端和所述协处理器端处理能力的比例的方法包括以下子步骤:
(1-1)周期性地获取系统信息,包括:所述宿主端支持的线程个数Nh以及所述协处理器端线程个数NumCT;
(1-2)获取所述宿主端输入的任务队列中的下一批任务,若所述任务队列为空,则等待直到获得下一批任务,若所述任务队列不为空,则执行步骤(1-3);
(1-3)在每处理一批请求之前先截取部分任务,同时发送给所述宿主端和所述协处理器端,记录所述宿主端返回结果所需的时间△t1和所述协处理器端返回结果所需的时间△t2,判定两者的性能比例为△t2:△t1,则分配到两者的任务数量比例为△t1:△t2;
(1-4)将本批次任务发送给所述宿主端,执行步骤2。
7.如权利要求5所述的方法,其特征在于,所述步骤3包括以下子步骤:
(3-1)从所述宿主端获取下一批次任务,对已划分的元素使用映射函数按所述任务-线程映射表映射,若任务属于所述宿主端,将任务发送到所述宿主端的被映射的物理线程的任务队列处理,执行步骤4,若任务属于所述协处理器端,则执行步骤(3-2);
(3-2)被所述任务-线程映射表映射到所述协处理器端的任务经所述宿主端发送到所述协处理器端处理,并标记任务所属的所述协处理器端的物理线程;
(3-3)批量发送任务到所述宿主端的输入缓冲队列,若所述输入缓冲队列为满,则向所述宿主端发送一个队列满的信息,并进入等待状态,直至所述宿主端返回输入缓冲队列可写的信息,再批量发送任务到所述输入缓冲队列,传输完成后执行步骤5。
8.如权利要求5-7中任一项所述的方法,其特征在于,所述步骤5包括以下子步骤:
(5-1)所述宿主端等待其输入缓冲队列写满的信息;
(5-2)获得所述输入缓冲队列满的信息后,查看所述宿主端的传输缓冲队列的发送任务是否完成,若未完成则在此处按照一定的时间间隔循环等待,若完成则执行步骤(5-3);
(5-3)将所述输入缓冲队列与所述传输缓冲队列互换,并发送所述传输缓冲队列的数据到所述协处理器端,向所述宿主端发送所述输入缓冲队列可写的信息。
9.如权利要求5-7中任一项所述的方法,其特征在于,所述步骤7包括以下子步骤:
(7-1)所述协处理器端等待其输入缓冲队列满的信息;
(7-2)获得所述输入缓冲队列满的信息后,查看所述协处理器端的传输缓冲队列的发送任务是否完成,若未完成则在此处按照一定的时间间隔循环等待,若完成则执行步骤(7-3);
(7-3)将所述输入缓冲队列与所述传输缓冲队列互换,并发送所述传输缓冲队列中的数据到所述宿主端;
(7-4)所述宿主端的接收队列检测到队列中有回传结果,将所述回传结果写入到文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510331094.5A CN104899007B (zh) | 2015-06-15 | 2015-06-15 | 利用Xeon Phi协处理器提升布隆滤波器处理性能的系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510331094.5A CN104899007B (zh) | 2015-06-15 | 2015-06-15 | 利用Xeon Phi协处理器提升布隆滤波器处理性能的系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104899007A CN104899007A (zh) | 2015-09-09 |
CN104899007B true CN104899007B (zh) | 2017-08-01 |
Family
ID=54031686
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510331094.5A Active CN104899007B (zh) | 2015-06-15 | 2015-06-15 | 利用Xeon Phi协处理器提升布隆滤波器处理性能的系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104899007B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110471702B (zh) * | 2019-06-27 | 2021-11-02 | 口碑(上海)信息技术有限公司 | 任务处理方法、装置、存储介质及计算机设备 |
CN117234745B (zh) * | 2023-11-16 | 2024-03-29 | 北京遥感设备研究所 | 一种面向异构计算平台的数据库负载均衡方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102195866A (zh) * | 2010-03-03 | 2011-09-21 | 梨花女子大学校产学协力团 | 利用布隆滤波器的数据包分类方法及数据包分类装置 |
CN103294540A (zh) * | 2013-05-17 | 2013-09-11 | 北京航空航天大学 | 一种通过至强融核协处理器提升Erlang虚拟机性能的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9152467B2 (en) * | 2013-01-18 | 2015-10-06 | Nec Laboratories America, Inc. | Method for simultaneous scheduling of processes and offloading computation on many-core coprocessors |
-
2015
- 2015-06-15 CN CN201510331094.5A patent/CN104899007B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102195866A (zh) * | 2010-03-03 | 2011-09-21 | 梨花女子大学校产学协力团 | 利用布隆滤波器的数据包分类方法及数据包分类装置 |
CN103294540A (zh) * | 2013-05-17 | 2013-09-11 | 北京航空航天大学 | 一种通过至强融核协处理器提升Erlang虚拟机性能的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104899007A (zh) | 2015-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9146777B2 (en) | Parallel processing with solidarity cells by proactively retrieving from a task pool a matching task for the solidarity cell to process | |
CN105138679B (zh) | 一种基于分布式缓存的数据处理系统及处理方法 | |
CN103218208B (zh) | 用于实施成形的存储器访问操作的系统和方法 | |
CN102752198B (zh) | 多核报文转发方法、多核处理器及网络设备 | |
CN103927225B (zh) | 一种多核心架构的互联网信息处理优化方法 | |
US7200734B2 (en) | Operating-system-transparent distributed memory | |
US8370575B2 (en) | Optimized software cache lookup for SIMD architectures | |
CN104050091B (zh) | 基于非一致性内存访问系统的网络设备及其设置方法 | |
CN104049712B (zh) | 用于计算机系统的功率管理方法和系统 | |
US20150163172A1 (en) | Server switch integration in a virtualized system | |
CN102999522B (zh) | 一种数据存储方法和装置 | |
US9910802B2 (en) | High bandwidth low latency data exchange between processing elements | |
CN102521047A (zh) | 实现多核处理器间中断负载均衡的方法 | |
WO2020259082A1 (zh) | 缓存的分配方法及装置、存储介质、电子装置 | |
CN104503948B (zh) | 支持多核网络处理架构的紧耦合自适应协处理系统 | |
CN102541803A (zh) | 数据发送方法和计算机 | |
Tang et al. | A data skew oriented reduce placement algorithm based on sampling | |
CN107239342A (zh) | 一种存储集群任务管理方法及装置 | |
CN104899007B (zh) | 利用Xeon Phi协处理器提升布隆滤波器处理性能的系统及方法 | |
US20140006716A1 (en) | Data control using last accessor information | |
Bayatpour et al. | Adaptive and dynamic design for MPI tag matching | |
Awatramani et al. | Increasing GPU throughput using kernel interleaved thread block scheduling | |
Fei et al. | FlexNFV: Flexible network service chaining with dynamic scaling | |
CN101763390A (zh) | 基于Berkeley DB的数据库存储系统及方法 | |
CN103902502B (zh) | 一种可扩展的分离式异构千核系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |