On Tue, Mar 17, 2026 at 11:38 PM Kandimalla, Nagarjuna (MU-Student) <[email protected]> wrote: > > I am Nagarjuna Kandimalla (www.linkedin.com/in/nagarjuna-kandimalla), a > Computer Science graduate student at the University of Missouri, Columbia. I > recently came to know about Google Summer of Code and am interested in > submitting a proposal on enhancements that can be made to GNU Parallel.
One of the side projects I have never gotten around to is to produce a parallel sort that is 100% parallelized. parsort (from GNU Parallel) is a very simple merge sort (it calls GNU sort 2k times in parallel), but all data has to go through a single core for the last merge. We have better sorting algorithms that can use 100% of all cores all the time with time complexity O((n log n)/k) (k = number of CPU threads). E.g. https://en.wikipedia.org/wiki/Samplesort#Uses_in_parallel_systems and https://github.com/bingmann/parallel-string-sorting I think it would be a very useful tool to have: A lot of data processing tasks have sorting as one of the steps, and everyone has more cores sitting idle. The program should be written in a compiled language for speed. Personally, I would do it in Rust if I had the skills. Bingmann (see above) uses C++ which is also great. It should respect locale but only do the locale conversion once - probably using strxfrm(3). parsort does the conversion log k times, which is a waste. It should be a drop-in replacement for GNU sort, so implement the same options. It should (like GNU sort) be able to limit memory use and use temporary files on disk. One of the good parts about this project is that you really do not need a lot of mentoring: * The goal is extremely clear - produce a program, that works like GNU sort but is k times faster that the single threaded version. * The algorithms already exist - they "just" need to be packaged nicely. * The interface to existing code base is minimal: Do the same as GNU sort and you are golden. I will be willing to spend some time on mentoring if needed. /Ole
