Pärast seitsme kuu arendustöö tehti välja 0.2.0 raamistik OpenZL, mis on mõeldud kaotusteta andmekompressorite loomiseks.
Raamistik koosneb põhikogumist ja tööriistadest spetsialiseeritud kompressorite loomiseks, mis on kirjeldatud keeles SDDL.
Hea spetsialiseeritud kompressori loomise protsess koosneb kahest etapist:
- Andmete analüüs struktuuri väljatõmbamiseks.
- Heade tagaplaanikompressorite kasutamine, mis kasutavad saadud struktuuri efektiivse tihenduse saavutamiseks.
OpenZL pakub tööriistu mõlema etapi jaoks.
Projekt on kirjutatud keeltes C ja C++ ning jagatakse BSD litsentsi alusel.
Peamised muudatused
SDDL2
SDDL on täielikult nullist ümber kirjutatud, et saavutada seadmaotsitud disainieesmärke. Kui algne demonstratsiooniversioon oli lihtsustatud täitmisvõimekus, siis SDDL2 on täieõiguslik kompilaator: süntaksianalüsaator edastab andmed semantilisele analüsaatorile, kes omakorda saadab tüübitud abstraktse süntaksipuu (AST) optimeerijale, ning optimeerija juhib koodigeneraatorit, mis genereerib virtuaalmasina byte-koodi.
Peamine tulemus on kohene süntaksianalüüs. Kui kirje asukoht on täielikult määratletav ainult parameetrite ja konstantide kaudu, suundub mootor otse igale väljal, skaneerimata eelnevaid baitide, mis tagab juurdepääsu ilma kopeerimise ja GB/s ülekandekiirus.
Ise keel on arenenud koos tööriistade kogumiga. Nüüd toetab see when-blokke tingimuslike asukohtade jaoks, parameetrilisi ja anonüümseid kirjeid, kirjeväljade liikmete juurdepääsu ning bititaseme ja loogilisi operaatorit.
Arendaja mugavuse osas tuvastab semantiline analüüsietapp nüüd ebamugavad viidatud, tüübiteadete esinemise ja arususvead kompileerimise ajal – märkides kohad algtekstis – mitte täitmise ajal, samuti on välja antud VS Code'i laiendus .sddl failide süntaksihighlighteri jaoks.
Uus sisseehitatud LZ koodek
OpenZL sisaldab nüüd oma LZ-koodekit, mis on esitatud ZL_GRAPH_LZ kujul, samuti järjestikuse kompressiooniprofiili utiliidis zli. Tööd koodeki kallal jätkuvad: tööriista funktsioonide komplekti laienemine ja jõudluse tõstmine väikeste sisendandmete töötlemisel. Praegu toetab see funktsionaalsust, mis vastab zstd tasemele 1, kompressiooniruuduga 64 KB.
OpenZL võimaldab ümber kujundada iga LZ konveieri etapi kiirema töö tempos. Selle graafiline arhitektuur võimaldab ka ühte etappi entropiakoodimist kombineerida, selle asemel et kasutada ühtset konveierit, mis sobib igasuguste kasutusstsenaariumide jaoks. Seejärel saab mitu etappi ühendada üheks operatsiooniks, et tõsta töötlemise kiirus. See võimaldab OpenZL-l saavutada 10% kiirema kompressioonikiiruse ja 70% kiirema dekompressioonikiiruse võrreldes Zstandard tasemega 1 Silesia korpusel. meie testides:
| Kompressor | Kompressioonisuhe | Kompressioonikiirus | Dekompresseerimise kiirus |
|---|---|---|---|
| OpenZL LZ tase 1 | 2.74 | 466 MB/s | 2288 MB/s |
| Zstd tase 1 64K akna suurusega | 2.74 | 419 MB/s | 1254 MB/s |
| Zstd tase 1 | 2.89 | 424 MB/s | 1345 MB/s |
Toetamine väga suurte sisendandmete jaoks
Zli toetab nüüd hiiglaslike sisendandmete (mitme gigabaidi suuruseid) töötlemist. Enne kompressiooni jagatakse sellised andmed nüüd automaatselt hallatava suurusega fragmentideks (vaikimisi umbes 16MB), mis aitab piirata mälu kasutamist, tõsta andmete kohalolekut ja avab võimalused paralleelseks töötlemiseks. SDDL2-s on rakendatud sarnane automaatse fragmentimise funktsioon skeemi töötlemisel. Protsessi käigus loodi või värskendati uusi segmentaatoreid – CSV, Parquet ja tavaliste numbriliste andmete jaoks – ning kõik segmentaatoreid on nüüd serialiseeritavad ja kohandatavad, nii et valitud paigutus saab salvestada kompressorisse ja hiljem uuesti kasutada.
See rakendatakse kompressiooni käigus transparantselt. Pange tähele, et koolituskonveier on erinev ning jääb muutumatuks, seega ei ole see mõeldud hiiglaslike sisendandmete saamiseks koolitusmaterjalidena.
Parandused veebivisualiseerija graafikusproovi)
Nüüd tuvastab visuaaliseerija kompressiooni ja dekompressiooni jälgi algusest lõpuni.
Voogesituspaneel võimaldab vaadata byte'e, mis tegelikult läbivad iga serva, ja lõikamise juhtnupud hoiavad isegi suured vood töötlemisvõimelisena.
Seadete paneel koondab kõik kuvamisvalikud ühte kohta ning täielik kiirklahvide komplekt – suundade navigeerimine, järjestikune läbimine, avamine ja kokkupanek, sõlmede valimine – võimaldab tööriista mugavalt kasutada ilma hiireta.
Nüüd on jälgimistest versioonid, plokkide jagamise tihendamine kuvatakse õigesti ning zli suudab lõpuks genereerida oma jälgimised uute lippudega —trace ja —trace-streams-dir.
Muud
- Katalooge on lisatud mitu kodeerijat. Kodeerijad Partition ja bitpack kasutavad nüüd ühtset dekoodrit. Kodeerija Vote-point bitsplit omab spetsiaalseid kodeerijaid ja dekoodreid fp16, fp32, fp64 ja bf16 formaatidele koos spetsialiseeritud kiirendustega. On lisatud vahemiku arvestav jagamine (split_byrange), pikkuse multiplexer, kodeerija sentinel, graaf lz4 ja väiksed abifunktsioonid, nagu tryParseInt ja splitByParam.
- API on korrastatud.
- Fuzztestimise on parandatud.
- Kogumise ja pakendamise protsess on paranenud suurema arvu platvormide jaoks.
Allikas: linux.org.ru
