Pas pas gjashtë muajsh zhvillimi, u publikua versioni 0.2.0 i framework-ut OpenZL, i destinuar për krijimin e kompresorëve të dhënash pa humbje.
Framework-u përbëhet nga një bibliotekë bazë dhe mjete për krijimin e kompresorëve të specializuar, të përshkruar në gjuhën SDDL.
Për të krijuar një kompresor të mirë të specializuar, ka dy etapa:
- Analiza e të dhënave për të nxjerrë strukturën.
- Përdorimi i kompresorëve të mirë backend që përdorin strukturën e marrë për të arritur kompresion të mirë.
OpenZL ofron mjete për të dy etapet.
Projekti është shkruar në gjuhët C dhe C++ dhe shpërndahet sipas licencës BSD.
Ndryshimet kryesore
SDDL2
SDDL është rikonstruktuar plotësisht nga zero për të arritur qëllimet e projektimit të caktuara. Nëse versioni fillestar demo ishte një mjedis ekzekutimi i thjeshtuar, SDDL2 është një kompilator i plotë: parser-i i sintaksës i kalon të dhënat analizuesit semantik, i cili më pas dërgon pemën abstrakte të tipizuar të sintaksës (AST) optimizuesit, dhe optimizuesi menaxhon gjeneruesin e kodit, i cili gjeneron kodin e bytes për mesin virtual.
Rezultati kyç është analiza e menjëhershme e sintaksës. Kur lokacioni i regjistrit mund të përcaktohet plotësisht vetëm nga parametrat dhe konstantet, motorri kalon direkt në çdo fushë, pa skanuar bajtat e mëparshme, duke siguruar akses pa kopjim dhe kapacitet disa GBit/s.
Gjuha vetë ka evoluar së bashku me grupin e mjeteve. Tani ajo mbështet blloqe kur për lokacione kushtore, regjistra të parametrizuar dhe anonim, qasje në anëtarët e fushave të regjistrit dhe gjithashtu operatorë bit për bit dhe logjikë.
Sa i referohet lehtĂ«sisĂ« sĂ« zhvilluesit, faza e analizĂ«s semantike tani zbulon referenca tĂ« paqarta, mospĂ«rputhje tipesh dhe gabime arnosti nĂ« fazĂ«n e kompilimit â me shĂ«nimin e vendndodhjes nĂ« kodin burimor â dhe jo gjatĂ« ekzekutimit, si dhe Ă«shtĂ« lĂ«shuar njĂ« zgjerim pĂ«r VS Code pĂ«r theksimin e sintaksĂ«s sĂ« skedarĂ«ve .sddl.
Kodeku i ri i integruar LZ
Në OpenZL tani është përfshirë kodeku i vet LZ, i prezantuar si ZL_GRAPH_LZ, si edhe profili i kompresimit të vazhdueshëm në utilitarin zli. Puna mbi kodekun vazhdon: është duke u zgjeruar seti i funksioneve dhe duke u rritur performanca në procesimin e të dhënave të vogla. Në këtë moment, ai mbështet funksionalitetin e barabartë me zstd niveli 1, me një madhësi Dritare kompresimi 64 KB.
OpenZL ofron një mundësi për të riprojektuar çdo fazë të konvejrit LZ me qëllim përshpejtimin. Arkitektura e saj grafike gjithashtu lejon kombinimin e fazave të kodimit të entropisë në vend që të përdorë një konveyor të vetëm që është i përshtatshëm për të gjitha skenarët e përdorimit. Më pas disa faza mund të bashkohen në një operacion për të rritur shpejtësinë e përpunimit. Kjo lejon që OpenZL të sigurojë një shkallë kompresimi më të lartë me 10% dhe një shpejtësi nxjerrjeje më të lartë me 70% krahasuar me Zstandard nivel 1 në kabinetin Silesia në testet tona:
| Kompressor | Shkalla e kompresimit | Shpejtësia e kompresimit | Shpejtësia e nxjerrjes |
|---|---|---|---|
| OpenZL LZ niveli 1 | 2.74 | 466 MB/s | 2288 MB/s |
| Zstd niveli 1 me madhësi dritare 64K | 2.74 | 419 MB/s | 1254 MB/s |
| Zstd niveli 1 | 2.89 | 424 MB/s | 1345 MB/s |
Mbështetje për të dhëna shumë të mëdha hyrëse
zli tani tani mbĂ«shtet pĂ«rpunimin e tĂ« dhĂ«nave tĂ« mĂ«dha hyrĂ«se (me kapacitet disa gigabajtĂ«sh). Para kompresimit, kĂ«to tĂ« dhĂ«na tani ndahen automatikisht nĂ« fragmente me madhĂ«si tĂ« menaxhueshme (default â rreth 16MB), çka lejon tĂ« kufizohet sasia e memories sĂ« pĂ«rdorur, tĂ« rritet lokaliteti i tĂ« dhĂ«nave dhe tĂ« hapen mundĂ«si pĂ«r pĂ«rpunim paralel. NĂ« SDDL2 Ă«shtĂ« realizuar njĂ« funksion i ngjashĂ«m i fragmentimit automatik gjatĂ« punĂ«s me skema. GjatĂ« procesit u krijuan ose u pĂ«rditĂ«suan segmentatorĂ« tĂ« rinj â pĂ«r CSV, Parquet dhe tĂ« dhĂ«na numerike standarde â dhe tĂ« gjithĂ« segmentatorĂ«t tani janĂ« tĂ« serializueshĂ«m dhe tĂ« konfigurueshĂ«m, kĂ«shtu qĂ« renditja e zgjedhur mund tĂ« ruhet nĂ« kompresor dhe tĂ« ripĂ«rdoret mĂ« vonĂ«.
Kjo aplikohet në mënyrë transparente gjatë kompresimit. Ju lutemi vini re se procesi i mësimit është ndryshe dhe mbetet i pandikuar, prandaj ai nuk është i destinuar për të pranuar të dhëna hyrëse gjigante si material mësimor.
Përmirësime në vizualizuesin online të grafit (provo)
Tani vizualizuesi njeh gjurmët e kompresimit dhe çkompresimit nga fillimi deri në fund.
Pana e parashikimit të rrjedhës lejon të shikoni bajtat që kalojnë në secilin brinjë, dhe falë elementeve të kontrolleve të prerjes, edhe rrjedhat e mëdha mbeten të lehta për t'u punuar.
Pana e cilësimeve bashkon të gjitha opsionet e shfaqjes në një vend, dhe një grup i plotë i çelësave të shpejtë - navigimi në drejtime, kalimi rendit, shtrirja dhe tkurrja, zgjedhja e nyjeve - mundëson punën e thjeshtë me mjetin pa mouse.
Tani gjurmĂ«t kanĂ« versione, kompresimi me ndarje nĂ« blloqe shfaqet saktĂ«, dhe zli pĂ«rfundimisht mund tĂ« gjenerojĂ« gjurmĂ«t e veta duke pĂ«rdorur flamujt e rinj âtrace dhe âtrace-streams-dir.
TĂ« tjera
- Në katalog janë shtuar disa kodekë. Kodekët Partition dhe bitpack tani përdorin dekoder të bashkuar. Kodeku Floating-point bitsplit ka marrë kodues dhe dekoder të veçantë për formatet fp16, fp32, fp64 dhe bf16 me akcelerime të specializuara. Janë shtuar ndarjet me konsideratë të rangut (split_byrange), një shumëzues gjatësi, kodeku sentinel, graf lz4 dhe disa funksione ndihmëse të vogla si tryParseInt dhe splitByParam.
- API është renditur.
- Testimi fuzzing është përmirësuar.
- Procesi i ndërtimit dhe paketimit janë përmirësuar për më shumë platforma.
Burimi: linux.org.ru
