| ผู้เขียน | ติดต่อ | url |
|---|---|---|
| ทีมพัฒนา Blosc | [email protected] | https://www.blosc.org |
| เครื่องราง | การกระทำ GH | numfocus | จรรยาบรรณ |
|---|---|---|---|
หมายเหตุ : มีเวอร์ชันที่ทันสมัยกว่าของแพ็คเกจนี้ที่เรียกว่า C-Blosc2 ซึ่งรองรับคุณสมบัติอื่น ๆ อีกมากมายและได้รับการดูแลอย่างแข็งขันมากขึ้น เยี่ยมชมได้ที่: https://github.com/blosc/c-blosc2
Blosc เป็นคอมเพรสเซอร์ประสิทธิภาพสูงที่เหมาะสำหรับข้อมูลไบนารี มันได้รับการออกแบบมาเพื่อส่งข้อมูลไปยังแคชโปรเซสเซอร์ได้เร็วกว่าวิธีการดึงข้อมูลหน่วยความจำโดยตรงแบบดั้งเดิมไม่บีบอัดผ่านการเรียก MEMCPY () OS Blosc เป็นคอมเพรสเซอร์ตัวแรก (ที่ฉันรู้) ซึ่งไม่เพียง แต่จะลดขนาดของชุดข้อมูลขนาดใหญ่บนดิสก์หรือในหน่วยความจำ แต่ยังช่วยเร่งการคำนวณที่มีความจำ
มันใช้เทคนิคการบล็อกเพื่อลดกิจกรรมในบัสหน่วยความจำให้มากที่สุด ในระยะสั้นเทคนิคนี้ใช้งานได้โดยการแบ่งชุดข้อมูลเป็นบล็อกที่มีขนาดเล็กพอที่จะพอดีกับแคชของโปรเซสเซอร์ที่ทันสมัยและทำการบีบอัด / การบีบอัดที่นั่น นอกจากนี้ยังใช้ประโยชน์จากคำแนะนำ SIMD (SSE2, AVX2) และความสามารถในการทำมัลติเธรดของซีพียูเพื่อเร่งกระบวนการบีบอัด / การบีบอัดให้สูงสุด
ดูเกณฑ์มาตรฐานเกี่ยวกับประสิทธิภาพของ Blosc
Blosc มีการแจกจ่ายโดยใช้ใบอนุญาต BSD ดูใบอนุญาต TXT สำหรับรายละเอียด
C-Blosc ไม่เหมือนคอมเพรสเซอร์อื่น ๆ : มันควรจะเรียกว่า meta-compressor นี่เป็นเช่นนั้นเพราะสามารถใช้คอมเพรสเซอร์และตัวกรองที่แตกต่างกัน (โปรแกรมที่ปรับปรุงอัตราส่วนการบีบอัดโดยทั่วไป) ไม่ว่าจะด้วยวิธีใดก็ตามมันสามารถเรียกได้ว่าคอมเพรสเซอร์เพราะมันเกิดขึ้นที่มาพร้อมกับคอมเพรสเซอร์และตัวกรองหลายตัวดังนั้นจึงสามารถทำงานเหมือนตัวแปลงสัญญาณปกติได้
ปัจจุบัน C-blosc มาพร้อมกับการสนับสนุนของ Blosclz คอมเพรสเซอร์อย่างหนักจาก fastlz (https://ariya.github.io/fastlz/), lz4 และ lz4hc (https://lz4.org/) (https://zlib.net/) และ zstandard (https://facebook.github.io/zstd/)
C-Blosc ยังมาพร้อมกับการปรับให้เหมาะสมอย่างมาก (สามารถใช้คำแนะนำ SSE2 หรือ AVX2 ได้หากมี) การสับเปลี่ยนและตัวกรอง bitshuffle (สำหรับข้อมูลเกี่ยวกับวิธีการและทำไมการสลับงานดูที่นี่) อย่างไรก็ตามอาจมีการเพิ่มคอมเพรสเซอร์หรือตัวกรองเพิ่มเติมในอนาคต
Blosc รับผิดชอบในการประสานงานคอมเพรสเซอร์และตัวกรองที่แตกต่างกันเพื่อให้พวกเขาสามารถใช้ประโยชน์จากเทคนิคการบล็อกรวมถึงการดำเนินการแบบมัลติเธรด (ถ้ามีหลายแกน) โดยอัตโนมัติ นั่นทำให้ตัวแปลงสัญญาณและตัวกรองทุกตัวจะทำงานด้วยความเร็วสูงมากแม้ว่าจะไม่ได้ออกแบบมาในขั้นต้นสำหรับการบล็อกหรือมัลติเธรด
ในที่สุด C-Blosc นั้นเหมาะสมเป็นพิเศษในการจัดการกับข้อมูลไบนารีเนื่องจากสามารถใช้ประโยชน์จากข้อมูลขนาดเมตาสำหรับอัตราส่วนการบีบอัดที่ดีขึ้นโดยใช้ตัวกรองการสลับและตัวกรอง bitshuffle
เมื่อนำมารวมกันคุณสมบัติทั้งหมดเหล่านี้จะตั้งค่า Blosc นอกเหนือจากไลบรารีการบีบอัดอื่น ๆ
BLOSC สามารถสร้างทดสอบและติดตั้งโดยใช้ CMAKE_ ขั้นตอนต่อไปนี้อธิบายการสร้าง "Out of Source"
$ cd c-blosc
$ mkdir build
$ cd buildตอนนี้เรียกใช้การกำหนดค่า CMake และระบุไดเรกทอรีการติดตั้ง (เช่น '/usr' หรือ '/usr/local'):
$ cmake -DCMAKE_INSTALL_PREFIX=your_install_prefix_directory ..CMake อนุญาตให้กำหนดค่า Blosc ในหลาย ๆ วิธีเช่นเลือกแหล่งข้อมูลภายในหรือภายนอกสำหรับคอมเพรสเซอร์หรือเปิดใช้งาน/ปิดการใช้งาน โปรดทราบว่าการกำหนดค่าสามารถทำได้โดยใช้เครื่องมือ UI ที่จัดทำโดย CMake (CCMake หรือ CMake-Gui):
$ ccmake .. # run a curses-based interface
$ cmake-gui .. # run a graphical interfaceสร้างทดสอบและติดตั้ง Blosc:
$ cmake --build .
$ ctest
$ cmake --build . --target installไลบรารี Blosc รุ่นคงที่และไดนามิกพร้อมกับไฟล์ส่วนหัวจะถูกติดตั้งลงใน cmake_install_prefix ที่ระบุ
C-Blosc มาพร้อมกับแหล่งข้อมูลเต็มรูปแบบสำหรับ LZ4, LZ4HC, Snappy, ZLIB และ ZSTD และโดยทั่วไปคุณไม่ควรกังวลว่าจะไม่มี (หรือ CMAKE ไม่พบ) ห้องสมุดในระบบของคุณเพราะโดยค่าเริ่มต้นแหล่งข้อมูลที่รวมอยู่จะถูกรวบรวมโดยอัตโนมัติ นี่หมายความว่าคุณสามารถมั่นใจได้ว่าจะได้รับการสนับสนุนอย่างสมบูรณ์สำหรับตัวแปลงสัญญาณทั้งหมดในการปรับใช้ Blosc ทั้งหมด (เว้นแต่คุณจะไม่รวมการสนับสนุนอย่างชัดเจนสำหรับบางส่วน)
แต่ในกรณีที่คุณต้องการบังคับให้ BLOSC ใช้ไลบรารีตัวแปลงสัญญาณภายนอกแทนแหล่งข้อมูลที่รวมอยู่คุณสามารถทำได้:
$ cmake -DPREFER_EXTERNAL_ZSTD=ON ..นอกจากนี้คุณยังสามารถปิดการสนับสนุนสำหรับไลบรารีการบีบอัดบางส่วน:
$ cmake -DDEACTIVATE_SNAPPY=ON .. # in case you don't have a C++ compiler ในตัวอย่าง/ ไดเรกทอรีคุณสามารถค้นหาคำแนะนำเกี่ยวกับวิธีการใช้ Blosc ภายในแอปของคุณ
Blosc มีวัตถุประสงค์เพื่อรองรับแพลตฟอร์มทั้งหมดที่สามารถพบคอมไพเลอร์ C 89 ได้ สิ่งที่ทดสอบส่วนใหญ่คือ Intel (Linux, Mac OSX และ Windows) และ ARM (Linux) แต่เป็นสิ่งที่แปลกใหม่เช่น IBM Blue Gene Q ฝังตัวประมวลผล "A2"
หากคุณพบปัญหาการรวบรวมเมื่อใช้ Mac OSX โปรดตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งเครื่องมือผู้พัฒนาบรรทัดคำสั่งแล้ว คุณสามารถติดตั้งได้ด้วย:
$ xcode-select --install Blosc มีเสื้อคลุมอย่างเป็นทางการสำหรับ Python ดู:
https://github.com/blosc/python-blosc
Blosc สามารถใช้จากบรรทัดคำสั่งโดยใช้ Bloscpack ดู:
https://github.com/blosc/bloscpack
สำหรับผู้ที่ต้องการใช้ Blosc เป็นตัวกรองในไลบรารี HDF5 มีการใช้งานตัวอย่างในโครงการ HDF5-Blosc ใน:
https://github.com/blosc/hdf5-blosc
มีรายการส่งจดหมายอย่างเป็นทางการสำหรับ Blosc ที่:
[email protected] https://groups.google.com/g/blosc
ดูขอบคุณ
เพลิดเพลินกับข้อมูล!