OpenZL 0.2.0

OpenZL 0.2.0 OpenZL 0.2.0

Долоон сарын турш хөгжүүлсний дараа уг фрэймворкийн 0.2.0 хувилбар гарсан. OpenZL, алдагдалгүй өгөгдлийн компрессор үүсгэх зориулалттай.

Энэхүү хүрээ нь үндсэн номын сан болон хэл дээр тайлбарласан тусгай компрессоруудыг үүсгэх хэрэгслүүдээс бүрдэнэ. SDDL.
Сайн тусгай компрессор бүтээх хоёр алхам байдаг:

  1. Бүтцийг гаргаж авахын тулд өгөгдлийн шинжилгээ хийх.
  2. Сайн шахалт хийхийн тулд үүссэн бүтцийг ашигладаг сайн арын компрессоруудыг ашиглах.

OpenZL нь хоёр үе шатанд зориулсан хэрэгслүүдийг хангадаг.

Төсөл нь C болон C++ хэл дээр бичигдсэн бөгөөд BSD лицензийн дагуу түгээгддэг.

Гол өөрчлөлтүүд

SDDL2

SDDL нь анхны дизайны зорилгодоо хүрэхийн тулд эхнээс нь бүрэн дахин бичигдсэн. Анхны демо нь хялбаршуулсан ажиллах үеийн орчин байсан бол SDDL2 нь бүрэн хэмжээний хөрвүүлэгч юм: задлан шинжлэгч нь өгөгдлийг семантик анализатор руу дамжуулдаг бөгөөд энэ нь эргээд бичмэл хийсвэр синтаксийн модыг (AST) оновчлогч руу дамжуулдаг бөгөөд оновчлогч нь виртуал машины байткод үүсгэдэг код үүсгэгчийг хянадаг.

Гол үр дүн нь шууд задлан шинжлэх явдал юм. Бичлэгийн байршлыг зөвхөн параметрүүд болон тогтмолуудыг ашиглан бүрэн тодорхойлж болох үед хөдөлгүүр нь өмнөх байтуудыг сканнердахгүйгээр шууд аль ч талбар руу үсрэх бөгөөд энэ нь хуулбарлахгүйгээр хандах, хэд хэдэн ГБ/с дамжуулах чадварыг идэвхжүүлдэг.

Энэ хэл нь өөрөө хэрэгслүүдийн багцтайгаа хамт хөгжсөн. Одоо нөхцөлт мэдэгдлүүдийн үед хэрэглэх заалтууд, параметржүүлсэн болон нэргүй бичлэгүүд, бичлэгийн талбарын гишүүдэд хандах эрх, битийн болон логик операторуудыг дэмждэг болсон.

Хөгжүүлэгчийн талаас семантик шинжилгээний алхам нь одоо тодорхойлогдоогүй лавлагаа, төрлийн зөрүү, arity алдааг ажиллуулах үед биш харин эмхэтгэх үед - эх кодын байршлаар - тодорхойлдог болсон бөгөөд .sddl файлуудын синтакс тодруулах VS Code өргөтгөлийг гаргасан.

Шинээр суурилуулсан LZ кодек

OpenZL нь одоо ZL_GRAPH_LZ гэж төлөөлөгдсөн өөрийн LZ кодек, мөн zli хэрэгсэлд дараалсан шахалтын профайлыг агуулдаг. Кодек дээр ажиллах ажил үргэлжилж байгаа бөгөөд түүний функцын багцыг өргөжүүлж, жижиг оролтын өгөгдлийг боловсруулах үед гүйцэтгэлийг сайжруулж байна. Одоогоор энэ нь 64 KB шахалтын цонхтой zstd 1-р түвшинтэй дүйцэхүйц функцийг дэмждэг.

OpenZL нь LZ дамжуулах хоолойн үе шат бүрийг хурдны хувьд дахин зохион бүтээх боломжийг олгодог. Үүний график архитектур нь бүх хэрэглээний тохиолдолд адилхан тохиромжтой ганц дамжуулах хоолойг ашиглахын оронд энтропийн кодчилолын үе шатуудыг нэгтгэх боломжийг олгодог. Дараа нь боловсруулалтын хурдыг сайжруулахын тулд олон үе шатыг нэг үйлдэлд нэгтгэж болно. Энэ нь OpenZL-д Silesia корпус дээрх Zstandard 1-р түвшинтэй харьцуулахад 10% илүү хурдан шахалт, 70% илүү хурдан задлах боломжийг олгодог. бидний туршилтууд:

КомпрессорШахалтын харьцааШахалтын хурдДаралтын хурд
OpenZL LZ түвшин 12.74466 MB / s2288 MB / s
64K цонхны хэмжээтэй Zstd 1-р түвшин2.74419 MB / s1254 MB / s
Zstd түвшин 12.89424 MB / s1345 MB / s

Маш том оролтын өгөгдлийг дэмжих

zli нь одоо асар их хэмжээний оролтын өгөгдлийг (хэдэн гигабайт хэмжээтэй) боловсруулахыг дэмждэг болсон. Шахалтын өмнө ийм өгөгдлийг одоо автоматаар удирдах боломжтой хэмжээтэй хэсгүүдэд (анхдагчаар ойролцоогоор 16 MB) хувааж, санах ойн хэрэглээг хязгаарлаж, өгөгдлийн байршлыг сайжруулж, зэрэгцээ боловсруулалтыг идэвхжүүлдэг болсон. SDDL2 нь схемтэй ажиллахдаа ижил төстэй автомат хэсгүүдийг хуваах функцийг хэрэгжүүлдэг. CSV, Паркет болон стандарт тоон өгөгдлийн хувьд шинэ сегментчилэгчдийг бий болгосон эсвэл шинэчилсэн бөгөөд бүх сегментчилэгчдийг одоо цуваа болгож, тохируулах боломжтой болсон тул сонгосон байршлыг компрессорт хадгалж, дараа нь дахин ашиглах боломжтой болсон.

Үүнийг шахалтын үед ил тод байдлаар хэрэглэнэ. Сургалтын дамжуулах хоолой нь өөр бөгөөд өөрчлөгдөөгүй хэвээр байгааг анхаарна уу, тиймээс энэ нь асар том оролтын өгөгдлийг сургалтын материал болгон хүлээн авахаар бүтээгдээгүй болно.

Онлайн график дүрслэгчийн сайжруулалтууд (оролдох)
Одоо дүрслэгч нь шахалт болон задлах ул мөрийг эхнээс нь дуустал таньдаг болсон.

Урсгалын урьдчилсан самбар нь ирмэг бүрийн дагуу урсаж буй байтуудыг харах боломжийг олгодог бөгөөд тайрах удирдлага нь том урсгалуудтай ч ажиллахад хялбар болгодог.

Тохиргооны самбар нь бүх дэлгэцийн сонголтуудыг нэг дор нэгтгэдэг бөгөөд чиглүүлэгч навигаци, дараалсан хөдөлгөөн, өргөтгөх болон хураах, зангилаа сонгох зэрэг бүрэн хэмжээний халуун товчлуурууд нь танд хулганагүйгээр хэрэгслийг ашиглахад хялбар болгох боломжийг олгодог.

Мөрүүд одоо хувилбарлагдсан, блок дээр суурилсан шахалтыг зөв харуулсан бөгөөд zli нь эцэст нь шинэ --trace болон --trace-streams-dir тугуудыг ашиглан өөрийн мөрүүдийг үүсгэж чадна.

Разное

  • Каталогт хэд хэдэн кодек нэмэгдсэн. Partition болон bitpack кодекууд одоо нэгдсэн декодлогч ашигладаг болсон. Хөвөгч цэгтэй бит хуваах кодек нь одоо тусгай хурдатгалтай fp16, fp32, fp64, болон bf16 форматуудад зориулсан тусгай кодлогч болон декодлогчдыг агуулдаг болсон. Хүрээнд мэдрэмтгий хуваах (split_byrange), уртын мультиплексор, харуулын кодек, lz4 график, tryParseInt болон splitByParam зэрэг жижиг туслах функцуудыг нэмсэн.
  • API-г оновчтой болгосон.
  • Сайжруулсан fuzz туршилт.
  • Илүү олон платформд зориулсан сайжруулсан угсралт болон сав баглаа боодлын процесс.

Эх сурвалж: linux.org.ru