CUDA 演算法之 奇偶排序

2021-09-17 22:51:23 字數 736 閱讀 2062

我們常用的排序演算法基本上都是單執行緒的,要在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,重複進行這樣兩趟 的排...

基礎排序 奇偶排序

奇偶排序,或奇偶換位排序,或磚排序,是一種相對簡單的排序演算法,最初發明用於有本地互連的平行計算。這是與氣泡排序特點類似的一種比較排序。該演算法中,通過比較陣列中相鄰的 奇 偶 位置數字對,如果該奇偶對是錯誤的順序 第乙個大於第二個 則交換。下一步重複該操作,但針對所有的 偶 奇 位置數字對。如此交...