Po sedmih mesecih razvoja je bila izdana različica 0.2.0 ogrodja. OpenZL, zasnovan za ustvarjanje kompresorjev podatkov brez izgub.
Okvir je sestavljen iz osnovne knjižnice in orodij za ustvarjanje specializiranih kompresorjev, opisanih v jeziku SDDL.
Za izdelavo dobrega namenskega kompresorja sta potrebna dva koraka:
- Analiza podatkov za ekstrakcijo strukture.
- Uporaba dobrih kompresorjev v ozadju, ki izkoriščajo nastalo strukturo za doseganje dobre kompresije.
OpenZL ponuja orodja za obe fazi.
Projekt je napisan v programskih jezikih C in C++ ter se distribuira pod licenco BSD.
Večje spremembe
SDDL2
SDDL je bil v celoti prepisan, da bi dosegel svoje prvotne cilje zasnove. Medtem ko je bila prvotna demonstracija poenostavljeno izvajalno okolje, je SDDL2 polnopravni prevajalnik: razčlenjevalnik posreduje podatke semantičnemu analizatorju, ki nato optimizatorju posreduje tipizirano abstraktno sintaksno drevo (AST), optimizer pa nadzoruje generator kode, ki generira bajtno kodo virtualnega stroja.
Ključni rezultat je takojšnje razčlenjevanje. Ko je mogoče lokacijo zapisa v celoti določiti samo z uporabo parametrov in konstant, mehanizem skoči neposredno na katero koli polje brez skeniranja prejšnjih bajtov, kar omogoča dostop brez kopiranja in prepustnost več GB/s.
Sam jezik se je razvijal skupaj z naborom orodij. Zdaj podpira stavke when za pogojne stavke, parametrizirane in anonimne zapise, dostop do članov polj zapisov ter bitne in logične operatorje.
Na strani razvijalcev korak semantične analize zdaj prepozna nedefinirane reference, neujemanja tipov in napake arnosti med prevajanjem – z lokacijo izvorne kode – namesto med izvajanjem, izdana pa je bila tudi razširitev VS Code za označevanje sintakse datotek .sddl.
Nov vgrajeni LZ kodek
OpenZL zdaj vključuje lasten LZ kodek, predstavljen kot ZL_GRAPH_LZ, ter zaporedni profil stiskanja v pripomočku zli. Delo na kodeku še poteka, širi njegov nabor funkcij in izboljšuje zmogljivost pri obdelavi majhnih vhodnih podatkov. Trenutno podpira funkcionalnost, enakovredno zstd ravni 1, z oknom stiskanja velikosti 64 KB.
OpenZL omogoča preoblikovanje vsake stopnje LZ cevovoda za povečanje hitrosti. Njegova grafična arhitektura omogoča tudi kombiniranje stopenj entropijskega kodiranja, namesto uporabe enega samega cevovoda, ki je enako primeren za vse primere uporabe. Več stopenj je nato mogoče združiti v eno samo operacijo, da se izboljša hitrost obdelave. To OpenZL omogoča 10 % hitrejšo kompresijo in 70 % hitrejšo dekompresijo v primerjavi s standardom Z ravni 1 na korpusu Silesia. naši testi:
| Kompresor | Kompresijsko razmerje | Hitrost stiskanja | Hitrost dekompresije |
|---|---|---|---|
| OpenZL LZ raven 1 | 2.74 | 466 MB / s | 2288 MB / s |
| Zstd raven 1 z velikostjo okna 64K | 2.74 | 419 MB / s | 1254 MB / s |
| Zstd raven 1 | 2.89 | 424 MB / s | 1345 MB / s |
Podpora za zelo velike vhodne podatke
zli zdaj podpira obdelavo ogromnih vhodnih podatkov (velikosti nekaj gigabajtov). Pred stiskanjem se taki podatki zdaj samodejno razdelijo na obvladljivo velike kose (privzeto približno 16 MB), kar omejuje porabo pomnilnika, izboljšuje lokalnost podatkov in omogoča vzporedno obdelavo. SDDL2 izvaja podobno funkcijo samodejnega razdeljevanja na dele pri delu s shemo. Med postopkom so bili ustvarjeni ali posodobljeni novi segmentatorji – za CSV, Parquet in standardne numerične podatke – in vsi segmentatorji so zdaj serializirani in konfigurirani, tako da je mogoče izbrano postavitev shraniti v kompresorju in jo pozneje ponovno uporabiti.
To se med stiskanjem uporabi transparentno. Upoštevajte, da je učni cevovod drugačen in ostane nespremenjen, zato ni zasnovan za sprejemanje ogromnih vhodnih podatkov kot učnega gradiva.
Izboljšave spletnega vizualizatorja grafov (poskusiti)
Vizualizator zdaj prepozna sledi kompresije in dekompresije od začetka do konca.
Plošča za predogled toka vam omogoča, da vidite bajte, ki dejansko tečejo vzdolž vsakega roba, kontrole za obrezovanje pa omogočajo enostavno delo tudi z velikimi tokovi.
Nastavitvena plošča združuje vse možnosti prikaza na enem mestu, celoten nabor bližnjic – smerna navigacija, urejeno prečkanje, razširjanje in strnjevanje ter izbiranje vozlišč – pa vam omogoča priročno delo z orodjem brez miške.
Sledi so zdaj različicovane, blokovno stiskanje je pravilno prikazano in zli lahko končno ustvari lastne sledi z uporabo novih zastavic --trace in --trace-streams-dir.
Miscellanea
- V katalog je bilo dodanih več kodekov. Kodeka Partition in Bitpack zdaj uporabljata poenoten dekoder. Kodek s plavajočo vejico bitsplit zdaj vključuje namenske koderje in dekoderje za formate fp16, fp32, fp64 in bf16 s specializiranim pospeševanjem. Dodani so bili delitev glede na obseg (split_byrange), multiplekser dolžine, kodek sentinel, graf lz4 in manjše pomožne funkcije, kot sta tryParseInt in splitByParam.
- API je bil poenostavljen.
- Izboljšano testiranje fuzza.
- Izboljšan postopek gradnje in pakiranja za več platform.
Vir: linux.org.ru
