我們常用的排序演算法基本上都是單執行緒的,要在cuda運用並行進行排序,就需要新的排序演算法。這篇就介紹cuda適用的排序方法:奇偶排序(odd even sort),它是基於「老朋友」氣泡排序衍生出來的演算法。
cuda的演算法複雜度:o(n),穩定排序
由於每個「小塊」進行交換的時候都是互不相關的,所以使用cuda進行平行計算非常合適。
核函式:
__global__ void cudaoddevensort(int* data, __uint32_t len) //邊界檢查
int d1 = data[isodd+2*idx+1];
if(d0>d1)
}while(counter--);
}
主函式呼叫:
#include #define len 127
int main(int argc,char **ar**) //boundary
int d1 = s[isodd+2*idx+1];
if(d0>d1)
}while(counter--);
//copy back
for(int i=0; i共享記憶體使用有兩種方式:動態和靜態。這裡使用的是動態分配。
主函式呼叫:
#include #define len 127
int main(int argc,char **ar**)
奇偶排序演算法
奇偶排序,或奇偶換位排序,或磚排序,是一種相對簡單的排序演算法,最初發明用於有本地互連的平行計算。這是與冒 泡排序特點類似的一種比較排序。該演算法中,通過比較陣列中相鄰的 奇 偶 位置數字對,如果該奇偶對是錯誤的順序 第乙個大於第二個 則交換。下一步重 復該操作,但針對所有的 偶 奇 位置數字對。如...
Java資料結構與演算法之陣列排序 奇偶排序
直接看 排序陣列,用於對陣列中的元素進行排序 採用奇偶排序 思路 它的思路是在陣列中重複兩趟掃瞄。第一趟掃瞄選擇所有的資料項對,a j 和a j 1 j是奇數 j 1,3,5,如果它們的關鍵字的值次序顛倒,就交換它們。第二趟掃瞄對所有的偶數資料項進行同樣的操作 j 2,4,6,重複進行這樣兩趟 的排...
基礎排序 奇偶排序
奇偶排序,或奇偶換位排序,或磚排序,是一種相對簡單的排序演算法,最初發明用於有本地互連的平行計算。這是與氣泡排序特點類似的一種比較排序。該演算法中,通過比較陣列中相鄰的 奇 偶 位置數字對,如果該奇偶對是錯誤的順序 第乙個大於第二個 則交換。下一步重複該操作,但針對所有的 偶 奇 位置數字對。如此交...