一种基于单机多fpga的并行开发方法

文档序号:10471074阅读:236来源:国知局
一种基于单机多fpga的并行开发方法
【专利摘要】本发明公开了一种基于单机多FPGA的并行开发方法,该方法是:CPU端根据FPGA的计算能力,将数据划分为多个数据块,每个数据块满足一个FPGA一次计算的能力;CPU端为每个FPGA创建一个线程,每个线程控制一个FPGA;所有线程并行执行,线程控制FPGA每完成一个数据块的计算,则动态从CPU端获取下一个数据块,直到所有数据块计算完成。本发明的一种基于单机多FPGA的并行开发方法和现有技术相比,在单台服务器中添加多个FPGA加速卡,使系统节点内的多计算设备达到计算的负载均衡,充分发挥FPGA的计算能力,并保证系统的高容错性,从而提高系统的整体运行的效率,可靠性。
【专利说明】
一种基于单机多FPGA的并行开发方法
技术领域
[0001]本发明涉及高性能计算领域,具体地说是一种基于单机多FPGA的并行开发方法。
【背景技术】
[0002]当前社会人类的数据大爆炸,信息数据越来越多,人们对信息数据的处理能力的要求也越来越高,不仅石油勘探、气象预报、航天国防、科学研究等需求高性能计算,金融、政府信息化、教育、企业、互联网等更广泛的领域对高性能计算的需求迅猛增长。
[0003]计算速度对于高性能计算尤为重要,高性能计算朝多核、众核发展,采用异构并行提升应用计算速度,目前新兴的CPU+FPGA是新兴的异构协同计算模式,适合高并行计算应用和算法。FPGA(Field ProgrammableGate Aray,现场可编程们阵列)是介于专用芯片和通用芯片之间,具有一定的可编程性,可同时进行数据并行和任务并行计算,在处理特定应用是有更具明显的效率。更重要的是,FPGA句有明显的性能功耗比优势,其性能功耗比是CPU的10倍以上,GPU的3倍。FPGA的性能低功耗比更适合在单服务器中添加更多的计算单元。
[0004]公开的相关专利文件:名称为“ASIC和可编程逻辑器件并行开发系统和开发方法”,该文件公开了 “一种集成电路的开发方法,其仅利用作为电路结构研究结果,作为逻辑设计文件的一部分的块端口规格的连接信息,生成一种所谓逻辑磁芯的网表,构成该逻辑磁芯的网用于连结不依存于器件技术的块的端口和端口之间,从逻辑磁芯中选择对象块,进行组合,使用组合后的逻辑磁芯的数据。ASIC和FPGA的并行开发系统,其构成部分如下:对于从互联网来的访问进行监视的防火墙、与由用户使用的网客户机进行通信的网服务器、进行用户认证的认证服务器,管理用户的用户管理服务器、执行ASIC和FPGA的开发用程序的逻辑合成服务器、把邮件分配给项目的有关人员的邮件服务器、存放设计信息的文件服务器、执行ASIC的工具设计用程序的应用服务器、以及对ASIC和FPGA的开发状况进行监视的监视服务器”。上述公开文件与本
【发明内容】
要解决的技术问题,采用的技术手段都不相同。

【发明内容】

[0005]本发明的技术任务是提供一种基于单机多FPGA的并行开发方法。
[0006]本发明的技术任务是按以下方式实现的,该方法是:CPU端根据FPGA的计算能力,将数据划分为多个数据块,每个数据块满足一个FPGA—次计算的能力;CPU端为每个FPGA创建一个线程,每个线程控制一个FPGA;所有线程并行执行,线程控制FPGA每完成一个数据块的计算,则动态从CHJ端获取下一个数据块,直到所有数据块计算完成。
[0007]所述的CPU端为每个FPGA创建一个线程,每个线程初始化FPG A所需要的资源,为FPGA创建读线程和写线程,以及在FPGA端创建数据块缓存需要的队列;读线程和写线程以及FPGA的执行为异步并行执行。
[0008]所述的读线程从CPU端读取一个数据块并传输到FPGA端,并缓存到读队列中;FPGA设备从本地内存的读队列中读取一个数据块,然后执行;执行完毕将结果写到写队列中。
[0009]所述的写线程将FPGA的写队列中的一个结果写到GPU端。
[0010]本发明的一种基于单机多FPGA的并行开发方法和现有技术相比,在单台服务器中添加多个FPGA加速卡,使系统节点内的多计算设备达到计算的负载均衡,充分发挥FPGA的计算能力,并保证系统的高容错性,从而提高系统的整体运行的效率,可靠性。
【附图说明】
[0011 ]图1为一种基于单机多FPGA的并行开发方法的单机多FPGA并行实现示意图。
[0012]图2为一种基于单机多FPGA的并行开发方法的传输异步执行示意图。
【具体实施方式】
[0013]实施例1:
该基于单机多FPGA的并行开发方法是通过CPU端根据FPGA的计算能力,将数据划分为多个数据块,每个数据块满足一个FPGA—次计算的能力;CPU端为每个FPGA创建一个线程,每个线程控制一个FPGA;所有线程并行执行,线程控制FPGA每完成一个数据块的计算,则动态从CPU端获取下一个数据块,直到所有数据块计算完成。
[0014]CPU端为每个FPGA创建一个线程,每个线程初始化FPGA所需要的资源,为FPGA创建读线程和写线程,以及在FPGA端创建数据块缓存需要的队列;读线程和写线程以及FPGA的执行为异步并行执行。读线程从CPU端读取一个数据块并传输到FPGA端,并缓存到读队列中;FPGA设备从本地内存的读队列中读取一个数据块,然后执行;执行完毕将结果写到写队列中。写线程将FPGA的写队列中的一个结果写到GPU端。
[0015]受限于FPGA的计算能力,设备内存容量,主机-设备端的传输带宽等,采用数据分块、FPGA间并行执行、FPGA动态加载数据、及传输-计算异步执行的方式,解决了 FPGA计算能力不足,保证了 FPGA的执行效率,提高了应用系统的整体性能。
[0016]通过上面【具体实施方式】,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的几种【具体实施方式】。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。
【主权项】
1.一种基于单机多FPGA的并行开发方法,其特征在于,该方法是:CPU端根据FPGA的计算能力,将数据划分为多个数据块,每个数据块满足一个FPGA—次计算的能力;CPU端为每个FPGA创建一个线程,每个线程控制一个FPGA;所有线程并行执行,线程控制FPGA每完成一个数据块的计算,则动态从(PU端获取下一个数据块,直到所有数据块计算完成。2.根据权利要求1所述的一种基于单机多FPGA的并行开发方法,其特征在于,所述的CPU端为每个FPGA创建一个线程,每个线程初始化FPGA所需要的资源,为FPGA创建读线程和写线程,以及在FPGA端创建数据块缓存需要的队列;读线程和写线程以及FPGA的执行为异步并行执行。3.根据权利要求2所述的一种基于单机多FPGA的并行开发方法,其特征在于,所述的读线程从CPU端读取一个数据块并传输到FPGA端,并缓存到读队列中;FPGA设备从本地内存的读队列中读取一个数据块,然后执行;执行完毕将结果写到写队列中。4.根据权利要求2所述的一种基于单机多FPGA的并行开发方法,其特征在于,所述的写线程将FPGA的写队列中的一个结果写到GPU端。
【文档编号】G06F9/48GK105824780SQ201610198141
【公开日】2016年8月3日
【申请日】2016年4月1日
【发明人】高永虎, 张清
【申请人】浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1