CN107368375B - 一种基于MapReduce的K-means聚类算法FPGA加速系统 - Google Patents
一种基于MapReduce的K-means聚类算法FPGA加速系统 Download PDFInfo
- Publication number
- CN107368375B CN107368375B CN201610308843.7A CN201610308843A CN107368375B CN 107368375 B CN107368375 B CN 107368375B CN 201610308843 A CN201610308843 A CN 201610308843A CN 107368375 B CN107368375 B CN 107368375B
- Authority
- CN
- China
- Prior art keywords
- data
- module
- subsystem
- map
- task
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
- G06F18/232—Non-hierarchical techniques
- G06F18/2321—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
- G06F18/23213—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions with fixed number of clusters, e.g. K-means clustering
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Artificial Intelligence (AREA)
- Probability & Statistics with Applications (AREA)
- Computer Hardware Design (AREA)
- Computer And Data Communications (AREA)
- Complex Calculations (AREA)
Abstract
本发明提出了一种基于MapReduce的K‑means聚类算法FPGA加速系统,该加速系统主要包括Map任务数据收发子系统、Map任务加速子系统、Reduce任务数据收发子系统和Reduce任务加速子系统,Map任务数据收发子系统传送来自PCIe端的相应数据给Map任务加速子系统,并将Map任务加速子系统的最终计算结果回传给PCIe端;Reduce任务数据收发子系统传送来自PCIe端的相应数据给Reduce任务加速子系统,并将Reduce任务加速子系统的最终计算结果回传给PCIe端。按照本发明实现的加速系统,将所需要进行的耗时计算过程从上层中分离出来,采用专用的硬件系统来进行相应的计算,并且系统中的各模块采用流水线设计和并行处理方法,大大提高了运算处理速度。
Description
技术领域
本发明属于复杂算法硬件加速系统,具体涉及一种大数据量下基于MapReduce的K-means聚类算法FPGA加速系统。
背景技术
随着大数据时代的来临,大数据的应用越来越彰显它的优势,它占领的领域也越来越大;但大数据时代仍然面临着一些亟待解决的难题,比如数据量大、价值密度低、处理速度快、时序性要求高等,因此机器学习和数据挖掘技术正日益获得计算领域的关注。
聚类分析是数据挖掘中的重要内容,在工业、商业和科研等领域发挥着越来越重要的作用。K-means算法属于聚类分析中的一种基本划分方法,常采用误差平方和准则函数作为聚类准则,该算法在处理数据集上相对可伸缩且效率高。但面对大规模数据集时,其串行计算方法的时间复杂度比较高,处理能力存在局限性,其在计算数据对象间的距离上遇到瓶颈。
发明内容
本发明提供一种大数据量下基于MapReduce的K-means聚类算法FPGA加速系统,其目的在于克服现有PC机或服务器串行方式执行K-means算法计算复杂度高,速度慢,算法时间开销大的缺陷,以获取更快的计算处理速度。
本发明所提供的一种基于MapReduce的K-means聚类算法FPGA加速系统,其特征在于,
该加速系统可模块化设计,可多个独立并行设置于集群中实现加速;
所述加速系统包括Map任务数据收发子系统、Map任务加速子系统、Reduce任务数据收发子系统和Reduce任务加速子系统;
所述Map任务数据收发子系统传送来自PCIe端的对应数据给所述Map任务加速子系统,并将所述Map任务加速子系统的计算结果数据回传给PCIe端;
所述Reduce任务数据收发子系统传送来自所述PCIe端的对应数据给所述Reduce任务加速子系统,并将所述Reduce任务加速子系统最终计算结果回传给PCIe端;
所述Reduce任务加速子系统完成K-means算法中单个MapReduce任务的Reduce计算阶段,即计算K个类簇的聚类中心;
所述Map任务加速子系统完成所述K-means算法中单个MapReduce任务的Map计算阶段,即计算数据对象与K个所述聚类中心的距离,并将所述数据对象指派到一个距离其最近的聚类中心所在的类簇。
进一步地,所述Map任务数据收发子系统和所述Reduce任务数据收发子系统的组成都包括各自的交互接口模块、数据读取模块和数据发送模块;
所述Map任务数据收发子系统中的数据读取模块、数据发送模块与所述外部PCIe端相连,所述Map任务加速子系统与所述Map任务数据收发子系统中的数据读取模块相连,所述Map任务数据收发子系统中的数据发送模块与所述Map任务加速子系统相连;所述Map任务数据收发子系统中的交互接口模块与所述外部PCIe端相连,所述Map任务加速子系统与所述Map任务数据收发子系统中的交互接口模块相连;
所述Reduce任务数据收发子系统中的数据读取模块、数据发送模块与所述外部PCIe端相连,所述Reduce任务加速子系统与所述Reduce任务数据收发子系统中的数据读取模块相连,所述Reduce任务数据收发子系统中的数据发送模块与所述Reduce任务加速子系统相连;所述Reduce任务数据收发子系统中的交互接口模块与外部PCIe端相连,所述Reduce任务加速子系统与所述Reduce任务数据收发子系统中的交互接口模块相连。
进一步地,所述Map任务数据收发子系统中的交互接口模块和所述Reduce任务数据收发子系统中的交互接口模块包含多个配置寄存器和状态寄存器,通过寄存器地址与所述上层PCIe端完成信息交互;所述多个配置寄存器接收来自上层PCIe端的配置数据和启动信号,所述多个状态寄存器存储所述加速系统的工作状态供所述上层PCIe端查询。
所述Map任务数据收发子系统中的数据读取模块和所述Reduce任务数据收发子系统中的数据读取模块包含命令队列,长度队列和数据队列;所述命令队列接收来自所述上层PCIe端的待加速数据读命令,所述长度队列保存所述数据的长度信息,所述数据送入所述数据队列缓存,所述Map任务数据收发子系统中数据读取模块的所述数据最终发送给所述Map任务加速子系统,所述Reduce任务数据收发子系统中数据读取模块的所述数据最终发送给所述Reduce任务加速子系统;
所述Map任务数据收发子系统中的数据发送模块和所述Reduce任务数据收发子系统中的数据发送模块包含命令队列和数据队列,当需要通过PCIe端向上层发送加速计算后的结果数据时,所述数据队列事先缓存加速结果数据,所述命令队列在所述数据队列中有数据时接收发送给所述PCIe端的结果数据写命令,完成所述数据队列中的所述加速结果数据的发送。
进一步地,所述Map任务加速子系统包括控制调度模块、Map报文解析模块、多个Map计算模块和向量累加模块;
其中所述控制调度模块与所述Map任务数据收发子系统中的数据读取模块相连,控制数据的输入,所述控制调度模块、Map报文解析模块、多个Map计算模块和向量累加模块之间依次串联,所述多个map计算模块之间相互独立。
进一步地,所述控制调度模块包含质心接收状态寄存器组和文档接收状态寄存器组,传输数据入所述Map报文解析模块;
所述Map报文解析模块包含写质心使能寄存器组和写文档使能寄存器组,当所述写质心使能寄存器组状态有效时,则将对应的质心向量数据解析送入所述多个Map计算模块,当所述写文档使能寄存器组状态有效时,则将对应的文档向量数据解析送入所述多个Map计算模块;
所述多个Map计算模块中的单个Map计算模块包含K个内积计算子模块和一个比较子模块,其中K为质心个数;所述内积计算子模块包含单精度浮点数乘法核和单精度浮点数加法核,用于依次计算所述文档向量数据与K个质心向量的内积,内积结果送入所述比较子模块;所述比较子模块包含单精度浮点数比较树,用于找出所述内积计算子模块送入的最大内积结果所对应的质心编号,质心编号送入所述向量累加模块;
所述向量累加模块包含文档向量队列、质心编号队列、单精度浮点数加法核阵列和向量累加结果队列组;所述文档向量队列用于备份所述Map报文解析模块送入所述多个Map计算模块的文档向量数据,所述质心编号队列缓存所述多个Map计算模块送入所述向量累加模块的质心编号,所述单精度浮点数加法核阵列用于完成同质心编号向量数据的累加,所述向量累加结果队列组用于保存不同质心编号相对应的向量累加结果,最终结果送入所述Map任务数据收发子系统。
进一步地,Reduce任务加速子系统包括Redcue报文解析模块、文档数累加统计模块和Reduce计算模块;
所述Redcue报文解析模块与所述Reduce任务数据收发子系统中的数据读取模块相连,所述文档数累加统计模块、Reduce计算模块与所述Redcue报文解析模块相连,所述Reduce任务数据收发子系统中的数据发送模块分别与所述文档数累加统计模块、Reduce计算模块二者相连,所述文档数累加统计模块和所述Reduce计算模块间相互独立。
进一步地,所述Redcue报文解析模块包含文档数使能寄存器和文档向量和使能寄存器,当所述文档数使能寄存器状态有效时,将文档数送入所述文档数累加统计模块;当所述文档向量和使能寄存器状态有效时,将文档向量和送入所述Reduce计算模块;
所述文档数累加统计模块用于累加统计文档数,统计结果与所述Reduce计算模块最终文档向量和结果一起送入所述Reduce任务数据收发子系统中的数据发送模块;
所述Reduce计算模块包含文档向量和队列、中间结果缓存队列和单精度浮点数加法核阵列;所述文档向量和队列用于缓存所述Redcue报文解析模块送入的文档向量和;所述中间结果缓存队列用于缓存所述Reduce计算模块的中间结果;所述单精度浮点数加法核阵列用于迭代累加所述文档向量和队列中的文档向量和。
与现有计算方式相比,本发明大大降低了大数据量下K-means算法的计算复杂度,减少了计算时间开销,提高了实时性,具有以下的有益效果:
(1)将大数据量下K-means算法计算分模块进行,各模块之间采用流水线设计思路,处理速度快,并且其中各模块均在FPGA上实现,集成度与并行度高、性能稳定、功率较低、成本低廉。
(2)多个模块内部计算最大限度实行并行化处理。在Map任务加速子系统的多个Map计算模块中,单个Map计算模块之间可进行并行化调度,实现报文间的Map计算并行化,而在每单个Map计算模块内部,K(质心个数)个内积计算子模块并行工作,更进一步实现了单个报文内部计算过程的并行化;在Map加速器的向量累加模块中,单精度浮点数加法核阵列并行进行文档向量中的多维数据累加,实现了向量累加计算过程的并行化;在Reduce任务加速子系统的Reduce计算模块中,单精度浮点数加法核阵列并行进行文档向量和中的多维数据累加,实现了文档向量和迭代累加过程的并行化,并通过上述的并行化设计,有效地利用了FPGA硬件设计并行性的特点,大大地提高了大数据量下K-means算法的计算处理速度,在保证正确性的前提下有效提高了复杂算法的实时性。
(3)最大限度利用FPGA板上资源进一步提高计算处理速度。结合具体板卡资源情况和算法具体应用场合所适用的各类参数,在满足最大参数可用前提下,有效地节约板卡资源,利用剩余有效资源可调整Map任务加速子系统多个Map计算模块中单个Map计算模块的个数,采用“以资源换速度”的策略,充分利用已有的有限资源最大化提升系统设计的并行化计算程度,以进一步提高算法在计算时的处理速度。
(4)在FPGA板卡个数较充足的情况下,可实现板卡任务专一化,合理调整不同任务板卡之间的数目比例,更进一步提高计算处理速度。部分FPGA板卡只保留必要的Map任务数据收发子系统和Map任务加速子系统,专门负责大数据量下K-means算法的Map计算阶段任务;另一部分FPGA板卡只保留必要的Reduce任务数据收发子系统和Reduce任务加速子系统,专门负责大数据量下K-means算法的Reduce计算阶段任务。由于一般大数据量下K-means算法的Map计算阶段较之于Reduce计算阶段更为复杂,所以专门负责Map计算阶段任务的板卡数量应适当多于专门负责Reduce计算阶段任务的板卡数量,具体数量比例应视具体应用情况而定,以实现最终加速效果最优。
总之,按照本发明实现的加速系统,在数据挖掘、机器学习、人工智能、并行计算等领域有比较广泛的应用前景。
附图说明
图1为按照本发明实现的硬件加速系统与上层软件的交互结构示意图;
图2为按照本发明实现的硬件加速系统的整体结构示意图;
图3为按照本发明实现的加速系统中的交互接口模块原理图;
图4为按照本发明实现的加速系统中的Map任务加速子系统的结构框图;
图5为按照本发明实现的加速系统中的单个Map计算模块的结构框图;
图6为按照本发明实现的加速系统中的内积计算子模块的数据处理流程图;
图7为按照本发明实现的加速系统中的比较子模块的比较计算原理图;
图8为按照本发明实现的加速系统中的向量累加模块的处理流程示意图;
图9为按照本发明实现的加速系统中的Reduce任务加速子系统的结构框图;
图10为按照本发明实现的加速系统中的Reduce计算模块的处理流程示意图。
具体实施方式
以下结合附图及实施例,对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在原生MapReduce计算框架下对K-means聚类算法进行计算处理时,K-means聚类算法所有计算阶段均在通用处理器上进行,时间复杂度高且处理能力有限。本发明应用于拓展后的MapReduce计算框架,目的在对K-means聚类算法进行加速处理。拓展后的MapReduce计算框架在原生MapReduce计算框架基础上,采用基于FPGA的硬件加速系统作为协处理器来实现高性能计算,将K-means聚类算法中CPU密集型计算过程迁移到基于FPGA的硬件加速系统上来完成,以弥补通用处理器计算性能上的不足。如图1所示,在拓展后的MapReduce计算框架中,任务的调度由上层软件层实现,K-means聚类算法中的Map阶段和Reduce阶段的计算任务在处于硬件层的基于FPGA的硬件加速系统中完成,设备驱动程序是软件层与硬件层之间的通信层,用于控制完成上下层之间的实时交互。图中①表示硬件层通过2代8通道的PCIe总线从上层CPU内存中获取Map任务或者Reduce任务的数据;②表示基于FPGA的硬件加速系统对Map任务或者Reduce任务的数据进行计算处理;③表示硬件层将处理完后的数据结果通过PCIe总线回写到上层CPU内存中。
本发明将大数据量下K-means算法计算分模块进行,各模块之间采用流水线设计思路,多个模块内部计算最大限度实行并行化处理,最大限度地利用FPGA板上资源来提高计算处理速度,与现有计算方式相比,本发明大大降低了大数据量下K-means算法的计算复杂度,减少了计算时间开销,提高了实时性,起到了良好的加速效果。
如图2所示,本发明包括Map任务数据收发子系统、Map任务加速子系统、Reduce任务数据收发子系统和Reduce任务加速子系统,Map任务数据收发子系统和所述Reduce任务数据收发子系统都包括各自的交互接口模块、数据读取模块和数据发送模块;
Map任务数据收发子系统中的数据读取模块、数据发送模块与外部PCIe端相连,Map任务加速子系统与Map任务数据收发子系统中的数据读取模块相连,Map任务数据收发子系统中的数据发送模块与Map任务加速子系统相连;Map任务数据收发子系统中的交互接口模块与外部PCIe端相连,Map任务加速子系统与Map任务数据收发子系统中的交互接口模块相连。
Reduce任务数据收发子系统中的数据读取模块、数据发送模块与外部PCIe端相连,Reduce任务加速子系统与Reduce任务数据收发子系统中的数据读取模块相连,Reduce任务数据收发子系统中的数据发送模块与所述Reduce任务加速子系统相连;Reduce任务数据收发子系统中的交互接口模块与外部PCIe端相连,Reduce任务加速子系统与Reduce任务数据收发子系统中的交互接口模块相连。
作为实施例,各模块均在美国Xilinx公司系列,型号为XC7K410TFFG900-2的FPGA上实现。
如图3所示为交互接口模块原理图。
本实施例中,Map任务数据收发子系统进行如下操作:
A1.上层通过驱动程序借助Map任务数据收发子系统中交互接口模块的寄存器通道,向特定配置寄存器地址写入本次Map任务数据的内存起始地址和数据量大小,并向特定配置寄存器地址写入数据读取模块启动信号。在本实施实例中,任务数据内存起始地址高32位所对应的配置寄存器地址为0x604,任务数据内存起始地址低32位所对应的配置寄存器地址为0x600,任务数据数据量大小所对应的配置寄存器地址为0x608,Map任务数据收发子系统中数据读取模块的启动信号所对应的配置寄存器地址为0x104,所以驱动程序先向Map任务数据收发子系统中交互接口模块的0x604地址写入任务数据内存起始地址的高32位,向0x600地址写入任务数据内存起始地址的低32位,再向0x608地址写入任务数据的数据量大小,最后向0x104地址写入数据读取模块启动信号。
A2.Map任务数据收发子系统中的数据读取模块开始从外部PCIe端读取数据,所读数据的内存起始地址由Map任务数据收发子系统中交互接口模块地址为0x604、0x600的配置寄存器内容组合得到,所读数据的数据量大小由地址为0x608的配置寄存器提供。
A3.当本次任务数据完成加速计算后,Map任务数据收发子系统中的数据发送模块开始向外部PCIe端发送本次任务加速后的结果数据,发送数据的目的内存地址由Map任务数据收发子系统中交互接口模块地址为0x504、0x500的配置寄存器内容组合得到,配置寄存器的值会由驱动事先写入,写入过程类似所述任务数据内存起始地址的写入过程。
A4.当本次任务加速后的结果数据发送完成后,Map任务数据收发子系统中的数据发送模块向外部PCIe端发送中断信号,提示本次加速任务已完成,可以启动下一个加速任务。
其中,加速系统的工作状态主要包括:中断状态、中断原因、工作阶段和各模块关键数据验证信息等。
Reduce任务数据收发子系统所进行的操作与Map任务数据收发子系统所进行的操作类似。
如图4所示,所述Map任务加速子系统包括控制调度模块、Map报文解析模块、多个Map计算模块和向量累加模块;其中,该加速子系统的模块沟通是,控制调度模块从数据读取模块中获取数据,并且将之传输到Map报文解析模块,从Map报文解析模块中的数据输送到多Map计算模块,经过该计算模块计算的数据输送到向量累加模块,经由数据发送模块发出。
如图5所示,所述多个Map计算模块中的单个Map计算模块包含K(质心个数)个内积计算子模块和1个比较子模块;从Map报文解析模块的数据输送到各个内积计算子模块,计算后输送到一个比较子模块中的进行比较,将经过比较子模块处理的数据输送到数据发送模块,经由数据发送模块发出。
本实施例中,Map任务加速子系统进行如下操作:
A1.当多Map计算模块中存在空闲Map计算模块时,控制调度模块从Map任务数据收发子系统中的数据读取模块接收报文数据并传送给Map报文解析模块。
A2.Map报文解析模块将报文数据分解为质心数据和向量数据,其中K个质心数据依次送入控制调度模块选中的空闲Map计算模块的所有内积计算子模块,而K个质心数据之后的每个向量数据会同时送入所有内积计算子模块,在本实施例中质心个数K=32,如图6所示为内积计算子模块的处理流程图;
A3.内积子模块中包含单精度浮点数乘法核和单精度浮点数加法核,单精度浮点数乘法核每次取质心数据和向量数据各一维进行相乘,相乘结果送入单精度浮点数加法核与单精度浮点数加法核上一维乘积结果进行累加,直至质心数据和向量数据所有对应维数的乘积结果累加完毕,最终内积结果送入比较子模块。在本实施例中,质心数据和向量数据的维数为128维,每一维数据占32位,所以单精度浮点数乘法核和单精度浮点数加法核的每个数据输入端都为32位。
A4.如图7所示为比较子模块的原理图;比较子模块包含单精度浮点数比较树,在本实施例中,将32个内积结果分成4个组,每个组中有一个单精度浮点数比较核,负责完成本组中8个内积结果的依次比较,最终每个组得到一个最大的内积结果,最后再依次比较这4个组得到的最大内积结果,找出最终32个内积结果中最大内积结果对应的质心编号送入向量累加模块。
A5.如图8所示为向量累加模块的处理流程图,向量累加模块包含文档向量队列、质心编号队列、单精度浮点数加法核阵列和向量累加结果队列组;文档向量队列事先备份了Map报文解析模块送入内积计算子模块的文档向量数据,质心编号队列缓存比较子模块送入的质心编号,本实施例中,单精度浮点数加法核阵列包含8个单精度浮点数加法核,向量累加结果队列组包含32个向量累加结果队列,队列出队数据位宽为每次256位,每维数据32位,对应8维数据。每次从质心编号队列取出一个质心编号,并取该质心编号所对应的文档向量队列中的文档向量数据、向量累加结果队列中的向量累加数据各8维送入单精度浮点数加法核阵列,其中每个单精度浮点数加法核负责一维数据的累加,单精度浮点数加法核阵列的累加结果送入质心编号对应的向量累加结果队列中,所有向量累加结果队列初始值为0;待文档向量队列中一个Map报文所有文档向量数据的128维全部累加完成,依次将向量累加结果队列组中的32个向量累加结果队列最终结果发送给Map任务数据收发子系统中的数据发送模块。
如图9所示,Reduce任务加速子系统包括Redcue报文解析模块、文档数累加统计模块和Reduce计算模块;
本实施例中,Reduce任务加速子系统进行如下操作:
A1.Redcue报文解析模块从Redcue任务数据收发子系统中的数据读取模块获取Reduce报文数据并解析出报文数据中的文档数与文档向量和,Redcue报文解析模块包含文档数使能寄存器和文档向量和使能寄存器,当解析到报文数据中的文档数时,使能文档数使能寄存器,将其发送到文档数累加模块;当解析到报文数据中的文档向量和时,使能文档向量和使能寄存器,将其发送到Reduce计算模块。
A2.文档数累加统计模块累加统计Redcue报文解析模块送入的文档数,统计结果与Reduce计算模块最终文档向量和结果一道送入Redcue任务数据收发子系统中的数据发送模块;
A3.如图10所示,是按照本发明中的Reduce计算模块中的计算处理流程图,其中Reduce计算模块中包含文档向量和队列、中间结果缓存队列和单精度浮点数加法核阵列;文档向量和队列缓存Redcue报文解析模块送入的文档向量和,本实施例中,单精度浮点数加法核阵列包含8个单精度浮点数加法核,中间结果缓存队列出队数据位宽为每次256位,每维数据32位,对应8维数据。每次取文档向量和队列中的文档向量和数据、中间结果缓存队列中的向量和累加结果数据各8维送入单精度浮点数加法核阵列,其中每个单精度浮点数加法核负责一维数据的累加,单精度浮点数加法核阵列的累加结果送入中间结果缓存队列中,所有中间结果缓存队列初始值为0;待文档向量和队列中一个Reduce报文所有文档向量和数据的128维全部累加完成,将中间结果缓存队列中的最终累加结果和文档数累加统计模块中的最终统计结果一道发送给Redcue任务数据收发子系统中的数据发送模块。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种基于MapReduce的K-means聚类算法FPGA加速系统,其特征在于,
该加速系统可模块化设计,可多个独立并行设置于集群中实现加速;
所述加速系统包括:Map任务数据收发子系统、Map任务加速子系统、Reduce任务数据收发子系统和Reduce任务加速子系统;
所述Map任务数据收发子系统传送来自PCIe端的对应数据给所述Map任务加速子系统,并将所述Map任务加速子系统的计算结果数据回传给PCIe端;
所述Reduce任务数据收发子系统传送来自所述PCIe端的对应数据给所述Reduce任务加速子系统,并将所述Reduce任务加速子系统最终计算结果回传给PCIe端;
所述Reduce任务加速子系统完成K-means聚类算法中单个MapReduce任务的Reduce计算阶段,即计算K个类簇的聚类中心;
所述Map任务加速子系统完成所述K-means聚类算法中单个MapReduce任务的Map计算阶段,即计算数据对象与K个所述聚类中心的距离,并将所述数据对象指派到一个距离其最近的聚类中心所在的类簇。
2.如权利要求1所述的基于MapReduce的K-means聚类算法FPGA加速系统,其特征在于,
所述Map任务数据收发子系统和所述Reduce任务数据收发子系统的组成都包括各自的交互接口模块、数据读取模块和数据发送模块;
所述Map任务数据收发子系统中的数据读取模块、数据发送模块与所述PCIe端相连,所述Map任务加速子系统与所述Map任务数据收发子系统中的数据读取模块相连,所述Map任务数据收发子系统中的数据发送模块与所述Map任务加速子系统相连;所述Map任务数据收发子系统中的交互接口模块与所述PCIe端相连,所述Map任务加速子系统与所述Map任务数据收发子系统中的交互接口模块相连;
所述Reduce任务数据收发子系统中的数据读取模块、数据发送模块与所述PCIe端相连,所述Reduce任务加速子系统与所述Reduce任务数据收发子系统中的数据读取模块相连,所述Reduce任务数据收发子系统中的数据发送模块与所述Reduce任务加速子系统相连;所述Reduce任务数据收发子系统中的交互接口模块与PCIe端相连,所述Reduce任务加速子系统与所述Reduce任务数据收发子系统中的交互接口模块相连。
3.如权利要求2所述的基于MapReduce的K-means聚类算法FPGA加速系统,其特征在于,
所述Map任务数据收发子系统中的交互接口模块和所述Reduce任务数据收发子系统中的交互接口模块包含多个配置寄存器和多个状态寄存器,通过寄存器地址与上层PCIe端完成信息交互;所述多个配置寄存器接收来自上层PCIe端的配置数据和启动信号,所述多个状态寄存器存储所述加速系统的工作状态供所述上层PCIe端查询;
所述Map任务数据收发子系统中的数据读取模块和所述Reduce任务数据收发子系统中的数据读取模块包含第一命令队列、长度队列和第一数据队列;所述第一命令队列接收来自所述上层PCIe端的待加速数据读命令,所述长度队列保存所述待加速数据的长度信息,所述待加速数据送入所述第一数据队列缓存,所述Map任务数据收发子系统中数据读取模块的所述待加速数据最终发送给所述Map任务加速子系统,所述Reduce任务数据收发子系统中数据读取模块的所述待加速数据最终发送给所述Reduce任务加速子系统;
所述Map任务数据收发子系统中的数据发送模块和所述Reduce任务数据收发子系统中的数据发送模块包含第二命令队列和第二数据队列,当需要通过PCIe端向上层发送加速计算后的结果数据时,所述第二数据队列事先缓存加速结果数据,所述第二命令队列在所述第二数据队列中有数据时接收发送给所述PCIe端的结果数据写命令,完成所述第二数据队列中的所述加速结果数据的发送。
4.如权利要求3所述的基于MapReduce的K-means聚类算法FPGA加速系统,其特征在于,
所述Map任务加速子系统包括:控制调度模块、Map报文解析模块、多个Map计算模块和向量累加模块;
其中,所述控制调度模块与所述Map任务数据收发子系统中的数据读取模块相连,控制数据的输入,所述控制调度模块、Map报文解析模块、多个Map计算模块和向量累加模块之间依次串联,所述多个Map计算模块之间相互独立。
5.如权利要求4所述的基于MapReduce的K-means聚类算法FPGA加速系统,其特征在于,
所述控制调度模块包含:质心接收状态寄存器组和文档接收状态寄存器组,传输数据入所述Map报文解析模块;
所述Map报文解析模块包含:写质心使能寄存器组和写文档使能寄存器组,当所述写质心使能寄存器组状态有效时,则将对应的质心向量数据解析送入所述多个Map计算模块,当所述写文档使能寄存器组状态有效时,则将对应的文档向量数据解析送入所述多个Map计算模块;
所述多个Map计算模块中的单个Map计算模块包含:K个内积计算子模块和一个比较子模块,其中,K为质心个数;所述内积计算子模块包含:单精度浮点数乘法核和单精度浮点数加法核,用于依次计算所述文档向量数据与K个质心向量的内积,内积结果送入所述比较子模块;所述比较子模块包含单精度浮点数比较树,用于找出所述内积计算子模块送入的最大内积结果所对应的质心编号,质心编号送入所述向量累加模块;
所述向量累加模块包含:文档向量队列、质心编号队列、单精度浮点数加法核阵列和向量累加结果队列组;所述文档向量队列用于备份所述Map报文解析模块送入所述多个Map计算模块的文档向量数据,所述质心编号队列用于缓存所述多个Map计算模块送入所述向量累加模块的质心编号,所述单精度浮点数加法核阵列用于完成同质心编号向量数据的累加,所述向量累加结果队列组用于保存不同质心编号相对应的向量累加结果,最终结果送入所述Map任务数据收发子系统。
6.如权利要求5所述的基于MapReduce的K-means聚类算法FPGA加速系统,其特征在于,
Reduce任务加速子系统包括:Reduce报文解析模块、文档数累加统计模块和Reduce计算模块;
所述Reduce报文解析模块与所述Reduce任务数据收发子系统中的数据读取模块相连,所述文档数累加统计模块、Reduce计算模块与所述Reduce报文解析模块相连,所述Reduce任务数据收发子系统中的数据发送模块分别与所述文档数累加统计模块、Reduce计算模块二者相连,所述文档数累加统计模块和所述Reduce计算模块间相互独立。
7.如权利要求6所述的基于MapReduce的K-means聚类算法FPGA加速系统,其特征在于,
所述Reduce报文解析模块包含:文档数使能寄存器、文档向量和使能寄存器,当所述文档数使能寄存器状态有效时,将文档数送入所述文档数累加统计模块;当所述文档向量和使能寄存器状态有效时,将文档向量和送入所述Reduce计算模块;
所述文档数累加统计模块用于累加统计文档数,统计结果与所述Reduce计算模块最终文档向量和结果一起送入所述Reduce任务数据收发子系统中的数据发送模块;
所述Reduce计算模块包含文档向量和队列、中间结果缓存队列和单精度浮点数加法核阵列;所述文档向量和队列用于缓存所述Reduce报文解析模块送入的文档向量和;所述中间结果缓存队列用于缓存所述Reduce计算模块的中间结果;所述单精度浮点数加法核阵列用于迭代累加所述文档向量和队列中的文档向量和。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610308843.7A CN107368375B (zh) | 2016-05-11 | 2016-05-11 | 一种基于MapReduce的K-means聚类算法FPGA加速系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610308843.7A CN107368375B (zh) | 2016-05-11 | 2016-05-11 | 一种基于MapReduce的K-means聚类算法FPGA加速系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107368375A CN107368375A (zh) | 2017-11-21 |
CN107368375B true CN107368375B (zh) | 2019-11-12 |
Family
ID=60303556
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610308843.7A Expired - Fee Related CN107368375B (zh) | 2016-05-11 | 2016-05-11 | 一种基于MapReduce的K-means聚类算法FPGA加速系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107368375B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111563600B (zh) * | 2019-02-14 | 2024-05-10 | 北京嘀嘀无限科技发展有限公司 | 一种用于定点转化的系统和方法 |
CN111831330B (zh) * | 2020-07-10 | 2022-02-01 | 深圳致星科技有限公司 | 用于联邦学习的异构计算系统设备交互方案 |
CN113326479A (zh) * | 2021-05-28 | 2021-08-31 | 哈尔滨理工大学 | 一种基于fpga的k均值算法的实现方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102722653A (zh) * | 2012-05-31 | 2012-10-10 | 重庆邮电大学 | 一种基于MapReduce的射线跟踪加速算法 |
CN102750309A (zh) * | 2012-03-19 | 2012-10-24 | 南京大学 | 一种基于Hadoop的并行化SVM求解方法 |
CN103279330A (zh) * | 2013-05-14 | 2013-09-04 | 江苏名通信息科技有限公司 | 一种基于虚拟机GPU计算下的MapReduce并行编程模型 |
CN104820657A (zh) * | 2015-05-14 | 2015-08-05 | 西安电子科技大学 | 一种基于嵌入式异构多核处理器上的核间通信方法及并行编程模型 |
WO2015066489A3 (en) * | 2013-11-01 | 2015-12-10 | Cognitive Electronics, Inc. | Efficient implementations for mapreduce systems |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9201638B2 (en) * | 2012-08-07 | 2015-12-01 | Nec Laboratories America, Inc. | Compiler-guided software accelerator for iterative HADOOP® jobs |
-
2016
- 2016-05-11 CN CN201610308843.7A patent/CN107368375B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750309A (zh) * | 2012-03-19 | 2012-10-24 | 南京大学 | 一种基于Hadoop的并行化SVM求解方法 |
CN102722653A (zh) * | 2012-05-31 | 2012-10-10 | 重庆邮电大学 | 一种基于MapReduce的射线跟踪加速算法 |
CN103279330A (zh) * | 2013-05-14 | 2013-09-04 | 江苏名通信息科技有限公司 | 一种基于虚拟机GPU计算下的MapReduce并行编程模型 |
WO2015066489A3 (en) * | 2013-11-01 | 2015-12-10 | Cognitive Electronics, Inc. | Efficient implementations for mapreduce systems |
CN104820657A (zh) * | 2015-05-14 | 2015-08-05 | 西安电子科技大学 | 一种基于嵌入式异构多核处理器上的核间通信方法及并行编程模型 |
Also Published As
Publication number | Publication date |
---|---|
CN107368375A (zh) | 2017-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104915322B (zh) | 一种卷积神经网络硬件加速方法 | |
CN109328361B (zh) | 用于深度神经网络的加速器 | |
US9529590B2 (en) | Processor for large graph algorithm computations and matrix operations | |
Zhou et al. | Parallel implementation of classification algorithms based on cloud computing environment | |
US20130086356A1 (en) | Distributed Data Scalable Adaptive Map-Reduce Framework | |
CN107368375B (zh) | 一种基于MapReduce的K-means聚类算法FPGA加速系统 | |
CN103336672B (zh) | 数据读取方法、装置及计算设备 | |
CN103049241A (zh) | 一种提高cpu+gpu异构装置计算性能的方法 | |
Frey et al. | A spinning join that does not get dizzy | |
CN104020983A (zh) | 一种基于OpenCL的KNN-GPU加速方法 | |
CN103279622A (zh) | 一种飞行器仿真系统中的分布式仿真模型调度方法 | |
CN100489830C (zh) | 面向科学计算的64位流处理器芯片 | |
CN103345429A (zh) | 基于片上ram的高并发访存加速方法、加速器及cpu | |
CN106776466A (zh) | 一种fpga异构加速计算装置及系统 | |
CN117951346B (zh) | 面向向量数据库的混合加速架构 | |
Kim et al. | Comprehensive techniques of multi-GPU memory optimization for deep learning acceleration | |
Yui et al. | A database-hadoop hybrid approach to scalable machine learning | |
CN110502337A (zh) | 针对Hadoop MapReduce中混洗阶段的优化系统及方法 | |
Zhang et al. | Fast Vector Query Processing for Large Datasets Beyond {GPU} Memory with Reordered Pipelining | |
Hartung et al. | Optimizing similarity computations for ontology matching-experiences from gomma | |
Wang et al. | Improved intermediate data management for mapreduce frameworks | |
KR20230169321A (ko) | 데이터 의존적이고 불규칙한 오퍼레이션들을 위한 프로그래밍 가능 가속기 | |
Oge et al. | An implementation of handshake join on FPGA | |
CN102184521B (zh) | 高性能图像处理系统及图像数据处理方法 | |
CN115689405A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20191112 Termination date: 20200511 |
|
CF01 | Termination of patent right due to non-payment of annual fee |