CN104182210A - 一种基于cuda的多gpu数据并行比对方法 - Google Patents
一种基于cuda的多gpu数据并行比对方法 Download PDFInfo
- Publication number
- CN104182210A CN104182210A CN201410443928.7A CN201410443928A CN104182210A CN 104182210 A CN104182210 A CN 104182210A CN 201410443928 A CN201410443928 A CN 201410443928A CN 104182210 A CN104182210 A CN 104182210A
- Authority
- CN
- China
- Prior art keywords
- data
- gpu
- comparison
- cuda
- method based
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于CUDA的多GPU数据并行比对方法,涉及多GPU并行,模式识别,数据比对等领域,该方法首先基于数据的条数构建对应的多GPU平台,将每条数据的比对放在一个GPU设备端完成,因为GPU是并行执行的,因而数据的比对之间也是并行执行的。待所有的数据比对完成之后,结果返回到CPU端进行数据分析,看哪条或者哪几条是需要的数据。本发明采用基于CUDA多GPU数据并行比对方法,可以明显加速多数据比对的效率,满足海量数据进行比对时对于时间的需求。
Description
技术领域
本发明涉及一种单任务多GPU的实现方法,具体涉及在NVIDIA的CUDA架构中并行多个GPU以实现单个任务,实现任务并行的方法,属于并行计算领域。
背景技术
(1)多数据比对在信息学,计算科学等领域已经得到广泛的应用,但是随着海量数据的不断产生,需要的时间也越来越长。
(2)并行计算也在信息学,计算科学领域展现了它的优势,特别是在海量数据,高维数据不断产生的信息时代更是达到足够的重视。
(3)CUDA是NVIDIA公司提供的GPGPU架构,是利用CUDA来进行大规模并行计算的先进技术,CUDA自从推出开始,就成为广泛应用的众核并行计算形式。
(4)GPU具有远远高于CPU的浮点运算能力和内存宽带,同时由于其高度并行性,非常适合与大规模数据处理。
(5)当多个任务在CPU上执行的时候,只能够一个一个的顺序执行,这样会很耗时间,但是,当把各个可以并行处理的任务分配到每个GPU上并行处理时就能够极大的提高运行速度。
发明内容
本发明是一种基于CUDA的多GPU数据并行对比方法,目的在于通过级联多个GPU达到加速多数据对比的效果,具体实现如下:
1、根据需要比对的N条数据搭建多个GPU组成的GPGPU计算平台,测试该平台是否可以顺利进行并行计算。
1.1选择的GPU芯片数与需要比对的数据条数一致;即有N条数据的同时,就应当选择N个GPU芯片;
1.2GPGPU计算平台中的GPU芯片是并行执行的,因此在搭建该平台的时候要正确选择参数,配型及测试;
2、将需要比对的标准数据和测试数据文件以数组的形式读取到HOST(主机端)。测试数据与标准数据都储存在数据库中,需要通过一定的格式读取到主机端,本发明采取数组的形式进行存放,主要是考虑到与设备端(DEVICE)端的匹配;
3、在DEVICE(设备端)根据比对数据的大小生成所需要的存储空间,然后也以二维数组的形式来构建存储空间。
3.1在设备端分配存储空间要考虑到所选GPU型号的内存大小以及网格,线程块的具体执行参数;
3.2本发明采取二维数组的方式来存放数据是为了充分利用其内存空间大小以及遍历的方便性;
4、将数据从HOST端拷贝到DEVICE端:
4.1、因为标准数据对于每个GPU测试都是需要的,因此将标准数据拷贝到各个GPU设备上的全局内存上;
4.2、共享内存的速度比全局内存要快,因此将测试数据拷贝到事先分配好的GPU设备上的共享内存上;
4.3、对于标准数据和测试数据中存在的缺失位置要在全局内存及共享内存上以空格表示;
5、开始进行数据比对时,采用的是Needleman-Wunsch算法,使用迭代方法计算出两个数据的相似分值,存在一个得分矩阵中;根据这个得分矩阵,回溯寻找最优的比对数据。
6、各个GPU中的测试数据均完成与标准数据的匹配测试之后,就会依次输出这几个数据在标准数据中的位置,以便于得出更完整的数据拼图。
6.1待测试的数据中存在几种可能性,一是有一条是与标准数据匹配度最好的,二是数据只是标准数据的一部分,可能几条数据的组合会达到更好的效果;
6.2当得出的结果返回到CPU端之后,会综合得出最佳的方案,并以可视化的结果展现出来。
附图说明
图1多GPU平台的搭建
图2CUDA内存存储模型
图3本发明所述方法的流程图
具体实施方式
以下将结合附图,对本发明的优选实施例进行详细的描述;应当理解,优选实施例仅为了说明本发明,而不是为了限制本发明的保护范围。
此项发明的实验要求只要在满足CUDA4.2的编程环境下即可顺利开展,此次实例的测试环境如下表所示:
名称 | 型号 |
CPU | Intel(R)Pentium(R)G2020 |
GPU | NVIDIA GeForce GT 630 |
主机端配置 | 32位Win7旗舰版 4G内存 |
设备端配置 | Microsoft Visual Studio2010 CUDA5.0 |
实施过程分为以下步骤:
1、根据比对的数据数搭建多GPU平台
如图1所述,本实例选择3条数据同时进行比对,于此同时就应该搭建包含3个GPU的通用计算平台,同时将第一条测试数据对应上GPU_id0,第二条测试数据对应上GPU_id1,第三条测试数据对应上GPU_id2。
2、开辟相应的存储空间
如图2所示,对应于测试数据的长度,分别在GPU端建立相应的存储空间,分配每个GPU端的线程:
unsigned int gx=gridIdx.x;
unsigned int gy=gridIdx.y; //线程块坐标
unsigned int bx=blockIdx.x;
unsigned int by=blockIdx.y; //线程坐标
unsigned int tx=threadIdx.x;
unsigned int ty=threadIdx.y; //二维粒子数组的坐标
unsigned int x=gx*gridDim.x+bx*blockDim.x+tx;
unsigned int y=gy*gridDim.y+by*blockDim.y+ty;
其中,gx表示GPU中网格的索引号,bx表示网格中线程块的索引号,tx表示线程块中线程的索引号。
当在GPU中建立了每个线程的索引之后,就可以将测试数据与线程一一对应进行存储管理。
3、测试数据导入GPU端:
本测试实例的数据存储在数据库中,首先将数据库中的数据读取到CPU端。
由于CPU和GPU端的数据不具有兼容性,因此需要将CPU端得到的测试数据导入到GPU端进行并行处理,利用cudaMemcpy()将测试数据由CPU端导入到GPU端。并结合步骤2所述的存储空间进行对应。
4、并行测试:
本方法采取的数据比对是Needleman-Wunsch算法,使用迭代方法计算出两个数据的相似分值,存在一个得分矩阵中,根据这个得分矩阵,回溯寻找最优的比对数据。
本发明提供的Needleman-Wunsch算法,除了能得到数据比对的分值之外,比对结果全部写回到GPU显存。
5、结果分析:
待3个GPU端的数据比对结果完成之后,将相应数据传回到CPU端,根据所示结果选择哪条数据是最合适的数据或者哪几条数据都是标准数据的子数据。整个算法的实施步骤如图3所示。
Claims (5)
1.一种基于CUDA的多GPU数据并行比对方法,其特征在于,包括以下步骤:
步骤一:根据需要比对的数据条数搭建多GPU的GPGPU计算平台;
步骤二:在GPU设备端分配对应于数据的存储空间;
步骤三:CPU主机端与GPU设备端的数据拷贝;
步骤四:GPU每个设备端的单独数据比对;
步骤五:待所有设备端的数据比对完成之后,对结果进行分析。
2.根据权利要求1所述的基于CUDA的多GPU数据并行比对方法,其特征在于:
(1)一次用一个Kernel启动N个GPU,N对应所处理的数据条数;
(2)建立CPU与GPU之间的数据拷贝机制,将标准数据拷贝到每个GPU中的全局内存中,将所需要比对的数据拷贝到每个GPU中的共享内存上,最后待所有数据比对完成之后将GPU端结果返回到CPU端进行分析。
3.根据权利要求1所述的基于CUDA的多GPU数据并行比对方法,其特征在于:
(1)建立良好的多GPU与多数据的映射关系,即确定某个GPU执行哪个数据的具体比对任务;
(2)根据每条测试数据的存储空间在对应的GPU端开辟必要的内存空间,需要确定需要划分的Grid,Block数目。
4.根据权利要求1所述的基于CUDA的多GPU数据并行比对方法,其特征在于:
(1)每个GPU进行单独的数据比对,且是多线程执行的;
(2)虽然所有数据都是一维数据,但是在GPU端开辟内存空间时考虑到用二维数组的形式来存放相应的数据更加方便快捷;
(3)因数据中有些部位有缺失,这样的地方对应在GPU内存上也要以空格的形式代替,才不会出现错误。
5.根据权利要求1所述的基于CUDA的多GPU数据并行比对方法,其特征在于:
(1)当每个GPU中的对比结果结束后,依次输出结果到CPU中;
(2)对于每个比对结果,总结出哪个GPU所代表的数据才是最佳数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410443928.7A CN104182210A (zh) | 2014-09-02 | 2014-09-02 | 一种基于cuda的多gpu数据并行比对方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410443928.7A CN104182210A (zh) | 2014-09-02 | 2014-09-02 | 一种基于cuda的多gpu数据并行比对方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104182210A true CN104182210A (zh) | 2014-12-03 |
Family
ID=51963291
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410443928.7A Pending CN104182210A (zh) | 2014-09-02 | 2014-09-02 | 一种基于cuda的多gpu数据并行比对方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104182210A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104615581A (zh) * | 2015-02-15 | 2015-05-13 | 中国科学院近代物理研究所 | 基于gpu的全局物态方程参数生成方法 |
CN105894439A (zh) * | 2016-04-05 | 2016-08-24 | 中国海洋大学 | 基于CUDA的海洋涡旋及Argo浮标交集数据快速提取算法 |
CN106067158A (zh) * | 2016-05-26 | 2016-11-02 | 东方网力科技股份有限公司 | 一种基于gpu的特征比对方法及装置 |
CN106645868A (zh) * | 2016-11-16 | 2017-05-10 | 南方电网科学研究院有限责任公司 | 一种短路电流的扫描方法及装置 |
CN107341193A (zh) * | 2017-06-14 | 2017-11-10 | 中国神华能源股份有限公司 | 路网中移动对象查询方法 |
CN107357820A (zh) * | 2017-06-14 | 2017-11-17 | 中国神华能源股份有限公司 | 移动对象范围查询方法 |
CN109388496A (zh) * | 2018-11-01 | 2019-02-26 | 北京视甄智能科技有限公司 | 一种基于多gpu卡的图像并发处理方法、装置及*** |
CN114237911A (zh) * | 2021-12-23 | 2022-03-25 | 深圳华大医学检验实验室 | 基于cuda的基因数据处理方法、装置和cuda构架 |
-
2014
- 2014-09-02 CN CN201410443928.7A patent/CN104182210A/zh active Pending
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104615581A (zh) * | 2015-02-15 | 2015-05-13 | 中国科学院近代物理研究所 | 基于gpu的全局物态方程参数生成方法 |
CN105894439A (zh) * | 2016-04-05 | 2016-08-24 | 中国海洋大学 | 基于CUDA的海洋涡旋及Argo浮标交集数据快速提取算法 |
CN105894439B (zh) * | 2016-04-05 | 2019-01-22 | 中国海洋大学 | 基于CUDA的海洋涡旋及Argo浮标交集数据快速提取算法 |
CN106067158A (zh) * | 2016-05-26 | 2016-11-02 | 东方网力科技股份有限公司 | 一种基于gpu的特征比对方法及装置 |
CN106067158B (zh) * | 2016-05-26 | 2019-09-06 | 东方网力科技股份有限公司 | 一种基于gpu的特征比对方法及装置 |
CN106645868A (zh) * | 2016-11-16 | 2017-05-10 | 南方电网科学研究院有限责任公司 | 一种短路电流的扫描方法及装置 |
CN107341193A (zh) * | 2017-06-14 | 2017-11-10 | 中国神华能源股份有限公司 | 路网中移动对象查询方法 |
CN107357820A (zh) * | 2017-06-14 | 2017-11-17 | 中国神华能源股份有限公司 | 移动对象范围查询方法 |
CN107357820B (zh) * | 2017-06-14 | 2021-01-29 | 中国神华能源股份有限公司 | 移动对象范围查询方法 |
CN107341193B (zh) * | 2017-06-14 | 2021-02-02 | 中国神华能源股份有限公司 | 路网中移动对象查询方法 |
CN109388496A (zh) * | 2018-11-01 | 2019-02-26 | 北京视甄智能科技有限公司 | 一种基于多gpu卡的图像并发处理方法、装置及*** |
CN114237911A (zh) * | 2021-12-23 | 2022-03-25 | 深圳华大医学检验实验室 | 基于cuda的基因数据处理方法、装置和cuda构架 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104182210A (zh) | 一种基于cuda的多gpu数据并行比对方法 | |
Zhang et al. | Shellnet: Efficient point cloud convolutional neural networks using concentric shells statistics | |
Li et al. | Pointcnn: Convolution on x-transformed points | |
Lu et al. | SpWA: An efficient sparse winograd convolutional neural networks accelerator on FPGAs | |
Guan et al. | Leveraging the power of multi-core platforms for large-scale geospatial data processing: Exemplified by generating DEM from massive LiDAR point clouds | |
US11604654B2 (en) | Effective and scalable building and probing of hash tables using multiple GPUs | |
CN101726494B (zh) | 用于确定目标宝石图案对宝石图案数据库的百分比匹配的宝石图案匹配算法 | |
Van den Braak et al. | Fast hough transform on GPUs: Exploration of algorithm trade-offs | |
CN102053948A (zh) | 在单指令多数据多核处理器架构上转置矩阵的方法和*** | |
CN105956666B (zh) | 一种机器学习方法及*** | |
Huang et al. | An efficient optical flow based motion detection method for non-stationary scenes | |
CN102880509B (zh) | 基于cuda的格网数字高程模型邻域分析的***和方法 | |
CN112380003B (zh) | 一种gpu处理器上的k-nn的高性能并行实现装置 | |
Velentzas et al. | In-memory k Nearest Neighbor GPU-based Query Processing. | |
CN110264392B (zh) | 一种基于多gpu的强连通图检测方法 | |
CN104502967A (zh) | 快速获取地震勘探观测***面元信息的方法及装置 | |
Silvestri et al. | GPU-based computing of repeated range queries over moving objects | |
Acharya et al. | Speeding up SIFT using GPU | |
Lin et al. | Training kinetics in 15 minutes: Large-scale distributed training on videos | |
CN106599798A (zh) | 一种面向大数据处理的人脸识别训练方法脸识别方法 | |
Jiang et al. | GLARE: Accelerating Sparse DNN Inference Kernels with Global Memory Access Reduction | |
Ohno et al. | Development of in-situ visualization tool for PIC simulation | |
CN104572588A (zh) | 矩阵求逆处理方法和装置 | |
WO2013161511A1 (ja) | 複数の要素の結合結果を識別する情報処理装置、プログラムおよび方法 | |
Lahabar et al. | High performance pattern recognition on GPU |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20141203 |