quicksort parallèle en c

Après beaucoup de recherche pour une mise en œuvre parallèle de quicksort en c, je suis sur le point de plonger dans le code et de moi-même. (J'ai besoin de trier un tableau d'environ 1 million de chaînes de texte.) Il semble que toutes les implémentations j'ai trouvé diviser le travail à l'intérieur de la fonction qsort lui-même, ce qui crée une énorme quantité de frais généraux dans le partitionnement de la quantité relativement faible de temps de travail par thread.

Ne serait-il pas plus rapide de diviser le 1 million de chaînes par le nombre de threads (dans mon cas, 24 threads), et demandez à chacun de travailler sur une section, puis effectuez l'une mergesort? Accordée, ce qui a l'inconvénient théorique qu'il n'est pas un lieu de tri, mais avec des masses de mémoire disponible, il n'est pas un problème. La machine, elle fonctionne sur 12 (très rapide), physique/24 noyaux logiques et 192 GO (oui, giga-octets) de mémoire. Actuellement, même sur cette machine, le tri prend près de 8 minutes!

source d'informationauteur PaeneInsula