OpenZL 0.2.0

OpenZL 0.2.0 OpenZL 0.2.0

Na zeven maanden ontwikkeling is versie 0.2.0 van het framework uitgebracht OpenZL, bedoeld voor het maken van verliesvrije datacompressors.

Het framework bestaat uit een basisbibliotheek en tools voor het maken van gespecialiseerde compressors, beschreven in de taal SDDL.
Om een goede gespecialiseerde compressor te maken, zijn er twee stappen:

  1. Data-analyse voor het extraheren van structuren.
  2. Het gebruik van goede backend-compressors, die de verkregen structuur gebruiken voor een goede compressie.

OpenZL biedt tools voor beide stappen.

Het project is geschreven in de talen C en C++ en wordt verspreid onder de BSD-licentie.

Belangrijkste wijzigingen

SDDL2

SDDL is volledig herontworpen vanaf nul om de ontwerpdoelen te bereiken. Terwijl de oorspronkelijke demo een vereenvoudigde runtime was, is SDDL2 een volwaardige compiler: de parser geeft de gegevens door aan de semantische analyzer, die op zijn beurt een getypeerde abstracte syntaxisboom (AST) aan de optimizer doorgeeft, en de optimizer beheert de codegenerator die bytecode genereert voor de virtuele machine.

Een belangrijk resultaat is onmiddellijke syntactische analyse. Wanneer de locatie van een record alleen volledig kan worden bepaald op basis van parameters en constanten, kan de engine direct naar elk veld gaan zonder voorafgaande bytes te scannen, wat on-copy toegang en doorvoersnelheden van meerdere GB/s biedt.

De taal zelf is mee geƫvolueerd met de set tools. Nu ondersteunt het when-blokken voor voorwaardelijke locaties, geparametriseerde en anonieme records, toegang tot veldleden van records, alsook bitwise en logische operatoren.

Wat betreft de ontwikkelaarservaring, de semantische analyse stappen ontdekken nu ongedefinieerde referenties, type-inconsistenties en ariteit-fouten tijdens de compilatiefase – met vermelding van locaties in de broncode – en niet tijdens runtime, en er is een VS Code-extensie uitgebracht voor syntaxis-kleuring van .sddl-bestanden.

Nieuwe ingebouwde codec LZ

In OpenZL is nu de eigen LZ-codec opgenomen, gepresenteerd als ZL_GRAPH_LZ, evenals een profiel voor sequentiƫle compressie in de zli-tool. Het werk aan de codec gaat door: er wordt gewerkt aan het uitbreiden van de functionaliteit en het verbeteren van de prestaties bij het verwerken van kleine invoergegevens. Tot nu toe ondersteunt het functionaliteit die gelijkwaardig is aan zstd niveau 1, met een compressies venstergrootte van 64 KB.

OpenZL biedt de mogelijkheid om elke fase van de LZ-pijplijn opnieuw te ontwerpen om de snelheid te verhogen. De grafische architectuur maakt ook het combineren van entropiecoderingstappen mogelijk, in plaats van een enkele pijplijn te gebruiken die voor alle gebruiksscenario's even goed geschikt is. Meerdere stappen kunnen vervolgens in ƩƩn bewerking worden samengevoegd voor een snellere verwerking. Dit stelt OpenZL in staat om 10% hogere compressiesnelheid en 70% hogere decompressiesnelheid te bieden in vergelijking met Zstandard niveau 1 op de Silesia-korpus in onze tests:

CompressorCompressieverhoudingCompressiesnelheidDecompressiesnelheid
OpenZL LZ niveau 12.74466 MB/s2288 MB/s
Zstd niveau 1 met 64K venstergrootte2.74419 MB/s1254 MB/s
Zstd niveau 12.89424 MB/s1345 MB/s

Ondersteuning voor zeer grote invoergegevens

zli ondersteunt nu de verwerking van enorme invoergegevens (van enkele gigabytes). Voor compressie worden dergelijke gegevens nu automatisch opgedeeld in beheersbare fragmenten (standaard – ongeveer 16 MB), wat helpt om het geheugengebruik te beperken, de gegevenslokaliteit te verhogen en mogelijkheden voor parallelle verwerking opent. In SDDL2 is een soortgelijke functie voor automatische fragmentatie geĆÆmplementeerd bij gebruik van de schemamen. Tijdens dit proces zijn nieuwe of bijgewerkte segmentators gemaakt – voor CSV, Parquet en standaard numerieke gegevens – en alle segmentators zijn nu serializeerbaar en configureerbaar, zodat de gekozen indeling kan worden opgeslagen in de compressor en later opnieuw kan worden gebruikt.

Dit wordt transparant toegepast tijdens de compressie. Let op, de leerpijplijn is anders en blijft onaangeroerd, dus deze is niet bedoeld voor het ontvangen van gigantische invoergegevens als leermateriaal.

Verbeteringen in de online grafvisualisator (proberen)
De visualisator herkent nu compressie- en decompressietrails van begin tot eind.

De voorvertoningspaneel van de stream maakt het mogelijk om de bytes te bekijken die daadwerkelijk door elke rand gaan, en dankzij de snij-instellingen blijven zelfs grote streams gemakkelijk te hanteren.

Het instellingenpaneel bundelt alle weergave-instellingen op ƩƩn plek, en de volledige set sneltoetsen – navigatie in richtingen, geordende doorgangen, uitvouwen en samenvouwen, en het selecteren van knooppunten – maakt het mogelijk om handig met de tool te werken zonder muis.

Nu hebben traceringen versies, blokgecomprimeerde gegevens worden correct weergegeven, en zli kan eindelijk zijn eigen traceringen genereren met de nieuwe vlaggen —trace en —trace-streams-dir.

Diversen

  • Er zijn verschillende codecs aan de catalogus toegevoegd. De partition- en bitpack-codecs maken nu gebruik van een gecombineerde decoder. De floating-point bitsplit-codec heeft speciale encoders en decoders voor de formaten fp16, fp32, fp64 en bf16 met gespecialiseerde versnellingen. Range-opdeling (split_byrange), een lengte-multiplexer, de sentinel-codec, lz4-grafieken en enkele kleine hulpfuncties, zoals tryParseInt en splitByParam, zijn toegevoegd.
  • API is geordend.
  • Fuzzing-testen zijn verbeterd.
  • Het bouw- en verpakkingsproces is verbeterd voor meer platforms.

Bron: linux.org.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster