2 Stimmen

Das Schreiben eines parallelen Quick Sorts unter Verwendung von p-Threads in C

Ich versuche, einen parallelen Quick-Sort-Algorithmus zu implementieren, bin mir aber nicht so sicher, wie ich pthreads innerhalb der Quick-Sort-Funktion verwenden soll. Dies ist ein Link zu meinem Code auf Paste Bin http://pastebin.com/tG0h6cMU

1voto

Mats Petersson Punkte 123984

Die Anzahl der Threads pro Prozess sollte nahe bei 1,0 liegen, wenn sie CPU-gebunden sind. Wenn irgendwelche Arten von Ein-/Ausgaben involviert sind, können mehr Threads verwendet werden - zum Beispiel läuft das Kompilieren des Linux-Kernels am schnellsten, wenn etwa 1,5 "Jobs" (make -j N wobei N = Kerne * 1,5) pro Kern ausgeführt werden. Beachten Sie jedoch, dass dies sehr stark vom tatsächlichen Verhalten der Threads/Prozesse abhängig ist und es höchstwahrscheinlich erforderlich ist, die ideale Leistung für IHR spezielles Szenario zu messen.

Sicherlich führt eine zu hohe Anzahl von Threads im Vergleich zur Anzahl der Kerne zu "Thread-Überlastung". Wenn nicht genügend Threads vorhanden sind, werden die Kerne nicht ausgelastet, was auch nicht optimal ist.

0voto

Bernd Elkemann Punkte 22855

Im Allgemeinen könnten Sie ohne pthread_mutex_lock auskommen, einem parallelisierten Quicksort ohne Thread-Synchronisierung. Laut WP: https://en.wikipedia.org/wiki/Quicksort#Parallelization

Jetzt speziell für Ihre Implementierung:

Ich kann den Code nicht kompilieren, weil mir read_in und gen_random fehlen, aber ich kann Ihnen Folgendes mitteilen:

Es gibt ein paar Probleme mit Ihrem Code:

Zeile 45: Sie weisen einem int r ein int* r zu !!!

Zeile 133: wenn(a,...).

Außerdem gibt es einige unbenutzte Variablen (237: unsortiert, 236: sortiert, 218: i). Vielleicht haben Sie etwas vergessen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X