OpenZL 0.2.0

OpenZL 0.2.0 OpenZL 0.2.0

Po siedmich mesiacoch vývoja bol uvoľnený framework 0.2.0 OpenZL, určený na vytváranie bezstratových kompresorov dát.

Framework sa skladá z základnej knižnice a nástrojov na vytváranie špecializovaných kompresorov, popísaných v jazyku SDDL.
Na vytvorenie dobrého špecializovaného kompresora sú potrebné dva kroky:

  1. Analýza údajov na získanie štruktúry.
  2. Použitie kvalitných backend kompresorov, ktoré využívajú získanú štruktúru na dosiahnutie kvalitného kompresie.

OpenZL poskytuje nástroje pre oba kroky.

Projekt je napísaný v jazykoch C a C++ a je distribuovaný pod licenciou BSD.

Hlavné zmeny

SDDL2

SDDL bol kompletne prepracovaný od základov na dosiahnutie stanovených projektových cieľov. Kým pôvodná demo verzia bola zjednodušeným prostredím, DDL2 predstavuje plnohodnotný kompilátor: syntaktický analyzátor odovzdáva dáta sémantickému analyzátoru, ktorý naopak posúva typizovaný abstraktný syntaktický strom (AST) optimalizátorovi, a ten riadi generátor kódu, ktorý generuje bajtový kód pre virtuálny stroj.

Kľúčovým výsledkom je okamžitá syntaktická analýza. Keď je umiestnenie záznamu možné úplne určiť iba z parametrov a konštánt, engine prechádza priamo k akémukoľvek poľu, bez skenovania predchádzajúcich bajtov, čím sa zabezpečuje prístup bez kopírovania a priepustnosť niekoľko GB/s.

Samotný jazyk sa vyvíjal spolu so sadou nástrojov. Teraz podporuje bloky when pre podmienené umiestnenia, parametrové a anonymné záznamy, prístup k členom polí záznamov, ako aj bitové a logické operátory.

Pokiaľ ide o pohodlie vývojára, fáza sémantickej analýzy teraz odhaľuje nejednoznačné odkazy, nezrovnalosti typov a chyby arity počas fázy kompilácie - so указанием umiestnenia v zdrojovom kóde - a tiež bolo vydané rozšírenie pre VS Code na syntaxovanie súborov .sddl.

Nový zabudovaný kodek LZ

V OpenZL je teraz zahrnutý vlastný LZ-kodek, predstavený vo forme ZL_GRAPH_LZ, ako aj profil sekvenčnej kompresie v utilite zli. Práca na kodeku pokračuje: prebieha rozširovanie súboru funkcií a zvyšovanie výkonu pri spracovaní malých vstupných údajov. V súčasnosti podporuje funkčnosť ekvivalentnú zstd úrovne 1, s veľkosťou kompresného okna 64 kB.

OpenZL umožňuje preprojektovať každý krok potrubia LZ s cieľom zvýšiť rýchlosť. Jeho grafová architektúra tiež umožňuje kombinovať fázy entropného kódovania, namiesto toho, aby sa používalo jednotné potrubie, ktoré je rovnako dobré pre všetky scenáre použitia. Potom je možné kombinovať niekoľko krokov do jednej operácie pre zvýšenie rýchlosti spracovania. To umožňuje OpenZL dosiahnuť o 10 % vyššiu rýchlosť kompresie a o 70 % vyššiu rýchlosť dekompresie v porovnaní so Zstandard úrovne 1 na skriniach Silesia v našich testoch:

KompresorKompresný pomerRýchlosť kompresieRýchlosť dekompresie
OpenZL LZ úroveň 12.74466 MB/s2288 MB/s
Zstd úroveň 1 s veľkosťou okna 64K2.74419 MB/s1254 MB/s
Zstd úroveň 12.89424 MB/s1345 MB/s

Podpora veľmi veľkých vstupných údajov

zli teraz podporuje spracovanie obrovských vstupných údajov (s objemom niekoľkých gigabajtov). Pred kompresiou sa tieto údaje teraz automaticky rozdeľujú na riadne veľké fragmenty (predvolene – približne 16 MB), čo umožňuje obmedziť objem použitej pamäte, zvýšiť lokalitu údajov a otvára možnosti pre paralelné spracovanie. Vo SDDL2 je implementovaná podobná funkcia automatického fragmentovania pri práci na schéme. V procese boli vytvorené alebo aktualizované nové segmentátory – pre CSV, Parquet a štandardné číselné údaje – a všetky segmentátory sú teraz serializovateľné a nastaviteľné, takže vybrané rozloženie môže byť uložené v kompresore a neskôr znovu použité.

Toto sa transparentne aplikuje počas kompresie. Upozorňujeme, že potrubie učenia je odlišné a zostáva nedotknuté, preto nie je určené na prijímanie obrovských vstupných údajov ako učebného materiálu.

Zlepšenia v online vizualizátore grafu (vyskúšať)
Teraz vizualizátor rozpoznáva stopy kompresie a dekompresie od začiatku do konca.

Panel na náhľad toku umožňuje prezerať bajty, ktoré skutočne prechádzajú každým okrajom, a vďaka prvkom na orezávanie aj veľké toky zostávajú jednoduché na prácu.

Nastavenia panelu kombinujú všetky možnosti zobrazenia na jednom mieste a plný súbor klávesových skratiek - navigácia smermi, usporiadané prehľadávanie, rozbaľovanie a zmršťovanie, výber uzlov - umožňuje pohodlné ovládanie nástroja bez myši.

Teraz majú trasovania verzie, kompresia s rozdelením na bloky sa zobrazuje správne a zli konečne dokáže generovať vlastné trasovania pomocou nových vlajok —trace a —trace-streams-dir.

Rôzne

  • Do katalógu bolo pridaných niekoľko kodekov. Kodeky Partition a bitpack teraz používajú kombinovaný dekodér. Kodek Floating-point bitsplit získal špeciálne kódovače a dekodéry pre formáty fp16, fp32, fp64 a bf16 so špecializovanými urýchleniami. Pridané je delenie s ohľadom na rozsah (split_byrange), multiplexor dĺžky, kodek sentinel, graf lz4 a niektoré malé pomocné funkcie, ako tryParseInt a splitByParam.
  • API bolo usporiadané.
  • Zlepšené fuzzingové testovanie.
  • Vylepšený proces kompilácie a balenia pre väčší počet platforiem.

Zdroj: linux.org.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster