Multicore-MP3-Encoder: Zwischenversion released

Wie angekündigt gibt es ab sofort die neue Version des MP3-Encoders zum Download.

Die Queues wurden durch SequentialVirtualMemoryPipe-Objekte ersetzt. Dadurch wurde die Kommunikation zwischen den Tasks deutlich reduziert. Folgende Abbildung zeigt den aktuellen Datenfluss:

Zwischenversion 1.5

Beim Ausführen meines Tests bin ich auf folgende Ergebnisse gekommen:

Dateien einzeln encoden: 23,8x
Dateien parallel encoden: 89,2x

[Nachtrag:] Dies entspricht einem Speedup von 3,75. LAME dazu im Vergleich: einzeln 24,6x, parallel 48,5 – Speedup etwa 2.

Mit ein paar Tricks lässt sich der letzte Wert vielleicht noch über die 90er-, vielleicht bis zur 100er-Marke steigern, dann ist aber das Maximale für meinen Prozessor erreicht.

Ausgehend von meinem ersten Testwert von 22,3x wird mit 89,2x lineare Skalierung erreicht. Bedenkt man, dass beim ersten Test bereits mehrere Threads zum Einsatz kamen, skaliert der Encoder sogar super linear beim Konvertieren von mehreren Dateien.
Diese Eigenschaft wird durch die parallele Dateiverarbeitung erzielt: Je mehr Dateien zu konvertieren sind, umso weniger fällt das I/O ins Gewicht, weil bereits während der Konvertierung einer Datei schon die nächsten Dateien in den Speicher geladen werden.

Viel Spaß damit!

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>