PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Paq8o


Shink
2008-05-30, 13:41:15
Hallo!

PAQ8 ist der effizienteste Komprimieralgorithmus:
http://www.cs.fit.edu/~mmahoney/compression/

Vorschlag für einen CPU-Benchmark:
- Peazip 2.1 (Portable Version) für Windows herunterladen
- Options: PAQ, Level 8, PAQ Version PAQ8O
- Die Datei "peazip.exe" packen

Mein Ergebnis: (Firmenrechner)
Intel Pentium 4 Prescott-2M 3.0 GHz HTT
System Bus 800MHz
3,25 GB DDR2

Input: 547840 B
Output: 527347 B (96%)
Time: 107065 ms (5000 B/s)

HarryHirsch
2008-05-30, 15:40:41
E8400@4000, Win XP

Input: 547840 B
Output: 30 B (0%)
Time: 797 ms (687000 B/s)

edit:
öhm... irgendwas stimmt da nicht...

Ronny G.
2008-05-30, 16:55:44
ich komme irgendwie mit den einstellungen nicht klar, geht es das etwas genauer?

pest
2008-05-30, 17:42:55
Peazip starten, Peazip.exe auswählen und auf Add, dann auf Options
Level (8) und Paq8o auswählen, dann auf Create .paq8o klicken.

pest
2008-05-30, 18:41:48
E8400@4GHz, 4GB DDR2-890 (5-5-4-15)


Input: 547840 B
Output: 527347 B (96%)
Time: 39156 ms (13000 B/s)

Shink
2008-05-30, 19:56:43
E8400@4000, Win XP

Input: 547840 B
Output: 30 B (0%)
Time: 797 ms (687000 B/s)

edit:
öhm... irgendwas stimmt da nicht...
Toll - komprimiert auf 30 Byte?:|

@pest: Danke; ich dachte meine Beschreibung wäre klar. Nettes Ergebnis; mir ist nichtmal klar ob das Teil Multithreading unterstützt.

pest
2008-05-30, 20:16:44
mir ist nichtmal klar ob das Teil Multithreading unterstützt.

nee PAQ unterstützt kein MT

-=Popeye=-
2008-05-30, 20:20:26
Q6600@3GHz, 8GB DDR2-800 (5-5-5-15), Vista64


Input: 24601721358 B
Output: 8704238 B (0%)
Time: 341391 ms (72063000 B/s)

irgendwie sieht mein Ergebnis merkwürdig aus

edit: hallo Glückskind :biggrin:

pest
2008-05-30, 20:24:21
eure Rechner sind alle überhaupt nicht stabil :biggrin:

Shink
2008-05-30, 20:39:52
Q6600@3GHz, 8GB DDR2-800 (5-5-5-15), Vista64


Input: 24601721358 B
Output: 8704238 B (0%)
Time: 341391 ms (72063000 B/s)

irgendwie sieht mein Ergebnis merkwürdig aus
:
Bitte? Du hast versucht 24,6 GB mit PAQ zu packen?

eure Rechner sind alle überhaupt nicht stabil :biggrin:
Hab schon viel herumprobiert damit aber bisher hats noch immer funktioniert bei mir. Könnte also schon stimmen.
Davon abgesehen sollte man da wohl besser ein Shellscript oder so etwas zusammen stellen; anscheinend ist die Bedienung von Peazip nicht ganz so klar.

Naja; zwei Ergebnisse haben wir ja schon.

HarryHirsch
2008-05-30, 20:48:31
eure Rechner sind alle überhaupt nicht stabil :biggrin:

intel verkauft also schrott?

E8400@stock (bios default)

Input: 547840 B
Output: 30 B (0%)
Time: 1032 ms (530000 B/s)

-=Popeye=-
2008-05-30, 21:14:02
Q6600@3GHz, 8GB DDR2-800 (5-5-5-15), Vista64


Input: 24601721358 B
Output: 8704238 B (0%)
Time: 341391 ms (72063000 B/s)

irgendwie sieht mein Ergebnis merkwürdig aus


zweiter Durchlauf:
Input: 24646549283 B
Output: 8731024 B (0%)
Time: 10346 ms

