Frage

Ich bin die Thread-Version von FFTW mit (einer FFT-Bibliothek), um zu versuchen einige Codes auf einer Dual-CPU-Maschine zu beschleunigen. Hier ist die Ausgabe der Zeit w / nur 1 Thread:

131.838u 1.979s 2:13.91 99.9%

Hier ist sie mit 2 Fäden:

166.261u 30.392s 1:52.67 174.5%

Die Benutzerzeiten und die CPU-Auslastung Prozentsätze scheinen darauf hinzudeuten, dass es ziemlich effektiv ist Threading, aber die Wanduhr Zeit (das ist das, was wirklich ist mir egal) sagt mir (glaube ich), dass es rund 28 zusätzliche Sekunden nimmt zu beschäftigen mit den Gewindegängen. Ist das eine genaue Art und Weise, die Situation zu beschreiben? Wenn ja, ist es ziemlich normal, oder habe ich wohl falsch etwas konfiguriert? Vielen Dank für jedes Licht.

War es hilfreich?

Lösung

Ich habe die FFTW eine angemessene Menge verwendet, und habe festgestellt, dass, wenn Sie mehr als zwei Prozessoren gehen, es ist fast immer eine saubere Lösung nur die Single-Threaded-Version zu verwenden. Es ist schneller, da gibt es weniger inter-thread-Kommunikation, oder zumindest, das ist meine Erfahrung gewesen.

Ein paar Dinge zu überprüfen:

  1. konfigurieren Sie Ihre Weisheit richtig, und mit ihm? Weisheit, einmal erstellt, wird Ihr verwandeln machen laufen viel schneller. Wenn Sie es nicht verwenden, sollten Sie sein.
  2. rufen Sie die Bibliothek von einem Thread oder von beiden? Das war immer mein Problem wurde mehrere Thread Anrufe in die Bibliothek Sperren immer schmerzhaft zu sein.
  3. Wie groß sind Ihre Transformationen? Stehen Sie mit einem kleinen Versuch, auf dem ersten, nur um zu sehen, wie es geht, dann Scaling-up?
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top