OpenZL 0.2.0

OpenZL 0.2.0 OpenZL 0.2.0

Po septynių mėnesių kūrimo buvo išleista sistemos 0.2.0 versija. OpenZL, skirtas kurti duomenų kompresorius be nuostolių.

Sistemą sudaro bazinė biblioteka ir įrankiai, skirti kurti specializuotus kompresorius, aprašytus kalba. SDDL.
Gero kompresoriaus sukūrimas susideda iš dviejų žingsnių:

  1. Duomenų analizė struktūrai nustatyti.
  2. Naudojant gerus galinius kompresorius, kurie išnaudoja gautą struktūrą, kad būtų pasiektas geras suspaudimas.

„OpenZL“ teikia įrankius abiem etapams.

Projektas parašytas C ir C++ kalbomis ir platinamas pagal BSD licenciją.

Pagrindiniai pokyčiai

SDDL2

SDDL buvo visiškai perrašytas nuo nulio, kad būtų pasiekti pradiniai projektavimo tikslai. Nors pradinė demonstracinė versija buvo supaprastinta vykdymo aplinka, SDDL2 yra visavertis kompiliatorius: analizatorius perduoda duomenis semantiniam analizatoriui, kuris savo ruožtu perduoda tipizuotą abstrakčiosios sintaksės medį (AST) optimizavimo įrankiui, o optimizavimo įrankis valdo kodo generatorių, kuris generuoja virtualios mašinos baitinį kodą.

Pagrindinis rezultatas – momentinis analizavimas. Kai įrašo vietą galima visiškai nustatyti naudojant tik parametrus ir konstantas, variklis pereina tiesiai į bet kurį lauką neskenuodamas ankstesnių baitų, taip suteikdamas prieigą be kopijavimo ir kelių GB/s pralaidumą.

Pati kalba vystėsi kartu su savo įrankių rinkiniu. Dabar ji palaiko sąlyginių sakinių „when“ sakinius, parametrizuotus ir anoniminius įrašus, prieigą prie įrašų lauko narių bei bitinius ir loginius operatorius.

Kūrėjo pusėje semantinės analizės žingsnis dabar identifikuoja neapibrėžtas nuorodas, tipų neatitikimus ir arity klaidas kompiliavimo metu (nurodant šaltinio kodo vietą), o ne vykdymo metu, ir išleistas VS Code plėtinys, skirtas .sddl failų sintaksės paryškinimui.

Naujas integruotas LZ kodekas

„OpenZL“ dabar turi savo LZ kodeką, žymimą kaip ZL_GRAPH_LZ, taip pat nuoseklaus glaudinimo profilį „zli“ įrankyje. Darbas su kodeku tęsiasi, plečiamas jo funkcijų rinkinys ir gerinamas našumas apdorojant mažus įvesties duomenis. Šiuo metu jis palaiko funkcijas, lygiavertes „zstd“ 1 lygiui, su 64 KB glaudinimo langu.

„OpenZL“ leidžia perprojektuoti kiekvieną LZ konvejerio etapą, kad būtų užtikrintas greitis. Jo grafų architektūra taip pat leidžia derinti entropijos kodavimo etapus, užuot naudojant vieną konvejerį, kuris vienodai gerai tinka visiems naudojimo atvejams. Tada kelis etapus galima sujungti į vieną operaciją, siekiant pagerinti apdorojimo greitį. Tai leidžia „OpenZL“ pasiekti 10 % greitesnį glaudinimą ir 70 % greitesnį išskleidimą, palyginti su 1 lygio Zstandard Silesia korpuse. mūsų testai:

KompresoriusSuspaudimo koeficientasSuspaudimo greitisDekompresijos greitis
OpenZL LZ 1 lygis2.74466 MB / s2288 MB / s
Zstd 1 lygis su 64K lango dydžiu2.74419 MB / s1254 MB / s
Zstd 1 lygis2.89424 MB / s1345 MB / s

Palaikymas labai dideliems įvesties duomenims

„zli“ dabar palaiko didelių įvesties duomenų (kelių gigabaitų dydžio) apdorojimą. Prieš glaudinimą tokie duomenys dabar automatiškai padalijami į valdomo dydžio dalis (pagal numatytuosius nustatymus maždaug 16 MB), taip ribojant atminties naudojimą, gerinant duomenų lokalizaciją ir įgalinant lygiagretų apdorojimą. SDDL2 įdiegia panašią automatinio skaidymo į dalis funkciją dirbant su schemomis. Proceso metu buvo sukurti arba atnaujinti nauji segmentatoriai – CSV, „Parquet“ ir standartiniams skaitiniams duomenims – ir visi segmentatoriai dabar yra serializuojami ir konfigūruojami, todėl pasirinktą išdėstymą galima išsaugoti glaudinimo programoje ir pakartotinai naudoti vėliau.

Tai taikoma skaidriai glaudinimo metu. Atkreipkite dėmesį, kad mokymo srautas yra kitoks ir lieka nepakitęs, todėl jis nėra skirtas priimti milžiniškus įvesties duomenis kaip mokymo medžiagą.

Internetinio grafų vizualizavimo įrankio patobulinimai (bandyti)
Vizualizavimo priemonė dabar atpažįsta suspaudimo ir išspaudimo pėdsakus nuo pradžios iki pabaigos.

Srauto peržiūros skydelyje galite matyti baitus, tekančius išilgai kiekvieno krašto, o apkarpymo valdikliai leidžia lengvai dirbti net su dideliais srautais.

Nustatymų skydelyje visos rodymo parinktys yra vienoje vietoje, o visas sparčiųjų klavišų rinkinys – kryptinis naršymas, tvarkingas naršymas, išplėtimas ir sutraukimas bei mazgų pasirinkimas – leidžia patogiai dirbti su įrankiu be pelės.

Pėdsakai dabar yra versijuojami, blokais pagrįstas glaudinimas rodomas teisingai, o „zli“ pagaliau gali generuoti savo pėdsakus naudodama naujas „--trace“ ir „--trace-streams-dir“ vėliavėles.

įvairenybės

  • Į katalogą įtraukta keletas kodekų. „Partition“ ir „bitpack“ kodekai dabar naudoja suvienodintą dekoderį. Slankiojo kablelio „bitsplit“ kodekas dabar apima specialius kodavimo ir dekoderius fp16, fp32, fp64 ir bf16 formatams su specializuotu spartinimu. Pridėtas diapazoną įvertinantis skaidymas („split_byrange“), ilgio multipleksorius, „sentinel“ kodekas, lz4 grafikas ir nedidelės pagalbinės funkcijos, tokios kaip „tryParseInt“ ir „splitByParam“.
  • API buvo supaprastinta.
  • Patobulintas neryškumo testavimas.
  • Patobulintas kūrimo ir pakavimo procesas daugiau platformų.

Šaltinis: linux.org.ru