OpenZL 0.2.0

OpenZL 0.2.0 OpenZL 0.2.0

Nakon sedam mjeseci razvoja, objavljena je verzija 0.2.0 frameworka OpenZL, namijenjenog za izradu besplatnih kompresora podataka.

Framework se sastoji od osnovne biblioteke i alata za izradu specijaliziranih kompresora, opisanih na jeziku SDDL.
Kako bi se stvorio dobar specijalizirani kompresor, postoje dva koraka:

  1. Analiza podataka radi izvlačenja strukture.
  2. Korištenje dobrih backend kompresora koji koriste dobivenu strukturu za postizanje dobre kompresije.

OpenZL pruža alate za oba koraka.

Projekt je napisan na jezicima C i C++ i distribuira se pod BSD licencom.

Glavne promjene

SDDL2

SDDL je potpuno redizajniran od temelja kako bi se postigli postavljeni dizajnerski ciljevi. Dok je prvotna demo verzija predstavljala pojednostavljeno izvođenje, SDDL2 je potpuni kompajler: parser predaje podatke semantičkom analizatoru, koji dalje predaje tipizirano apstraktno sintaktičko stablo (AST) optimizatoru, a optimizator upravlja generatorom koda koji generira bytecode virtualne mašine.

Ključni rezultat je trenutna sintaktička analiza. Kada se lokacija zapisa može potpuno odrediti samo parametrima i konstantama, engine prelazi izravno na bilo koje polje, ne skenirajući prethodne bajtove, što omogućava pristup bez kopiranja i propusnost od nekoliko GB/s.

Sam jezik se razvijao zajedno s alatima. Sada podržava when blokove za uvjetne lokacije, parametrizirane i anonimne zapise, pristup članovima polja zapisa, kao i bitovne i logičke operatore.

Što se tiče pogodnosti za programere, faza semantičke analize sada otkriva neodređene reference, nesukladnosti tipova i pogreške u arnosti tijekom kompajlacije – s navođenjem lokacije u izvornoj šifri – a također je objavljeno proširenje za VS Code za isticanje sintakse .sddl datoteka.

Novi ugrađeni codec LZ

U OpenZL sada je uključen vlastiti LZ kodek, predstavljen kao ZL_GRAPH_LZ, kao i profil sekvencijalne kompresije u alatu zli. Rad na kodeku se nastavlja: širi se skup funkcija i poboljšava performanse prilikom obrade malih ulaznih podataka. Trenutno podržava funkcionalnost koja je ekvivalentna zstd razini 1, s veličinom prozora kompresije od 64 KB.

OpenZL omogućuje replaniranje svake faze LZ kanala s ciljem povećanja brzine. Njegova grafička arhitektura također omogućava kombiniranje faza entropijskog kodiranja umjesto korištenja jedinstvenog kanala koji se jednako dobro prilagođava svim scenarijima korištenja. Tako se više faza može kombinirati u jednu operaciju za povećanje brzine obrade. To omogućuje OpenZL da osigura 10% veću brzinu kompresije i 70% veću brzinu dekompresije u usporedbi sa Zstandard razinom 1 na Silesia skupu u našim testovima:

KompressorOmjer kompresijeBrzina kompresijeBrzina dekompresije
OpenZL LZ razina 12.74466 MB/s2288 MB/s
Zstd razina 1 s veličinom prozora 64K2.74419 MB/s1254 MB/s
Zstd razina 12.89424 MB/s1345 MB/s

Podrška za vrlo velike ulazne podatke

zli sada podržava obradu ogromnih ulaznih podataka (u nekoliko gigabajta). Prije kompresije, takvi se podaci automatski dijele na upravljane dijelove (po defaultu – otprilike 16MB), što omogućuje ograničavanje količine korištene memorije, povećava lokalnost podataka i otvara mogućnosti za paralelnu obradu. U SDDL2 je implementirana slična funkcija automatskog dijeljenja prilikom rada po shemi. U procesu su stvoreni ili ažurirani novi segmentatori – za CSV, Parquet i standardne numeričke podatke – i svi segmentatori su sada serijalizibilni i prilagodljivi, tako da se odabrana kompozicija može sačuvati u kompressor i ponovno koristiti kasnije.

To se bez problema primjenjuje tijekom kompresije. Imajte na umu da se kanal učenja razlikuje i ostaje netaknut, stoga nije namijenjen za prihvaćanje gigantskih ulaznih podataka kao materijala za učenje.

Poboljšanja u online vizualizatoru grafa (isprobati)
Sada vizualizator prepoznaje tragove kompresije i dekompresije od početka do kraja.

Panel za pregled protoka omogućuje pregled bajtova koji zapravo prolaze kroz svaki rub, a zahvaljujući kontrolama obrezivanja čak i veliki protoci ostaju jednostavni za rad.

Panel postavki okuplja sve opcije prikaza na jednom mjestu, a potpuni set prečaca omogućava lako navigaciju po smjerovima, pravilno prolazenje, proširenje i sažimanje, kao i odabir čvorova, što omogućava jednostavno korištenje alata bez miša.

Sada trake imaju verzije, a kompresija sa dijeljenjem na blokove se ispravno prikazuje, a zli konačno može generirati vlastite trake pomoću novih oznaka —trace i —trace-streams-dir.

Razno

  • U direktorij je dodano nekoliko kodeka. Kodeci Partition i bitpack sada koriste objedinjeni dekoder. Kodek Floating-point bitsplit dobio je posebne enkodere i dekodere za formate fp16, fp32, fp64 i bf16 sa specijaliziranim ubrzanjima. Dodano je razdvajanje po rasponu (split_byrange), multiplexer duljine, kodek sentinel, graf lz4 te nekoliko malih pomoćnih funkcija poput tryParseInt i splitByParam.
  • API je organiziran.
  • Poboljšano je fuzzing testiranje.
  • Poboljšan je proces izgradnje i pakiranja za veći broj platformi.

Izvor: linux.org.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster