parallel quicksort

Started by Mark Wongover 15 years ago2 messageshackers
Jump to latest
#1Mark Wong
markw@osdl.org

Hi everyone,

I've been playing around with a process based parallel quicksort
(http://github.com/markwkm/quicksort) and I tried to shoehorn it into
postgres because I wanted to see if I could sort more than integers.
I've attached a patch that creates a new GUC to control the degree of
parallelism and only modified the quicksort algorithm in quicksort.c.
Trying to 'make install' quickly shows me the patch breaks zic and
Andrew Gierth further pointed out on irc (a couple months back now)
that user defined comparison functions won't work as expected in the
forked processes (if I remember that correctly).

Hoping this could be useful, I wanted to put out what I had so far and
see how far away this is from something workable. Not to mention that
there are probably some improvements that could be make to the
parallel quicksort algorithm.

In case anyone is interested in a parallel merge sort algorithm, I
have started something fairly basic here:
http://github.com/markwkm/mergesort

Regards,
Mark

Attachments:

pqs-1.patchapplication/octet-stream; name=pqs-1.patchDownload+253-15
#2Markus Wanner
markus@bluegap.ch
In reply to: Mark Wong (#1)
Re: parallel quicksort

Hi,

On 08/09/2010 12:04 AM, Mark Wong wrote:

I've been playing around with a process based parallel quicksort
(http://github.com/markwkm/quicksort) and I tried to shoehorn it into
postgres because I wanted to see if I could sort more than integers.
I've attached a patch that creates a new GUC to control the degree of
parallelism and only modified the quicksort algorithm in quicksort.c.
Trying to 'make install' quickly shows me the patch breaks zic and
Andrew Gierth further pointed out on irc (a couple months back now)
that user defined comparison functions won't work as expected in the
forked processes (if I remember that correctly).

I'm not sure what the problems are, but the background worker
infrastructure I recently posted could possibly solve this problem, as
those are more like normal backends. (Assuming you were forking from the
backend).

Hoping this could be useful, I wanted to put out what I had so far and
see how far away this is from something workable. Not to mention that
there are probably some improvements that could be make to the
parallel quicksort algorithm.

Thanks for sharing.

Regards

Markus Wanner