| Autor | Kontakt | URL |
|---|---|---|
| Blosc -Entwicklungsteam | [email protected] | https://www.blosc.org |
| Gitter | GH -Aktionen | Numfokus | Verhaltenskodex |
|---|---|---|---|
Hinweis : Es gibt eine modernere Version dieses Pakets namens C-BLOSC2, die viele weitere Funktionen unterstützt und aktiver gewartet wird. Besuchen Sie es unter: https://github.com/blosc/c-bosc2
Blosc ist ein Hochleistungskompressor, der für binäre Daten optimiert ist. Es wurde entwickelt, um Daten schneller an den Prozessor-Cache zu übertragen als der herkömmliche, nicht komprimierte und direkte Speicher-Fetch-Ansatz über einen MEMCPY () OS-Aufruf. BlOSC ist der erste Kompressor (der mir bekannt ist), der nicht nur dazu gedacht ist, die Größe großer Datensätze auf Schleifen oder Memory zu verringern, sondern auch die maßgeschneiderten Berechnungen zu beschleunigen.
Es verwendet die Blockierungstechnik, um die Aktivität im Speicherbus so weit wie möglich zu verringern. Kurz gesagt, diese Technik bezieht sich, indem Datensätze in Blöcken geteilt werden, die klein genug sind, um in Caches moderner Prozessoren zu passen und dort Komprimierung / Dekompression durchzuführen. Es nutzt auch, falls verfügbar, SIMD-Anweisungen (SSE2, AVX2) und Multi-Threading-Funktionen von CPUs, um den Komprimierung / Dekompressionsprozess auf ein Maximum zu beschleunigen.
Sehen Sie einige Benchmarks über die Blendungsleistung.
BlOSC wird mit der BSD -Lizenz verteilt. Weitere Informationen finden Sie unter Lizenz.txt.
C-BLOSC ist nicht wie andere Kompressoren: Es sollte eher ein Meta-Kompressor bezeichnet werden. Dies ist so, weil es unterschiedliche Kompressoren und Filter verwenden kann (Programme, die im Allgemeinen das Kompressionsverhältnis verbessern). Auf jeden Fall kann es auch als Kompressor bezeichnet werden, da es vorkommt, dass es bereits mit mehreren Kompressor und Filtern ausgestattet ist, sodass es tatsächlich wie ein normaler Codec funktionieren kann.
Derzeit wird C-Bosc mit Unterstützung von BloSclz geliefert, einem Kompressor, der stark auf Fastlz (https://ariya.github.io/fastlz/), lz4 und lz4hc (https://lz4.org/), Snapply (https://google.github.io./Snungen/snungen/), Zlib (https://google.github.io), basiert. (https://zlib.net/) und zstandard (https://facebook.github.io/zstd/).
C-BSOSC ist außerdem mit hoch optimierten (sie können SSE2- oder AVX2-Anweisungen verwenden, falls verfügbar) Shuffle und Bitshuffle-Filter (finden Sie hier, wie und warum Shufling funktioniert). In Zukunft können jedoch zusätzliche Kompressoren oder Filter hinzugefügt werden.
BLOSC ist für die Koordination des verschiedenen Kompressors und der Filter verantwortlich, damit sie die Blockierungstechnik sowie die Multi-Thread-Ausführung (falls mehrere Kerne verfügbar sind) automatisch nutzen können. Damit funktioniert jeder Codec und jeder Filter mit sehr hohen Geschwindigkeiten, auch wenn er zunächst nicht für die Blockierung oder Multi-Threading entwickelt wurde.
Schließlich ist C-BLOSC speziell für Binärdaten geeignet, da dies die Meta-Information der Typgröße für ein verbessertes Komprimierungsverhältnis unter Verwendung der integrierten Shuffle- und Bitshuffle-Filter nutzen kann.
In all diesen Merkmalen unterliegt Blott zusammen von anderen Kompressionsbibliotheken.
Blosc kann mit CMake_ erstellt, getestet und installiert werden. Das folgende Verfahren beschreibt den "Out of Source" -Build.
$ cd c-blosc
$ mkdir build
$ cd buildFühren Sie nun die CMake -Konfiguration aus und geben Sie optional das Installationsverzeichnis (z. B. '/usr' oder '/usr/local') an:
$ cmake -DCMAKE_INSTALL_PREFIX=your_install_prefix_directory ..CMAKE ermöglicht es, Blosc auf viele verschiedene Arten zu konfigurieren, z. B. die Bevorzugung interner oder externer Quellen für Kompressoren oder das Aktivieren/Deaktivieren dieser. Bitte beachten Sie, dass die Konfiguration auch mit UI-Tools von CMake (CCMake oder CMake-Gui) durchgeführt werden kann:
$ ccmake .. # run a curses-based interface
$ cmake-gui .. # run a graphical interfaceErstellen, testen und installieren Sie Blosc:
$ cmake --build .
$ ctest
$ cmake --build . --target installDie statische und dynamische Version der BLOSC -Bibliothek wird zusammen mit Header -Dateien in der angegebenen cmake_install_prefix installiert.
C-BSOSC verfügt über vollständige Quellen für LZ4, LZ4HC, Snappy, ZLIB und ZSTD. Im Allgemeinen sollten Sie sich keine Sorgen machen, dass Sie die Bibliotheken in Ihrem System nicht haben, da die enthaltenen Quellen standardmäßig automatisch kompiliert und in der C-BLOSC-Bibliothek enthalten sind. Dies bedeutet effektiv, dass Sie sicher sein können, dass alle Codecs in allen Blott -Bereitstellungen eine vollständige Unterstützung haben (es sei denn, Sie schließen die Unterstützung für einige von ihnen ausdrücklich aus).
Falls Sie Blosc jedoch zwingen möchten, externe Codec -Bibliotheken anstelle der enthaltenen Quellen zu verwenden, können Sie dies tun:
$ cmake -DPREFER_EXTERNAL_ZSTD=ON ..Sie können auch die Unterstützung für einige Komprimierungsbibliotheken deaktivieren:
$ cmake -DDEACTIVATE_SNAPPY=ON .. # in case you don't have a C++ compiler In den Beispielen/ Verzeichnissen finden Sie Hinweise zur Verwendung von Blosc in Ihrer App.
Blosc soll alle Plattformen unterstützen, auf denen ein C89 -konformes C -Compiler gefunden werden kann. Die größten getesteten sind Intel (Linux, Mac OSX und Windows) und Arm (Linux), aber exotische als IBM Blue Gene Q eingebettet "A2" -Prozessor, die auch funktionieren.
Wenn Sie bei der Verwendung von Mac OSX in Kompilierungsprobleme stoßen, stellen Sie sicher, dass Sie die Befehlszeilenentwickler -Tools installiert haben. Sie können sie jederzeit mit:
$ xcode-select --install Blosc hat einen offiziellen Wrapper für Python. Sehen:
https://github.com/blosc/python-bosc
Blosc kann von der Befehlszeile mit Bloscpack verwendet werden. Sehen:
https://github.com/blosc/bloscpack
Für diejenigen, die BlOSC als Filter in der HDF5-Bibliothek verwenden möchten, gibt es im HDF5-BLOSC-Projekt eine Probe-Implementierung in:
https://github.com/blosc/hdf5-bosc
Es gibt eine offizielle Mailingliste für Blosc unter:
[email protected] https://groups.google.com/g/blosc
Siehe danke.rst.
Genießen Sie Daten!