o Use radix-sort for internal sorting.
o Parallelization of internal sorting.
o Clean up data types and make sure they cannot overflow. (size_t vs. u64 vs. sh_off_t vs. uns)
-o Switching between direct and normal I/O.
+o Switching between direct and normal I/O. Should use normal I/O if the input is small enough.
o Deal with too rough range estimates in radix splitting.
o How does the speed of radix splitting decrease with increasing number of hash bits?
Does it help to use more bits than we need, so that we sort less data in memory?
uns sorter_max_radix_bits;
uns sorter_min_multiway_bits;
uns sorter_max_multiway_bits;
+uns sorter_threads;
+uns sorter_thread_threshold;
struct fb_params sorter_fb_params;
static struct cf_section sorter_config = {
CF_UNS("MaxRadixBits", &sorter_max_radix_bits),
CF_UNS("MinMultiwayBits", &sorter_min_multiway_bits),
CF_UNS("MaxMultiwayBits", &sorter_max_multiway_bits),
+ CF_UNS("NumThreads", &sorter_threads),
+ CF_UNS("ThreadThreshold", &sorter_thread_threshold),
CF_END
}
};