opencl排序

yy1990cn 2014-08-27 06:01:24
各位大神,小弟初学opencl,现在要用opencl来实现一个排序算法,不知如何下手,求大神给点思路,主要是设备端运行的kernel函数不知怎么写,不知有没有这方面的参考代码,谢谢
...全文
1122 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Doc_Han 2014-12-15
  • 打赏
  • 举报
回复
可以用奇偶排序
清风水岸 2014-12-15
  • 打赏
  • 举报
回复
AMD和Nvidia的SDK或者例子都有提供Radix Sort,还有一种比较适合GPU排序的就是双调排序。AMD的Radix Sort(实际就是桶排序)在SDK里面。Nvidia的RadixSort可以在https://developer.nvidia.com/opencl这个网址下到
outstander 2014-09-25
  • 打赏
  • 举报
回复
引用 2 楼 yy1990cn 的回复:
[quote=引用 1 楼 outstander 的回复:] [quote=引用 楼主 yy1990cn 的回复:] 各位大神,小弟初学opencl,现在要用opencl来实现一个排序算法,不知如何下手,求大神给点思路,主要是设备端运行的kernel函数不知怎么写,不知有没有这方面的参考代码,谢谢
并行排序和串行的排序很不一样,可以参考基数排序和归并排序。[/quote] 原来是版主,不知能不能推荐一些并行算法方面的书?[/quote] 《并行算法导论》这本书学习并行算法设计挺好的,本身也有排序的并行算法介绍。 但是并行编程和并行算法并无完全划等号,并行编程除了考虑理论上并行算法的复杂度外还要考虑硬件平台的特性和细节,应该尽可能好的将算法映射到硬件平台上。 比如:GPU和CPU的硬件特点就很不一样,GPU是轻量线程推荐发起尽可能多的线程来掩盖访存,而CPU的线程切换开销就比较大,发起过多的线程反而会性能下降。
zenny_chen 2014-09-22
  • 打赏
  • 举报
回复
引用 5 楼 fronteer 的回复:
我一般是在 单个 work group 内用 bitonic 排序好,然后在 CPU 端将多个 workgroup 排序的结果进行 merge.
嗯,这个方式俺赞同,哈哈~
fronteer 2014-09-10
  • 打赏
  • 举报
回复
我一般是在 单个 work group 内用 bitonic 排序好,然后在 CPU 端将多个 workgroup 排序的结果进行 merge.
lcwyylcwyy 2014-09-09
  • 打赏
  • 举报
回复
可以试试桶排序。另外,并行排序实际上因排序的数据量不同而不用,其实数据量小的话,CPU就可以了。如果小于最小并行度的话(NV 32 AMD 64)而且是数字排序的话,可以使用一些插入排序,如果是更大的数据量可以使用一级桶排序,而且要看数据的分布情况。随着数据量的增大不断增加同的级数。你可以思考一下1K,1G,1T的数据如何排序,因为不是所有的数据都能够读取到内存中。还有,并行排序需要数据量达到一定的等级才能看出排序加速效果(如1G的数据排序),否则不如CPU排序。 如果使用CUDA的话还有动态并行技术,可以进行并行快速排序,但其动态并行一般不超过64级,所以对数据量有一定限制。 实际上,我们在大规模排序时,使用多种排序技术,根据不同的数据量来使用不同的排序。比如1T是使用分级的桶排序,1G时使用动态并行化的快速排序,小于最小并行度时选一些交换排序或者插入排序都可以了(因为数据量比较小)。
Ven_J 2014-09-08
  • 打赏
  • 举报
回复
用归并排序的思想吧...
yy1990cn 2014-08-31
  • 打赏
  • 举报
回复
引用 1 楼 outstander 的回复:
[quote=引用 楼主 yy1990cn 的回复:] 各位大神,小弟初学opencl,现在要用opencl来实现一个排序算法,不知如何下手,求大神给点思路,主要是设备端运行的kernel函数不知怎么写,不知有没有这方面的参考代码,谢谢
并行排序和串行的排序很不一样,可以参考基数排序和归并排序。[/quote] 原来是版主,不知能不能推荐一些并行算法方面的书?
outstander 2014-08-30
  • 打赏
  • 举报
回复
引用 楼主 yy1990cn 的回复:
各位大神,小弟初学opencl,现在要用opencl来实现一个排序算法,不知如何下手,求大神给点思路,主要是设备端运行的kernel函数不知怎么写,不知有没有这方面的参考代码,谢谢
并行排序和串行的排序很不一样,可以参考基数排序和归并排序。

603

社区成员

发帖
与我相关
我的任务
社区描述
异构开发技术
社区管理员
  • OpenCL和异构编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