... komisches Ding, Input - Output nahezu identisch aber der Zeitunterschied :confused: B/s fehlt auch, komisch.

-=Popeye=-
2008-05-30, 21:22:11
Bitte? Du hast versucht 24,6 GB mit PAQ zu packen?

Hmm, so siehts bei mir aus...

http://www.abload.de/img/paq8oeb9.png

... die Einstellungen dürften also stimmen.

HarryHirsch
2008-05-30, 21:31:45
Hmm, so siehts bei mir aus...

http://www.abload.de/img/paq8oeb9.png

... die Einstellungen dürften also stimmen.

jo die einstellungen stimmen.
aber du hast anscheinend mehrere ordner zum packen ausgewählt, schau mal unten bei "Archiving:"

edit:
wieso fehlt bei dir das feld wo man den "level" einstellt?

pest
2008-05-30, 21:56:55
intel verkauft also schrott?



war ein spaß, meiner ist in der Einstellung nicht Primestabil ;)
vielleicht funzt das Programm unter Vista nicht.

-=Popeye=-
2008-05-30, 22:06:00
@HarryHirsch
"Archiving:" Genau das war's bei mir - danke für den Tipp.
Gute Frage, jetzt ist wieder da *kopfkratz*.

Q6600@3GHz, 8GB DDR2-800 (5-5-5-15), Vista64
Input: 55296 B
Output: 28 B (0%)
Time: 809 ms (68000 B/s)

...jetzt dürfte es stimmen :redface:

pest
2008-05-30, 22:08:11
nee du musst Peazip.exe packen, die ist 547840 Bytes groß

man ist ja der komplizierteste Bench ever

-=Popeye=-
2008-05-30, 22:19:53
Ahh, jetzt hab ichs gerafft.:hammer:

Q6600@3GHz, 8GB DDR2-800 (5-5-5-15), Vista64
Input: 547840 B
Output: 30 B (0%)
Time: 1007 ms (544000 B/s)

