OpenZL 0.2.0

OpenZL 0.2.0 OpenZL 0.2.0

Efter syv måneders udvikling er version 0.2.0 af rammeværket blevet udgivet. OpenZL, designet til at oprette tabsfrie datakompressorer.

Rammeværket består af et grundlæggende bibliotek og værktøjer til at skabe specialiserede kompressorer, beskrevet på sproget SDDL.
For at skabe en god specialiseret kompressor er der to trin:

  1. Dataanalyse for at udtrække strukturen.
  2. Brug af gode backend-kompressorer, der anvender den opnåede struktur for at opnå god kompression.

OpenZL leverer værktøjer til begge trin.

Projektet er skrevet i C og C++ og distribueres under BSD-licensen.

Vigtige ændringer

SDDL2

SDDL er blevet fuldstændig omarbejdet fra bunden for at opnå de fastlagte designmål. Mens den oprindelige demo-version var et forsimplet runtime-miljø, er SDDL2 en fuldgyldig compiler: parseren overfører data til semantisk analysator, som derefter sender et typet abstrakt syntakstræ (AST) til optimereren, og optimereren styrer kodegeneratoren, som genererer bytekode til den virtuelle maskine.

Det nøglemæssige resultat er øjeblikkelig syntaktisk analyse. Når placeringen af en post helt kan bestemmes ud fra parametre og konstanter, springer motoren direkte til et hvilket som helst felt uden at scanne de foregående bytes, hvilket sikrer adgang uden kopiering og en gennemløbshastighed på flere GB/s.

Selve sproget har udviklet sig sammen med værktøjsættet. Nu understøtter det blokke når til betingede placeringer, parametriske og anonyme poster, adgang til medlemsfelter i poster, samt bitvise og logiske operatorer.

Med hensyn til udviklerens bekvemmelighed afdækker det semantiske analyse trin nu uafklarede referencer, typeforskelle og arity-fejl under kompilering – med angivelse af placeringen i kildekoden – og der er også udgivet en VS Code-udvidelse til syntaksfremhævning af .sddl-filer.

Den nye indbyggede codec LZ

I OpenZL er der nu inkluderet en egen LZ-codec, præsenteret som ZL_GRAPH_LZ, samt en profil for sekventiel kompression i værktøjet zli. Arbejdet med codec'en fortsætter: der udvides funktionaliteten, og ydeevnen ved behandling af små inputdata forbedres. På nuværende tidspunkt understøtter den funktionalitet, der svarer til zstd niveau 1, med en kompressionsvindue størrelse på 64 KB.

OpenZL giver mulighed for at redesignere hvert trin i LZ-pipelines for at øge hastigheden. Dets grafbaserede arkitektur muliggør også kombination af trin for entropikodning i stedet for at anvende en enkelt pipeline, der passer til alle brugsscenarier. Derefter kan flere trin kombineres til en enkelt operation for at forbedre behandlingshastigheden. Dette gør det muligt for OpenZL at opnå en 10% højere kompressionshastighed og en 70% højere dekompressionshastighed sammenlignet med Zstandard niveau 1 på Silesia-korpus. i vores tests:

KompressorKompressionsforholdKompressionshastighedDekompressionshastighed
OpenZL LZ niveau 12.74466 MB/s2288 MB/s
Zstd niveau 1 med 64K vinduesstørrelse2.74419 MB/s1254 MB/s
Zstd niveau 12.89424 MB/s1345 MB/s

Support til meget store inputdata

zli understøtter nu behandling af enorme inputdata (på flere gigabyte). Inden kompressionen opdeles sådanne data nu automatisk i håndterbare fragmenter (som standard omkring 16 MB), hvilket hjælper med at begrænse den anvendte hukommelse, forbedre datalokalitet og åbner mulighed for parallel behandling. I SDDL2 er der implementeret en lignende funktion for automatisk fragmentering ved arbejde i skema. Nye segmentatorer er blevet oprettet eller opdateret – til CSV, Parquet og standard numeriske data – og alle segmentatorer er nu serialiserbare og konfigurerbare, så den valgte layout kan gemmes i kompressoren og genbruges senere.

Dette anvendes transparent under kompressionen. Bemærk, at læringspipeline'en er forskellig og forbliver uændret, så den ikke er beregnet til at modtage gigantiske inputdata som træningsmateriale.

Forbedringer i online graf visualiseringsværktøjet (prøv)
Nu genkender visualiseringsværktøjet kompressions- og dekompressionsspor fra start til slut.

Forhåndsvisningspanelet giver mulighed for at se de bytes, der faktisk passerer gennem hver kant, og takket være trims kontrollene er selv store streams nemme at arbejde med.

Indstillingspanelet samler alle visningsmuligheder ét sted, og det komplette sæt af genvejetaster muliggør navigation, systematisk gennemgang, udrulning og foldning samt valg af noder, hvilket gør det nemt at arbejde med værktøjet uden mus.

Nu har spor versioner, komprimering med blokopdeling vises korrekt, og zli kan endelig generere sine egne spor ved hjælp af de nye flag —trace og —trace-streams-dir.

Diverse

  • Flere codecs er tilføjet til kataloget. Codec'erne Partition og bitpack bruger nu en samlet dekoder. Codec'en Floating-point bitsplit har fået specialiserede kodere og dekodere til formaterne fp16, fp32, fp64 og bf16 med specialiserede accelerationer. Tilføjet er opdeling med rækkevidde (split_byrange), længdemultiplexer, codec sentinel, graf lz4 og nogle små hjælpefunktioner som tryParseInt og splitByParam.
  • API'en er blevet ordnet.
  • Fuzzing-testning er blevet forbedret.
  • Bygge- og pakkeprocessen er blevet forbedret for flere platforme.

Kilde: linux.org.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster