Pärast seitsme kuu arendust on välja antud OpenZL raamistik 0.2.0 OpenZL, mis on mõeldud kaotamatute andmekompressorite loomiseks.
Raamistik koosneb põhiteegist ja tööriistadest spetsialiseeritud kompressorite loomiseks, nagu on kirjeldatud keeles SDDL.
Hea spetsialiseeritud kompressorite loomine hõlmab kahte etappi:
- Andmete analüüs struktuuri väljavõtmiseks.
- Heade tagaplaneeritud kompressorite kasutamine, mis kasutavad saadud struktuuri hea tihendamise saavutamiseks.
OpenZL pakub tööriistu mõlema etapi jaoks.
Projekt on kirjutatud keeltes C ja C++ ning seda levitatakse BSD litsentsi alusel.
Olulised muudatused
SDDL2
SDDL on täielikult algusest peale ümber kujundatud, et saavutada ette nähtud disainieesmärgid. Kui algne demo versioon oli lihtsustatud täitmisprotsess, siis SDDL2 on täieõiguslik kompilaator: süntaksianalüsaator edastab andmed semantilisele analüsaatorile, kes edastab tüübidud abstraktse süntaksipuu (AST) optimeerijale, ja optimeerija juhib koodigeneraatorit, mis genereerib virtuaalmasina jaoks baitkode.
Peamine tulemus on kohene süntaksianalüüs. Kui kirje asukoht on täielikult määratletav ainult parameetrite ja konstantside põhjal, suundub mootor otse igale väljale, skaneerimata eelnevaid baite, mis tagab juurdepääsu ilma kopeerimiseta ja läbilaskevõimega mitme GB/s.
Keelega on kaasas käinud ka tööriistade komplekt. Nüüd toetab see tingimuslike asukohtade jaoks when-blokke, parameetrilisi ja anonüümseid kirjeid, juurdepääsu kirje väli liikmetele ning bititaseme ja loogilisi operaatoreid.
Arendaja mugavuse seisukohalt tuvastab semantilise analüüsi etapp nüüd määramatud viidatud, tüüpide vastavuse ja arusuurusega vead kompileerimise etapis – koos asukoha näitamisega lähtekoodis – mitte käitamisel, samuti on välja antud VS Code'i lisa .sddl failide süntaksihighlighting'uks.
Uus integreeritud LZ koodek
OpenZL-iga on nüüd integreeritud oma LZ-koodik, esindatud ZL_GRAPH_LZ kujul, samuti järjestikune tihendamisprofiil utiliidis zli. Koodiku kallal töötamine jätkub: laienevad funktsioonide komplekt ja jõudluse paranemine väikeste sisendandmete töötlemisel. Praeguseks toetab see funktsionaalsust, mis on võrdne zstd tasemega 1, tihendamisaken on 64 KB.
OpenZL võimaldab iga LZ konveieri etapi ümberkujundamist kiirusel. Selle graafiline arhitektuur võimaldab ka kombineerida entropiikoodimise etappe, selle asemel et kasutada ühtset konveierit, mis sobib kõigi kasutusstsenaariumide jaoks. Seejärel võivad mitmed etapid olla koondatud üheks opsiooniks töötlemise kiiruse suurendamiseks. See võimaldab OpenZL-il saavutada 10% kõrgemat tihendamise kiirus ja 70% kõrgemat dekompressimise kiirus võrreldes Zstandard tasemega 1 Silesia korpusel. meie testides:
| Tihendaja | Tihendustase | Tihendamise kiirus | 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 |
Toetatakse väga suuri sisendandmeid
zli toetab nüüd tohutute sissetulevate andmete töötlemist (mitme gigabaiti ulatuses). Enne tihendamist jagatakse sellised andmed automaatselt hallatava suurusega fragmentideks (vaikesätetena umbes 16MB), mis aitab piirata kasutatava mälu mahtu, suurendada andmete lokaalsust ja avab võimalused paralleelseks töötlemiseks. SDDL2-s on rakendatud sarnane automaatfraktsioneerimise funktsioon skeemi töötlemisel. Protsessi käigus loodi või värskendati uusi segmentaatorite – CSV, Parquet ja standardsete numbriliste andmete jaoks – ning kõik segmentaatorid on nüüd seeriatavad ja kohandatavad, võimaldades salvestada valitud paigutuse kompressorisse ja hiljem uuesti kasutada.
See rakendatakse sujuvalt tihendamise ajal. Pange tähele, et õppimiskett erineb ja jääb puutumatuks, seega ei ole see ette nähtud hiiglaslike sissetulevate andmete vastuvõtmiseks õppematerjalina.
Parandused veebigraafiku visualiseerijas (proovida)
Nüüd tuvastab visualiseerija tihendamise ja lahtipakkimise jäljed algusest lõpuni.
Voogefikse paneel võimaldab vaadata baite, mis tegelikult igas servas läbivad, ning lõikamise juhtnupud muudavad isegi suured vood mugavaks käsitsemiseks.
Seadete paneel koondab kõik kuvamisvalikud ühte kohta, samas kui täiskomplekt kiireklahve – suunamine, järjestikune läbimine, avamine ja sulgemine, sõlmede valimine – võimaldab tööriistaga mugavalt töötada ilma hiireta.
Nüüd on jälgimistooted versioonide kaupa, plokkide lõhustamine kuvatakse õigesti ja zli suudab lõpuks genereerida oma jälgimisi uute lipukestega —trace ja —trace-streams-dir.
Erinev
- Katalooge on lisatud mitmeid koodekeid. Koodekid Partition ja bitpack kasutavad nüüd ühise dekooderi. Koodek Floating-point bitsplit sai spetsiifilised kodeerijad ja dekooderid formaatide fp16, fp32, fp64 ja bf16 jaoks, millel on spetsialiseeritud kiirendused. Lisatud on vahemiku arvestav jagamine (split_byrange), pikkuse multiplexer, koodek sentinel, graaf lz4 ja väikesed abifunktsioonid, nagu tryParseInt ja splitByParam.
- API on korrastatud.
- Fuzztestingut on parendatud.
- Koostamis- ja pakkimisprotsess on parandatud suurema arvu platvormide jaoks.
Allikas: linux.org.ru
