OpenZL 0.2.0

OpenZL 0.2.0 OpenZL 0.2.0

AprÚs sept mois de développement, la version 0.2.0 du framework a été publiée OpenZL, conçu pour créer des compresseurs de données sans perte.

Le framework se compose d'une bibliothÚque de base et d'outils pour créer des compresseurs spécialisés, décrits dans le langage SDDL.
Pour créer un bon compresseur spécialisé, il y a deux étapes :

  1. Analyse des données pour extraire la structure.
  2. Utilisation de bons compresseurs backend, qui utilisent la structure obtenue pour atteindre une bonne compression.

OpenZL fournit des outils pour les deux étapes.

Le projet est écrit en C et C++ et est distribué sous la licence BSD.

Principales modifications

SDDL2

SDDL a été complÚtement réécrit depuis le début pour atteindre les objectifs de conception prévus. Si la version démo initiale était un environnement d'exécution simplifié, SDDL2 est un véritable compilateur : l'analyseur syntaxique transmet les données à l'analyseur sémantique, qui à son tour passe l'arbre syntaxique abstrait typé (AST) à l'optimiseur, et l'optimiseur gÚre le générateur de code qui génÚre le bytecode de la machine virtuelle.

Le rĂ©sultat clĂ© est une analyse syntaxique instantanĂ©e. Lorsque la position d'un enregistrement peut ĂȘtre complĂštement dĂ©terminĂ©e uniquement par les paramĂštres et les constantes, le moteur accĂšde directement Ă  n'importe quel champ, sans scanner les octets prĂ©cĂ©dents, ce qui permet un accĂšs sans copie et une bande passante de plusieurs Go/s.

Le langage lui-mĂȘme a Ă©voluĂ© avec l'ensemble d'outils. Maintenant, il prend en charge des blocs when pour des emplacements conditionnels, des enregistrements paramĂ©trĂ©s et anonymes, l'accĂšs aux membres des champs d'enregistrements, ainsi que des opĂ©rateurs bit Ă  bit et logiques.

En ce qui concerne la convivialitĂ© pour les dĂ©veloppeurs, l'Ă©tape d'analyse sĂ©mantique dĂ©tecte dĂ©sormais les rĂ©fĂ©rences indĂ©finies, les incohĂ©rences de types et les erreurs d'aritĂ© au moment de la compilation – avec indication des emplacements dans le code source – et une extension VS Code a Ă©tĂ© publiĂ©e pour la coloration syntaxique des fichiers .sddl.

Nouveau codec LZ intégré

OpenZL inclut dĂ©sormais son propre codec LZ, prĂ©sentĂ© sous la forme de ZL_GRAPH_LZ, ainsi qu'un profil de compression sĂ©quentielle dans l'outil zli. Le dĂ©veloppement du codec se poursuit : un ensemble de fonctionnalitĂ©s est en cours d'expansion et des amĂ©liorations de performances dans le traitement des petites entrĂ©es sont en cours. À ce jour, il prend en charge une fonctionnalitĂ© Ă©quivalente Ă  celle de zstd niveau 1, avec une taille de fenĂȘtre de compression de 64 Ko.

OpenZL permet de repenser chaque Ă©tape du pipeline LZ afin d'augmenter la vitesse. Son architecture en graphe permet Ă©galement de combiner les Ă©tapes de codage d'entropie au lieu d'utiliser un seul pipeline qui convient Ă©galement Ă  tous les cas d'utilisation. Ensuite, plusieurs Ă©tapes peuvent ĂȘtre combinĂ©es en une seule opĂ©ration pour augmenter la vitesse de traitement. Cela permet Ă  OpenZL d'assurer une vitesse de compression 10 % supĂ©rieure et une vitesse de dĂ©compression 70 % plus Ă©levĂ©e par rapport Ă  Zstandard de niveau 1 sur la base Silesia dans nos tests:

CompresseurTaux de compressionVitesse de compressionVitesse de décompression
OpenZL LZ niveau 12.74466 Mo/s2288 Mo/s
Zstd niveau 1 avec taille de fenĂȘtre de 64 Ko2.74419 Mo/s1254 Mo/s
Zstd niveau 12.89424 Mo/s1345 Mo/s

Prise en charge de trÚs grandes entrées

zli prend dĂ©sormais en charge le traitement d'Ă©normes donnĂ©es d'entrĂ©e (de plusieurs gigaoctets). Avant la compression, ces donnĂ©es sont maintenant automatiquement divisĂ©es en segments de taille gĂ©rĂ©e (par dĂ©faut – environ 16 Mo), ce qui permet de limiter la mĂ©moire utilisĂ©e, d'amĂ©liorer la localitĂ© des donnĂ©es et ouvre des possibilitĂ©s de traitement parallĂšle. Une fonction similaire de fragmentation automatique est implĂ©mentĂ©e dans SDDL2 lors de travaux basĂ©s sur un schĂ©ma. De nouveaux segmentateurs ont Ă©tĂ© créés ou mis Ă  jour – pour CSV, Parquet et donnĂ©es numĂ©riques standard – et tous les segmentateurs sont maintenant sĂ©rialisables et configurables, de sorte que la configuration choisie peut ĂȘtre enregistrĂ©e dans le compresseur et rĂ©utilisĂ©e ultĂ©rieurement.

Cela s'applique de maniÚre transparente lors de la compression. Notez que le pipeline d'apprentissage est différent et reste inchangé, il n'est donc pas destiné à recevoir de gigantesques données d'entrée comme matériel d'apprentissage.

Améliorations dans le visualiseur de graphe en ligne (essayer)
Le visualiseur reconnaßt désormais les tracés de compression et de décompression du début à la fin.

Le panneau de prĂ©visualisation du flux permet de visualiser les octets passant effectivement par chaque bord, et grĂące aux Ă©lĂ©ments de contrĂŽle de recadrage, mĂȘme les flux volumineux restent faciles Ă  manipuler.

Le panneau de configuration regroupe tous les paramĂštres d'affichage au mĂȘme endroit, et l'ensemble complet de touches de raccourci – navigation dans les directions, itĂ©ration ordonnĂ©e, dĂ©ploiement et repli, sĂ©lection des nƓuds – permet d'utiliser l'outil sans souris de maniĂšre conviviale.

Les traces ont maintenant des versions, la compression par blocs est affichĂ©e correctement, et zli peut enfin gĂ©nĂ©rer ses propres traces avec les nouvelles options —trace et —trace-streams-dir.

Divers

  • Plusieurs codecs ont Ă©tĂ© ajoutĂ©s au rĂ©pertoire. Les codecs Partition et bitpack utilisent dĂ©sormais un dĂ©codeur combinĂ©. Le codec Floating-point bitsplit dispose d'encodeurs et de dĂ©codeurs spĂ©cifiques pour les formats fp16, fp32, fp64 et bf16 avec des accĂ©lĂ©rations spĂ©cialisĂ©es. Des fonctionnalitĂ©s de division en tenant compte de la plage (split_byrange), un multiplexeur de longueur, un codec sentinel, un graphique lz4 et de petites fonctions auxiliaires comme tryParseInt et splitByParam ont Ă©tĂ© ajoutĂ©s.
  • L'API a Ă©tĂ© ordonnĂ©e.
  • Le test de fuzzing a Ă©tĂ© amĂ©liorĂ©.
  • Le processus de construction et d'emballage a Ă©tĂ© optimisĂ© pour un plus grand nombre de plateformes.

Source : linux.org.ru

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster