[发明专利]一种面向GPU的双调归并排序方法有效
申请号: | 201210187386.2 | 申请日: | 2012-06-07 |
公开(公告)号: | CN102750131A | 公开(公告)日: | 2012-10-24 |
发明(设计)人: | 迟学斌;王珏;阚圣哲;聂宁明;郎显宇 | 申请(专利权)人: | 中国科学院计算机网络信息中心 |
主分类号: | G06F9/38 | 分类号: | G06F9/38;G06F9/50 |
代理公司: | 北京亿腾知识产权代理事务所 11309 | 代理人: | 陈霁 |
地址: | 100190 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 gpu 归并 排序 方法 | ||
本发明涉及一种数据排序方法,特别是一种面向GPU的基于OpenCL规范的双调归并排序方法。
背景技术
排序是计算机应用中最常见的操作之一,随着并行处理技术的进一步发展,并行排序已经成为一个非常重要的研究领域。通常将并行排序分为两类:一类是直接排序,能够直接实现序列的排序;另一类是归并排序,即可以将多个有序列快速合并为一个有序列。
在现有技术中,大部分的排序方法都需要开辟新的内存空间来存储排序中间步骤的结果,例如常见的快速排序、基数排序和并行排序算法中的桶排序等。双调归并排序方法能够直接在待排序列的存储空间进行数据交换,有效节省了内存开销。
目前AMD的OpenCL软件开发套件(SDK)中包含了OpenCL版本的双调排序方法在GPU上的实现。其双调排序程序能够充分利用GPU的流处理器,但是排序中的同步工作完全由CPU部分完成,工作组间的线程同步需要进行上下文的切换,从而影响计算效率。
因此,在节省存储空间的基础上,如何有效减少CPU和GPU之间的同步次数、减少执行指令的总量和延时、增加GPU计算单元的利用率等是本发明要解决的技术问题。
发明内容
本发明的目的是为了有效减少CPU和GPU之间的同步次数、减少执行指令的总量和延时、增加GPU计算单元的利用率。
为了实现上述目的,本发明提供了一种面向GPU的双调归并排序方法,包括如下步骤:
(1)将共享内存中的待排序列数据拷贝到GPU设备局部内存中;
(2)判断是否需要进行向量内排序,若需要则由一个线程操作向量模拟L个比较器,多个线程并行执行归并排序;
(3)将排序结果由GPU设备局部内存拷贝到共享内存中。
本发明还提供了一种面向GPU的双调归并排序系统,包括如下模块:
用于将共享内存中的待排序列数据拷贝到GPU设备局部内存中的模块;
用于判断是否需要进行向量内排序,若需要则由一个线程操作向量模拟L个比较器,多个线程并行执行归并排序的模块;
用于将排序结果由GPU设备局部内存拷贝到共享内存中的模块。
本发明的一种优选方案为:多个线程并行执行归并排序时,对于同一个工作组内的线程同步使用同步函数来完成,对于不同工作组内的线程间同步通过CPU完成。
本发明的另一优选方案为:当一个工作组内的比较器本次和下次操作数都存在于该工作组的局部内存时,使用同步函数同步工作组内线程;当一个工作组内的比较器本次和下次操作数存放在不同的工作组局部内存时,由CPU参与线程的同步。
本发明的另一优选方案为:由一个线程来模拟L×M个比较器,操作2×M个向量进行比较交换操作,每个线程内向量运算指令顺序执行。
本发明的另一优选方案为:在排序过程中,改变比较器操作数的写回地址,以使局部内存读操作的地址连续,同时为防止线程间数据读写冲突,设置每个线程将需要操作的数据读入寄存器再进行比较交换操作。
本发明的另一优选方案为:在排序一组向量时,若该组向量的前半部分向量不连续,则将该前半部分向量中的后半部与该后半部分向量中的后半部交换位置后,再执行写回共享内存的操作。
本发明的另一优选方案为:在排序一组向量时,若该组向量的前半部分向量不连续,后半部分向量连续,则将该前半部分向量中的前半部与该后半部分向量中的前半部交换位置后,再执行写回共享内存的操作。
附图说明
图1为双调归并排序网络的原理图;
图2为本发明的由CPU端执行的主机程序流程;
图3为本发明的GPU双调归并排序方法执行过程。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
本发明主要通过以下几种方式,对现有技术中GPU双调归并排序方法做出改进:
一、使用向量模拟多个比较器
在传统的GPU双调归并排序方法中,一条线程作为一个比较器(compare and conditionally interchange),待排序列长度为比较器数的2倍。可以将比较器第一次分组,通过组号即可确定所排列的数据段是按升序还是降序排列,同时可以将比较器二次分组,通过组号能够得到该比较器操作的序列元素的位置,图1是拥有4个比较器的双调归并排序网络的简单原理示意。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算机网络信息中心,未经中国科学院计算机网络信息中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210187386.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种用于制瓶机的瓶钳
- 下一篇:存储装置和数据管理方法