102 #define FW_SORT(PTR, NUM, TYPE, COMPARE) FW_SORT_IMPL(PTR, NUM, TYPE, COMPARE, false)
103 #define FW_SORT_ARRAY(ARRAY, TYPE, COMPARE) FW_SORT_IMPL(ARRAY.getPtr(), ARRAY.getSize(), TYPE, COMPARE, false)
104 #define FW_SORT_SUBARRAY(ARRAY, START, END, TYPE, COMPARE) FW_SORT_IMPL(ARRAY.getPtr(START), (END) - (START), TYPE, COMPARE, false)
106 #define FW_SORT_MULTICORE(PTR, NUM, TYPE, COMPARE) FW_SORT_IMPL(PTR, NUM, TYPE, COMPARE, true)
107 #define FW_SORT_ARRAY_MULTICORE(ARRAY, TYPE, COMPARE) FW_SORT_IMPL(ARRAY.getPtr(), ARRAY.getSize(), TYPE, COMPARE, true)
108 #define FW_SORT_SUBARRAY_MULTICORE(ARRAY, START, END, TYPE, COMPARE) FW_SORT_IMPL(ARRAY.getPtr(START), (END) - (START), TYPE, COMPARE, true)
116 return (((T*)data)[idxA] < ((T*)data)[idxB]);
123 swap(((T*)data)[idxA], ((T*)data)[idxB]);
137 sort(data.
getPtr(start), 0, end - start, compareFunc, swapFunc, multicore);
144 sort(data, 0, num, compareFunc, swapFunc, multicore);
149 #define FW_SORT_IMPL(PTR, NUM, TYPE, COMPARE, MULTICORE) \
153 static bool compareFunc(void* data, int idxA, int idxB) \
155 TYPE& a = ((TYPE*)data)[idxA]; \
156 TYPE& b = ((TYPE*)data)[idxB]; \
160 FW::sort(PTR, NUM, SortLambda::compareFunc, FW::sortDefaultSwap<TYPE>, MULTICORE); \
int compareF64(void *data, int idxA, int idxB)
int compareU32(void *data, int idxA, int idxB)
void sortDefaultSwap(void *data, int idxA, int idxB)
void swapS32(void *data, int idxA, int idxB)
void sort(void *data, int start, int end, SortCompareFunc compareFunc, SortSwapFunc swapFunc, bool multicore=false)
CUdevice int ordinal char int CUdevice dev CUdevprop CUdevice dev CUcontext ctx CUcontext ctx CUcontext pctx CUmodule const void image CUmodule const void fatCubin CUfunction CUmodule const char name void p CUfunction unsigned int bytes CUtexref pTexRef CUtexref CUarray unsigned int Flags CUtexref int CUaddress_mode am CUtexref unsigned int Flags CUaddress_mode CUtexref int dim CUarray_format int CUtexref hTexRef CUfunction unsigned int numbytes CUfunction int float value CUfunction int CUtexref hTexRef CUfunction int int grid_height CUevent unsigned int Flags CUevent hEvent CUevent hEvent CUstream unsigned int Flags CUstream hStream GLuint bufferobj unsigned int CUdevice dev CUdeviceptr unsigned int CUmodule const char name CUdeviceptr unsigned int bytesize CUdeviceptr dptr void unsigned int bytesize void CUdeviceptr unsigned int ByteCount CUarray unsigned int CUdeviceptr unsigned int ByteCount CUarray unsigned int const void unsigned int ByteCount CUarray unsigned int CUarray unsigned int unsigned int ByteCount void CUarray unsigned int unsigned int CUstream hStream const CUDA_MEMCPY2D pCopy CUdeviceptr const void unsigned int CUstream hStream const CUDA_MEMCPY2D CUstream hStream CUdeviceptr unsigned char unsigned int N CUdeviceptr unsigned int unsigned int N CUdeviceptr unsigned int unsigned short unsigned int unsigned int Height CUarray const CUDA_ARRAY_DESCRIPTOR pAllocateArray CUarray const CUDA_ARRAY3D_DESCRIPTOR pAllocateArray unsigned int CUtexref CUdeviceptr unsigned int bytes CUcontext unsigned int CUdevice device GLenum texture GLenum GLuint buffer GLenum GLuint renderbuffer GLenum GLsizeiptr const GLvoid * data
void swapF64(void *data, int idxA, int idxB)
int compareS64(void *data, int idxA, int idxB)
int compareS32(void *data, int idxA, int idxB)
void swapU32(void *data, int idxA, int idxB)
int compareF32(void *data, int idxA, int idxB)
void swapU64(void *data, int idxA, int idxB)
int compareU64(void *data, int idxA, int idxB)
void(* SortSwapFunc)(void *data, int idxA, int idxB)
FW_CUDA_FUNC void swap(T &a, T &b)
void swapS64(void *data, int idxA, int idxB)
CUdevice int ordinal char int CUdevice dev CUdevprop CUdevice dev CUcontext ctx CUcontext ctx CUcontext pctx void
const T * getPtr(S32idx=0) const
bool sortDefaultCompare(void *data, int idxA, int idxB)
bool(* SortCompareFunc)(void *data, int idxA, int idxB)
void swapF32(void *data, int idxA, int idxB)