- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

I wrote a program for numerical analysis, where one of the performance-critical parts of the program is to sort large vector or matrix.

Once I am done with the coding, I test the performance, and it looks a bit slower than I expected, after timing my code, I find the problem lies in the sorting function, for large array, performance-wise, the only acceptable sorting method is radix-sort, but unfornatuely the current implentmention of radix-sort in IPP that sorting double/f64 vectors cannot return the index of sorted vector, which is problematic.

Without the application of radix-sort, for large array, the performance of multi-threading IPP sorting is vastly slower than calling the standard Matlab sort function, which is quite disappointing.

I just want to know if it is possible to include a radix-sort, with the return of index, for double data in the future IPP release, I was expected it is rather straight forwards to return both index and value for a radix-sort, but I could be wrong since I dont know the methods used in IPP radix sort, thanks.

Link Copied

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

**we**do here? Also, when you talk about '...standard Matlab sort function...' do you mean based on the Radix Sort algorithm? I could test a couple of IPP sorting functions from DSP domain and compare with a set of sorting algorithms implemented on our project and I'll provide some feedback. Best regards, Sergey PS1: Just for the reference. Some time ago we had a very good discussion on

**Cilk Plus forum**regarding performance of Merge Sort algorithm and a couple of another. Please take a look if interested: Web-link: http://software.intel.com/en-us/forums/topic/265736 PS2: Merge Sort is my favorite algorithm to sort very large data sets ( larger then 64MB ) and it significantly outperforms Heap and Quick sorting algorithms. All my results are based on many real tests (!) and tests for all algorithms were deterministic ( data sets were the same / not generated by 'rand' function ). Sorry, I don't use Radix Sort algorithm.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

**should be vastly faster**...' can not be taken for granted. I'm talking about

**practical applications**of sorting algorithms and this is what you have done. That is, compared performance of MATLAB and IPP functions. Also, very often on different forums developers, who like talking about complexities of different algorithms,

**never tried**these algorithms in real tests. In most cases their exposure / experience could be described as '...a couple of minutes on Wiki...' or a couple of pages read in some book. Just take a look what different guys are talking, for example, about Strassen Algorithm for Matrix Multiplication ( sorry for a not sorting algorithm... ). Please try Bubble, Insert, Select, Heap, Merge, Quick, Pigeonhole, Radix, Flash, etc algorithms with data sets of different sizes and you will be very surprised with performance results. Best regards, Sergey

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

**implementation complexity**. Also, theory never takes into account that some extra processing is always needed for loops, variable exchanges, assignments, recursion calls, allocation memory on the stack, etc ( should I continue here? ). I've spent hundreds of hours on optimizing testing, verifying and tuning many well known sorting algorithms ( and several my own ) before selecting three fastest for different applications with different types of data sets. These are as follows: Merge, Heap and Pigeonhole sorting algorithms. You should know that in image processing for images with a range of integer values from 0 to 32768 a Pigeonhole sorts an array in

**two**passes in a single-threaded application. >>...I have not provided "deteminstic tests" to prove my point... If you decide to provide ( test-cases etc ) I will find time to verify your results and that is not a problem.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page