| 著者 | 接触 | URL |
|---|---|---|
| Blosc Developmentチーム | [email protected] | https://www.blosc.org |
| ギター | GHアクション | Numfocus | 行動規範 |
|---|---|---|---|
注:C-Blosc2と呼ばれるこのパッケージには、より多くの機能をサポートし、より積極的に維持されているこのパッケージには、より近代的なバージョンがあります。 https://github.com/blosc/c-blosc2にアクセスしてください
Bloscは、バイナリデータ用に最適化された高性能コンプレッサーです。 MEMCPY()OSコールを介して、従来の非圧縮されていない直接メモリフェッチアプローチよりも速くデータをプロセッサキャッシュに送信するように設計されています。 Bloscは、ディスクまたはメモリ内の大きなデータセットのサイズを縮小するだけでなく、メモリバウンド計算を加速することを意味するファーストコンプレッサー(私が知っていること)です。
メモリバスでのアクティビティを可能な限り減らすために、ブロッキング技術を使用します。要するに、この手法は、最新のプロセッサのキャッシュに収まるほど小さいブロックでデータセットを分割し、そこで圧縮 /減圧を実行することで機能します。また、利用可能な場合は、SIMD命令(SSE2、AVX2)およびCPUのマルチスレッド機能を活用して、圧縮 /減圧プロセスを最大に加速します。
Blosc Performanceに関するベンチマークをご覧ください。
BloscはBSDライセンスを使用して配布されます。詳細については、license.txtを参照してください。
C-Bloscは他のコンプレッサーとは異なります。メタコンプレッサーと呼ばれる必要があります。これは、異なるコンプレッサーとフィルターを使用できるためです(通常、圧縮比を改善するプログラム)。とにかく、複数のコンプレッサーとフィルターが既に付属していることがあるため、コンプレッサーと呼ばれることもあります。
現在、C-Bloscには、Fastlz(https://ariya.github.io/fastlz/)、LZ4およびLZ4HC(https://lz4.org/)に大きく基づいたコンプレッサーであるBlosclzのサポートが付属しています。 (https://zlib.net/)およびzstandard(https://facebook.github.io/zstd/)。
C-Bloscには、高度に最適化されています(SSE2またはAVX2の命令を使用できますが、利用可能な場合は使用できます)。ただし、将来、追加のコンプレッサーまたはフィルターが追加される場合があります。
Bloscは、さまざまなコンプレッサーとフィルターの調整を担当しているため、ブロッキング技術とマルチスレッド実行(複数のコアが利用可能な場合)を自動的に活用できます。これにより、すべてのコーデックとフィルターは、ブロッキングやマルチスレッドを実行するために最初に設計されていなくても、非常に高速で動作します。
最後に、C-Bloscは、統合されたシャッフルとビットシュルフィルターを使用して、圧縮比を改善するためのタイプサイズのメタ情報を利用できるため、バイナリデータを処理するのに特に適しています。
まとめると、これらの機能はすべて、他の圧縮ライブラリとは別にBloscを設定します。
Bloscは、cmake_を使用して構築、テスト、インストールできます。次の手順では、「ソースから外れた」ビルドについて説明します。
$ cd c-blosc
$ mkdir build
$ cd buildCmake Configurationを実行し、オプションでインストールディレクトリ( '/usr'または '/usr/local')を指定します。
$ cmake -DCMAKE_INSTALL_PREFIX=your_install_prefix_directory ..Cmakeを使用すると、コンプレッサーの内部または外部のソースを好む、またはそれらを有効/無効にするなど、さまざまな方法でBloscを構成できます。 Cmake(CCMakeまたはCmake-Gui)が提供するUIツールを使用して構成を実行できることに注意してください。
$ ccmake .. # run a curses-based interface
$ cmake-gui .. # run a graphical interfaceBloscの構築、テスト、インストール:
$ cmake --build .
$ ctest
$ cmake --build . --target installBloscライブラリの静的および動的バージョンは、ヘッダーファイルとともに、指定された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は、C89準拠のCコンパイラを見つけることができるすべてのプラットフォームをサポートすることを目的としています。ほとんどがテストされているのは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
HDF5ライブラリのフィルターとしてBloscを使用したい人のために、HDF5-BLOSCプロジェクトにはサンプルの実装があります。
https://github.com/blosc/hdf5-blosc
Bloscの公式メーリングリストがあります:
[email protected] https://groups.google.com/g/blosc
ありがとう。
データをお楽しみください!