I’m a student from University of LiÃ¨ge. I’m trying to use CUDA to speed up the “decision tree” algorithm (the current version is only sequential). This algorithm is mostly used in a lot of bio-informatic applications.
At the moment, I’m trying to find a sort algorithm on GPU that would be faster than a “Quicksort on CPU”.
In memory, I have to sort a very large float vector.
I have seen some interessant algorithm, like :
I read in the forum that the “radix sort” given with the SDK is very efficient (in the project named “particles”). But I don’t understand how to use it…
//////////////////////////////////////////////////////////////////////////////// //! Perform a radix sort //! Sorting performed in place on passed arrays. //! //! @param pData0 input and output array - data will be sorted //! @param pData1 additional array to allow ping pong computation //! @param elements number of elements to sort //////////////////////////////////////////////////////////////////////////////// void RadixSort(KeyValuePair *pData0, KeyValuePair *pData1, uint elements, uint bits);
If I have a float Vector “float* vector”, how can I send to RadixSort() a “KeyValuePair *pData0” ?
Would you know any better algorithms to sort large float vectors ?
The bitonic sort seems to be working fine with a little vector (and with size%2 == 0) but if I really want to use it, I need to find
an example of CUDA implementation of the ABisort… Would you know where I could find it ?
Thank you for your help, and keep in mind that i’m a newbie :P!