#include "xf_database/bitonic_sort.hpp"
template < typename Key_Type, int BitonicSortNumber > void bitonicSort ( hls::stream <Key_Type>& kin_strm, hls::stream <bool>& kin_strm_end, hls::stream <Key_Type>& kout_strm, hls::stream <bool>& kout_strm_end, bool order )
Bitonic sort is parallel algorithm for sorting.
This algorithms can sort a large vector of data in parallel, and by cascading the sorters into a network it can offer good theoretical throughput.
Although this algorithms is suitable for FPGA acceleration, it does not work well with the row-by-row streaming interface in database library. Please consider this primitive as a demo, and only use it by deriving from this code. Alternative sorting algorithms in this library are insertSort and mergeSort .
Parameters:
| Key_Type | the input and output key type |
| BitonicSortNumber | the parallel number |
| kin_strm | input key stream |
| kin_strm_end | end flag stream for input key |
| kout_strm | output key stream |
| kout_strm_end | end flag stream for output key |
| order | 1 for ascending or 0 for descending sort |