OpenZL 0.2.0

OpenZL 0.2.0 OpenZL 0.2.0

Nach sieben Monaten Entwicklung wurde das Framework 0.2.0 veröffentlicht OpenZL, das fĂŒr die Erstellung verlustfreier Datenkompressoren gedacht ist.

Das Framework besteht aus einer grundlegenden Bibliothek und Werkzeugen zur Erstellung spezialisierter Kompressoren, die in der Sprache SDDL.
beschrieben sind. Um einen guten spezialisierten Kompressor zu erstellen, gibt es zwei Phasen:

  1. Datenanalyse zur Extraktion der Struktur.
  2. Einsatz guter Backend-Kompressoren, die die erhaltene Struktur zur Erreichung einer guten Kompression nutzen.

OpenZL bietet Werkzeuge fĂŒr beide Phasen.

Das Projekt ist in C und C++ geschrieben und wird unter der BSD-Lizenz verbreitet.

Wesentliche Änderungen

SDDL2

SDDL wurde von Grund auf neu ĂŒberarbeitet, um die festgelegten Designziele zu erreichen. WĂ€hrend die ursprĂŒngliche Demoversion eine vereinfachte Laufzeitumgebung darstellte, ist SDDL2 ein vollwertiger Compiler: der Parser ĂŒbergibt die Daten an den semantischen Analysator, dieser wiederum ĂŒbergibt den typisierten abstrakten Syntaxbaum (AST) an den Optimierer, und der Optimierer steuert den Code-Generator, der den Bytecode fĂŒr die virtuelle Maschine generiert.

Das entscheidende Ergebnis ist die sofortige Syntaxanalyse. Wenn der Standort eines Eintrags ausschließlich anhand von Parametern und Konstanten bestimmt werden kann, springt die Engine direkt zu jedem Feld, ohne vorhergehende Bytes zu scannen, was einen zugriffsfreien Zugriff und eine Bandbreite von mehreren GB/s ermöglicht.

Die Sprache hat sich zusammen mit dem Werkzeugset weiterentwickelt. Jetzt unterstĂŒtzt sie 'when'-Blöcke fĂŒr bedingte Positionierungen, parametrisierte und anonyme EintrĂ€ge, den Zugriff auf Mitglieder von Eintragsfeldern sowie bitweise und logische Operatoren.

Was die Entwicklerfreundlichkeit betrifft, so erkennt die Phase der semantischen Analyse jetzt unbestimmte Referenzen, Typinkonsistenzen und AritĂ€t-Fehler bereits zur Compile-Zeit – einschließlich einer Angabe des Standorts im Quellcode – und es wurde eine VS Code-Erweiterung zur Syntaxhervorhebung fĂŒr .sddl-Dateien veröffentlicht.

Der neue integrierte LZ-Codec

In OpenZL ist jetzt der eigene LZ-Codec integriert, der in Form von ZL_GRAPH_LZ sowie einem Profil fĂŒr die sequenzielle Kompression in der zli-Utility dargestellt ist. Die Arbeit an dem Codec wird fortgesetzt: Es erfolgt eine Erweiterung der FunktionalitĂ€ten und eine Leistungssteigerung bei der Verarbeitung kleinerer Eingangsdaten. Momentan unterstĂŒtzt er eine FunktionalitĂ€t, die dem zstd Level 1 entspricht, mit einer KompressionsfenstergrĂ¶ĂŸe von 64 KB.

OpenZL ermöglicht es, jede Phase des LZ-Pipelines neu zu gestalten, um die Geschwindigkeit zu erhöhen. Seine graphbasierte Architektur erlaubt auch die Kombination von Phasen der Entropiecodierung, anstatt einen einheitlichen Pipeline zu verwenden, der fĂŒr alle AnwendungsfĂ€lle gleich gut geeignet ist. Mehrere Phasen können dann in einem einzigen Vorgang zusammengefasst werden, um die Bearbeitungsgeschwindigkeit zu steigern. Dadurch kann OpenZL eine um 10 % höhere Kompressionsgeschwindigkeit und eine um 70 % höhere Dekompressionsgeschwindigkeit im Vergleich zu Zstandard Level 1 auf dem Silesia-Benchmark in unseren Tests:

KompressorKompressionsverhÀltnisKompressionsgeschwindigkeitDekompressionsgeschwindigkeit
OpenZL LZ Level 12.74466 MB/s2288 MB/s
Zstd Level 1 mit 64K FenstergrĂ¶ĂŸe2.74419 MB/s1254 MB/s
Zstd Level 12.89424 MB/s1345 MB/s

UnterstĂŒtzung fĂŒr sehr große Eingangsdaten

zli unterstĂŒtzt jetzt die Verarbeitung riesiger Eingangsdaten (mehrere Gigabyte groß). Vor der Kompression werden solche Daten jetzt automatisch in steuerbare Fragmente (standardmĂ€ĂŸig etwa 16 MB) unterteilt, was hilft, den Speicherbedarf zu begrenzen, die DatenlokalitĂ€t zu verbessern und die Möglichkeit zur parallelen Verarbeitung zu eröffnen. In SDDL2 wird eine Ă€hnliche Funktion des automatischen Fragmentierens bei der arbeit mit dem Schema realisiert. Im Prozess wurden neue oder aktualisierte Segmentatoren geschaffen – fĂŒr CSV, Parquet und Standardnumerische Daten – und alle Segmentatoren sind jetzt serialisierbar und anpassbar, sodass die gewĂ€hlte Anordnung im Kompressor gespeichert und spĂ€ter wiederverwendet werden kann.

Dies wird wĂ€hrend der Kompression transparent angewendet. Beachten Sie, dass die Lernpipeline anders ist und unberĂŒhrt bleibt, sodass sie nicht fĂŒr die Annahme riesiger Eingangsdaten als Trainingsmaterial gedacht ist.

Verbesserungen im Online-Graph-Visualizer (es auszuprobieren)
Jetzt erkennt der Visualizer die Kompressions- und Dekompressionstraces von Anfang bis Ende.

Das Vorschaufenster ermöglicht es, die tatsĂ€chlich ĂŒber jede Kante fließenden Bytes zu sehen, und dank der Steuerungselemente zum Trimmen bleiben selbst große Streams handhabbar.

Das Einstellungsfenster vereint alle Anzeigeoptionen an einem Ort, wobei die vollstĂ€ndige Tastenkombination – Navigation in Richtungen, geordnete DurchlĂ€ufe, Entfaltung und Faltung, Knotenauswahl – eine bequeme Nutzung des Werkzeugs ohne Maus ermöglicht.

Jetzt haben die Traces Versionen, die Blockkomprimierung wird korrekt angezeigt, und zli kann endlich eigene Traces mit den neuen Flags —trace und —trace-streams-dir generieren.

Verschiedenes

  • Im Katalog wurden mehrere Codecs hinzugefĂŒgt. Die Codecs Partition und Bitpack verwenden jetzt einen kombinierten Decoder. Der Codec Floating-point bitsplit erhielt spezielle Encoder und Decoder fĂŒr die Formate fp16, fp32, fp64 und bf16 mit spezifischen Beschleunigungen. Range-bezogene Splits (split_byrange), ein LĂ€ngenmultiplexer, der Codec Sentinel, das Graph lz4 und kleine Hilfsfunktionen wie tryParseInt und splitByParam wurden hinzugefĂŒgt.
  • Die API wurde geordnet.
  • Das Fuzzing-Testen wurde verbessert.
  • Der Build- und Verpackungsprozess wurde fĂŒr mehr Plattformen optimiert.

Quelle: linux.org.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster