基数排序是比较适合并行化的排序算法之一,因为它不需要他的元素和数组当中的其他元素去进行一一对比来决定放的位置。另外还有比较适合并行化的就是双调排序。 基数排序原理 以从小到大,一次排序只考虑一位为例。基数排序一般从数据的最低有效位(LSB)开始进行排序,即考察所有的数据的当前位,其当前位为0的数据放 ...
分类:
编程语言 时间:
2018-09-15 23:20:48
阅读次数:
983
? 参考书中的代码,写了 ● 代码,核函数文件包含三中算法 ● 输出结果,统一采用 (1<<20) 的数据规模,尝试不同的工作组大小。使用局部内存并没有明显提升,尤其是使用两个局部内存的方法,严重拖后腿。 ● 总结 ■ CPU 版双调排序使用递归,代码比较简洁,也可以使用本篇中的方法家拿其转化为循环 ...
分类:
编程语言 时间:
2018-06-03 14:23:21
阅读次数:
166
? 学习了双调排序,参考(https://blog.csdn.net/xbinworld/article/details/76408595) ● 使用 CPU 排序的代码 ● 输出结果(临时改为排序 64 个元素,每行显示 16个) ...
分类:
编程语言 时间:
2018-06-02 11:27:46
阅读次数:
165
1. Batcher比较器 Batcher比较器是指如果在两个输入端给定输入x,y,再在两个输出端输出最大值max{x,y}和最小值min{x,y}。如图1所示,我们规定Batcher比较器的上输出端输出最小值,下输出端输出最大值。 2. 双调序列 所谓双调序列(Bitonic Sequence)是 ...
分类:
编程语言 时间:
2016-07-03 15:45:08
阅读次数:
458
在第五讲中我们学习了GPU三个重要的基础并行算法: Reduce, Scan 和 Histogram,分析了 其作用与串并行实现方法。 在第六讲中,本文以冒泡排序 Bubble Sort、归并排序 Merge Sort 和排序网络中的双调排序 Bitonic Sort 为例, 讲解如何从数据结构课上学的串行并行排序方法转换到并行排序,并附GPU实现代码。...
分类:
编程语言 时间:
2015-09-10 14:29:11
阅读次数:
526
先在这里记录一下代码!原理将来再补吧!
这个算法算是有一个致命的弱点吧!那就是如果元素的个数达不到2^n个的话,要填充!#include
using namespace std;
void SortDown(int , int);
void MergeUp(int, int);
void MergeDown(int, int);
void Exchange(int , int);
vo...
分类:
其他好文 时间:
2014-06-08 09:15:43
阅读次数:
225