pest
2008-05-30, 22:23:14
lol, es funzt nicht :(, Output muss 96% vom Input sein...

MrMostar
2008-05-30, 22:33:40
Paq8o im Peazip ist nicht vergleichbar. Wir sollten uns auf die aktuelle PAq8o9 (http://www.cs.fit.edu/~mmahoney/compression/paq8o9.zip) einigen.

PS: Wenn es um absolut maximale Kompression geht, ist die Variante http://schnaader.info/paq8o8pre.zip eure Wahl :biggrin: Diese Version untersucht den Datenstrom vorher noch auf Daten mit geringer Kompression und dekomprimiert diese.

Benutzung: paq-exe auf den Desktop legen, zu (ent)komprimierende Dateien daraufziehen. Fertig.
(naja, bis es neuronale Netzwerkbeschleunigung in Hardware gibt, ja; ansonsten: warten...)

edit: falsche exe, unten sind die richtigen Werte.

-=Popeye=-
2008-05-30, 22:38:24
lol, es funzt nicht :(, Output muss 96% vom Input sein...

Nicht Fleisch, nicht Fisch, komisch, komisch.;D

MrMostar
2008-05-30, 22:47:17
Oops, die falsche Exe genommen, aber jetzt zum Vergleich mit beiden Paq Versionen:

Creating archive C:\Programme\PeaZip\peazip.exe.paq8o8pre with 1 file(s)...
Precompressing: 100.0% - Time: 62 ms
C:/Programme/PeaZip/peazip.exe 547840 -> 547882 -> 527288
547840 -> 527323
Time 63.92 sec, used 224344282 bytes of memory

Close this window or press ENTER to continue...



Creating archive C:\Programme\PeaZip\peazip.exe.paq8o9 with 1 file(s)...
C:/Programme/PeaZip/peazip.exe 547840 -> 527262
547840 -> 527294
Time 66.58 sec, used 224342234 bytes of memory

Close this window or press ENTER to continue...


Es ist anscheinend nichts komprimiert in der installierten exe, in den einschlägigen Benchmarks (http://squeezechart.freehost.ag/main.html) gewinnt meistens die ...pre Version.

edit: cpu: X2 4400 939

edit2: Extreme Compression: PAQ8jd Benchmark (http://www.forum-3dcenter.org/vbulletin/showthread.php?t=350941) ;)

pest
2008-05-30, 23:38:46
ich hab auch mal nen Packer geschrieben, den können wir auch nehmen :)
läuft aber über die FP-Einheiten

C.D.B.
2008-05-31, 00:35:11
Und es geht doch! :D

http://sektor101.se.funpic.de/peazip.png
http://sektor101.se.funpic.de/peazip_cpuz.png

MrMostar
2008-05-31, 13:03:46
Seltsam, getestet mit den Vorgaben des Thread-starters ist mein altes unübertaktetes AMD System(2.2GHz) schneller als der übertaktete Q6600 meines Vorposters, woran liegt das?

Shink
2008-05-31, 14:36:55
Seltsam, getestet mit den Vorgaben des Thread-starters ist mein altes unübertaktetes AMD System(2.2GHz) schneller als der übertaktete Q6600 meines Vorposters, woran liegt das?
Nun ja; mein "Referenzsystem" ist genauso schnell wie der Core2Quad. Ist ja mal relativ ungewöhnlich das Ergebnis.
QuadCore hilft wie schon erwähnt gar nichts. Taktfrequenz hilft anscheinend schonmal für diesen Test; ansonsten kann ich nicht wirklich was sagen.

MrMostar
2008-05-31, 22:55:05
Ich vermute, daß das neuronale Netzwerk extrem unlokale Zugriffe erzeugt, hier scheinen (neben grossen Caches) Systeme mit integriertem Speichercontroller ein kleinen Vorteil zu haben, es dürfte also interessant sein, welchen Leistungssprung die kommenden Nehalems bei solchem cache-miss-intensiven Code erreichen.

Interessehalber habe ich noch die Lokalitaet von 3 Packern untersucht, die ich beim Packen einer grossen Datei an CPU0 gebunden habe. Hier sind die Werte 2 und 3 in den Screenshots interessant:
Bei first level Cache misses liegt paq mit 16.5 Mio misses/s um Faktor 80(Speicherverbrauch hier 250MB @Stufe5) hoeher als zip(@max Mem: 68MB) mit 0.2Mio misses/s.
7zip liegt mit 5 Mio misses/s ganz gut trotz Kompressionslevel Ultra mit einem Speicherverbrauch von 700MB.

pest
2008-05-31, 23:03:31
Ich vermute, daß das neurale Netzwerk extrem unlokalen Zugriffe erzeugt, #

es heißt neuronales netzwerk, und paq benutzt nicht mal wirklich ein solches
der große unterschied zu anderen packern ist das jedes bit aus einer kombination verschiedener modelle hervorgesagt wird,
damit ist verbrauchte speicher enorm->wenig lokalität->hohe anzahl an cache-misses.

MrMostar
2008-05-31, 23:10:29
sry, ich habe einfach den englischen Begriff (http://en.wikipedia.org/wiki/Artificial_neural_network)direkt übernommen, da bin ich ein bisschen lax mit denglisch :redface:

ich wollte aufzeigen, daß 7z trotz dreifachem Speicherverbrauch gut dreimal weniger cache misses hat.

pest
2008-05-31, 23:16:47
ich wollte aufzeigen, daß 7z trotz dreifachem Speicherverbrauch gut dreimal weniger cache misses hat.

naja das liegt nicht unbedingt am speicherverbrauch, sondern wie eben auf diese daten zugegriffen wird. bei 7Zip wird ein großer Teil des verwendeten Speichers einfach sequenziell bearbeitet

MrMostar
2008-05-31, 23:29:07
paq benutzt nicht mal wirklich ein solches

Komisch, ich habe jetzt nochmal in die source geguckt, es scheint sich doch um ein neuronales Netzwerk zu handeln?
MODEL MIXING

paq8o9 uses a neural network to combine a large number of models. The
i'th model independently predicts
p1_i = p(y_j = 1 | y_0..j-1), p0_i = 1 - p1_i.
The network computes the next bit probabilty

p1 = squash(SUM_i w_i t_i), p0 = 1 - p1 (1)

where t_i = stretch(p1_i) is the i'th input, p1_i is the prediction of
the i'th model, p1 is the output prediction, stretch(p) = ln(p/(1-p)),
and squash(s) = 1/(1+exp(-s)). Note that squash() and stretch() are
inverses of each other.

After bit y_j (0 or 1) is received, the network is trained:

w_i := w_i + eta t_i (y_j - p1) (2)

where eta is an ad-hoc learning rate, t_i is the i'th input, (y_j - p1)
is the prediction error for the j'th input but, and w_i is the i'th
weight. Note that this differs from back propagation:

w_i := w_i + eta t_i (y_j - p1) p0 p1 (3)

which is a gradient descent in weight space to minimize root mean square
error. Rather, the goal in compression is to minimize coding cost,
which is -log(p0) if y = 1 or -log(p1) if y = 0. Taking
the partial derivative of cost with respect to w_i yields (2).


.......


//////////////////////////// Mixer /////////////////////////////

// Mixer m(N, M, S=1, w=0) combines models using M neural networks with
// N inputs each, of which up to S may be selected. If S > 1 then
// the outputs of these neural networks are combined using another
// neural network (with parameters S, 1, 1). If S = 1 then the
// output is direct. The weights are initially w (+-32K).
// It is used as follows:
// m.update() trains the network where the expected output is the
// last bit (in the global variable y).
// m.add(stretch(p)) inputs prediction from one of N models. The
// prediction should be positive to predict a 1 bit, negative for 0,
// nominally +-256 to +-2K. The maximum allowed value is +-32K but
// using such large values may cause overflow if N is large.
// m.set(cxt, range) selects cxt as one of 'range' neural networks to
// use. 0 <= cxt < range. Should be called up to S times such
// that the total of the ranges is <= M.
// m.p() returns the output prediction that the next bit is 1 as a
// 12 bit number (0 to 4095).



etwas OT: würde es zusätzliche Performance bringen bzw überhaupt möglich, die einzelnen Modelle in eigene Threads zu packen, da ja jedes auf den gesamten Speicher zugreifen muss?

ich hab auch mal nen Packer geschrieben, den können wir auch nehmen
läuft aber über die FP-Einheiten
Gibt es da mehr Details?

pest
2008-06-01, 07:51:20
Komisch, ich habe jetzt nochmal in die source geguckt, es scheint sich doch um ein neuronales Netzwerk zu handeln?


naja es steht drin aber m.M. nach ist ein "echtes" neuronales Netzwerk was anderes. Im Prinzip optimiert Paq in Richtung des Gradienten...



etwas OT: würde es zusätzliche Performance bringen bzw überhaupt möglich, die einzelnen Modelle in eigene Threads zu packen, da ja jedes auf den gesamten Speicher zugreifen muss?


Hm, die Einzelwahrscheinlichkeiten kann man getrennt berechnen, aber
die Hauptarbeit (der Mixer) lässt sich nicht Multithreaden.



Gibt es da mehr Details?

ist ein verlustfreier AudioCodec (besser als Flac,Wavpack,MonkeysAudio)
kann mal ein Packet hochladen, und den zum Benchen nehmen.

MrMostar
2008-06-01, 08:02:39
ist ein verlustfreier AudioCodec (besser als Flac,Wavpack,MonkeysAudio)
kann mal ein Packet hochladen, und den zum Benchen nehmen.

Das hört sich sehr gut an! (sowas laesst du einfach auf deiner HD verstauben? :eek:)

pest
2008-06-01, 08:15:35
Das hört sich sehr gut an! (sowas laesst du einfach auf deiner HD verstauben? :eek:)

ist so langsam wie OptimFrog, wer braucht sowas?

MrMostar
2008-06-01, 09:12:25
Schade, als Benchmark wärs aber trotzdem interessant.

pest
2008-06-01, 09:21:52
ok, ich mach mal nen Packet klar, und füge noch fix ne --bench Option ein