宏
#define _IN_OUT_
#define _IN_
#define _OUT_
#define _ARR_
#define _VAL_
cuda排序
// datasize means after-sort index
template <typename T>
GLB void sort(_IN_ _ARR_ const T *data, _IN_ _VAL_ cintp datasize, _OUT_ _ARR_ T *dest, bool upp = true)
{
CUDA_ID;
const int id = bid.x * bdim.x + tid.x;
const int size = *datasize;
if (id < size)
{
int num = 0;
for (int a = 0; a < size; ++a)
{
if (upp)
{
if ((data[id] > data[a]))
++num;
}
else
{
if ((data[id] < data[a]))
++num;
}
}
dest[id] = num;
}
}
得出的dest存储的下标为它应当处在的下标
后续还会更新 先写成这样