OpenZL 0.2.0

OpenZL 0.2.0 OpenZL 0.2.0

Pärast seitsmekuulist arendust avaldati raamistiku versioon 0.2.0. OpenZL, mis on loodud kadudeta andmekompressorite loomiseks.

Raamistik koosneb baasteegist ja tööriistadest spetsiaalsete kompressorite loomiseks, mida on kirjeldatud keeles SDDL.
Hea spetsiaalse kompressori loomiseks on kaks sammu:

  1. Andmete analüüs struktuuri eraldamiseks.
  2. Kasutades häid taustakompressoreid, mis kasutavad ära saadud struktuuri hea tihendamise saavutamiseks.

OpenZL pakub tööriistu mõlema etapi jaoks.

Projekt on kirjutatud C ja C++ keeles ning levitatakse BSD litsentsi alusel.

Suured muudatused

SDDL2

SDDL kirjutati algsete eesmärkide saavutamiseks täielikult ümber. Kui algne demoversioon oli lihtsustatud käituskeskkond, siis SDDL2 on täieõiguslik kompilaator: parser edastab andmed semantilisele analüsaatorile, mis omakorda edastab tüüpitud abstraktse süntaksipuu (AST) optimeerijale, ning optimeerija juhib koodigeneraatorit, mis genereerib virtuaalmasina baitkoodi.

Peamine tulemus on kohene parsimine. Kui kirje asukohta saab täielikult kindlaks määrata ainult parameetrite ja konstantide abil, hüppab mootor otse mis tahes väljale ilma eelnevaid baite skannimata, võimaldades koopiavaba juurdepääsu ja mitme GB/s läbilaskevõimet.

Keel ise on arenenud koos oma tööriistakomplektiga. Nüüd toetab see tingimuslausete, parameetritega ja anonüümsete kirjete, kirjevälja liikmetele juurdepääsu ning bitipõhiste ja loogiliste operaatorite when-klausleid.

Arendaja poolelt tuvastab semantilise analüüsi samm nüüd määratlemata viited, tüübi mittevastavused ja ariteedivead kompileerimise ajal – koos lähtekoodi asukohaga –, mitte käitusajal, ning välja on antud VS Code'i laiendus .sddl-failide süntaksi esiletõstmiseks.

Uus sisseehitatud LZ-koodek

OpenZL sisaldab nüüd oma LZ-koodekit, mida esindab ZL_GRAPH_LZ, ning zli utiliidis järjestikust tihendusprofiili. Töö koodeki kallal jätkub, laiendades selle funktsioonide valikut ja parandades jõudlust väikeste sisendandmete töötlemisel. Praegu toetab see zstd 1. tasemega samaväärset funktsionaalsust 64 KB tihendusaknaga.

OpenZL võimaldab LZ-torustiku iga etappi kiiruse suurendamiseks ümber kujundada. Selle graafiarhitektuur võimaldab ka entroopia kodeerimise etappe kombineerida, selle asemel et kasutada ühte torustikku, mis sobib võrdselt hästi kõikideks kasutusjuhtudeks. Seejärel saab mitu etappi ühendada üheks operatsiooniks, et parandada töötlemiskiirust. See võimaldab OpenZL-il saavutada 10% kiiremat tihendamist ja 70% kiiremat lahtipakkimist võrreldes Silesia korpuse Zstandardi 1. tasemega. meie testid:

KompressorTihendussuheTihenduskiirusDekompressioonikiirus
OpenZL LZ 1. tase2.74466 MB / s2288 MB / s
Zstd 1. tase 64K akna suurusega2.74419 MB / s1254 MB / s
Zstd 1. tase2.89424 MB / s1345 MB / s

Toetus väga suurtele sisendandmetele

zli toetab nüüd tohutute sisendandmete (mitu gigabaiti suurused) töötlemist. Enne tihendamist jagatakse sellised andmed nüüd automaatselt hallatava suurusega tükkideks (vaikimisi umbes 16 MB), piirates mälukasutust, parandades andmete lokaalsust ja võimaldades paralleelset töötlemist. SDDL2 rakendab skeemidega töötamisel sarnast automaatset tükkideks jagamise funktsiooni. Protsessi käigus loodi või värskendati uusi segmenteerijaid – CSV, Parquet ja standardsete numbriliste andmete jaoks – ning kõik segmenteerijad on nüüd serialiseeritavad ja konfigureeritavad, nii et valitud paigutust saab tihendajasse salvestada ja hiljem uuesti kasutada.

Seda rakendatakse tihendamise ajal läbipaistvalt. Pane tähele, et treeningkanal on erinev ja jääb muutumatuks, seega ei ole see loodud hiiglaslike sisendandmete treeningmaterjalina vastuvõtmiseks.

Täiustused veebipõhises graafiku visualiseerijas (proovida)
Visualiseerija tunneb nüüd ära tihendus- ja dekompressioonijäljed algusest lõpuni.

Voo eelvaate paneel võimaldab näha iga serva ääres tegelikult voolavaid baite ja kärpimisnupud muudavad isegi suurte voogudega töötamise lihtsaks.

Seadistuspaneel koondab kõik kuvamisvalikud ühte kohta ja täielik kiirklahvide komplekt – suunatud navigeerimine, järjestatud läbimine, laiendamine ja kokkupakkimine ning sõlmede valimine – võimaldab teil tööriistaga mugavalt ilma hiireta töötada.

Jäljed on nüüd versioonitud, plokkidel põhinev tihendamine kuvatakse õigesti ja zli saab lõpuks ise jälgi genereerida uute --trace ja --trace-streams-dir lippude abil.

Varia

  • Kataloogi on lisatud mitu koodekit. Partitioni ja bitpacki koodekid kasutavad nüüd ühtset dekoodrit. Ujukomaarvudega bitsplit-koodek sisaldab nüüd spetsiaalseid kodeerijaid ja dekoodreid fp16, fp32, fp64 ja bf16 vormingutele koos spetsiaalse kiirendusega. Lisatud on vahemikuteadlik jagamine (split_byrange), pikkuse multiplekser, sentinel-koodek, lz4-graaf ja väiksemad abifunktsioonid nagu tryParseInt ja splitByParam.
  • API-t on lihtsustatud.
  • Täiustatud hägusustestimine.
  • Täiustatud ehitus- ja pakkimisprotsess rohkemate platvormide jaoks.

Allikas: linux.org.ru