| Автор | Контакт | URL |
|---|---|---|
| Блоск команда разработчиков | [email protected] | https://www.blosc.org |
| Заклинание | GH Действия | Numfocus | Нормы поведения |
|---|---|---|---|
Примечание . Существует более современная версия этого пакета под названием C-BLOSC2, которая поддерживает гораздо больше функций и более активно поддерживается. Посетите его по адресу: https://github.com/blosc/c-blosc2
BLOSC является высокопроизводительным компрессором, оптимизированным для бинарных данных. Он был разработан для передачи данных в кэш процессора быстрее, чем традиционный, не сжатый подход с прямым избранием памяти через вызов ОС Memcpy (). BLOSC-это первый компрессор (о котором я знаю), который подразумевается не только для уменьшения размера крупных наборов данных в диске или в памяти, но и для ускорения вычислений, связанных с памятью.
Он использует метод блокировки, чтобы как можно больше снизить активность в шине памяти. Короче говоря, этот метод работает путем деления наборов данных на блоки, которые достаточно малы, чтобы соответствовать кэшам современных процессоров и выполнять там сжатие / декомпрессию. Он также использует, если таковые имеются, инструкции SIMD (SSE2, AVX2) и многопоточные возможности CPU, чтобы ускорить процесс сжатия / декомпрессии до максимума.
Посмотрите на некоторые тесты о производительности Blosc.
BLOSC распределяется с использованием лицензии BSD, см. В лицензии .txt для получения подробной информации.
C-Blosc не похож на другие компрессоры: его скорее следует назвать метакомпрессором. Это так, потому что он может использовать разные компрессоры и фильтры (программы, которые обычно улучшают коэффициент сжатия). В любом случае, его также можно назвать компрессором, потому что оно случается, что он уже поставляется с несколькими компрессором и фильтрами, поэтому он может работать как обычный кодек.
В настоящее время C-Blosc поставляется с поддержкой Blosclz, компрессора, который сильно основан на Fastlz (https://ariya.github.io/fastlz/), LZ4 и LZ4HC (https://lz4.org/), snappy (https://google.github.io/snaply/), zlibp.netp.nets.netsm.nets.netsm.netys. Zstandard (https://facebook.github.io/zstd/).
C-Blosc также поставляется с высоко оптимизированными (они могут использовать инструкции SSE2 или AVX2, если таковые в наличии). Однако в будущем могут быть добавлены дополнительные компрессоры или фильтры.
BLOSC отвечает за координацию различного компрессора и фильтров, чтобы они могли использовать метод блокировки, а также многопоточное выполнение (если доступны несколько ядер) автоматически. Это делает, что каждый кодек и фильтр будут работать на очень высоких скоростях, даже если он изначально не был предназначен для блокировки или многопоточного.
Наконец, C-Blosc специально подходит для работы с бинарными данными, поскольку он может воспользоваться мета-информацией типового размера для улучшения коэффициента сжатия с использованием интегрированных фильтров Shuffle и Bitshuffle.
Вместе все эти функции отличают Blosc от других библиотек сжатия.
BLOSC может быть построен, протестирован и установлен с использованием CMAKE_. В следующей процедуре описывается сборка «вне источника».
$ cd c-blosc
$ mkdir build
$ cd buildТеперь запустите конфигурацию Cmake и, необязательно укажите каталог установки (например, «/usr» или '/usr/local'):
$ cmake -DCMAKE_INSTALL_PREFIX=your_install_prefix_directory ..Cmake позволяет настраивать BLOSC разными способами, например, предпочитает внутренние или внешние источники для компрессоров или включение/отключение их. Обратите внимание, что конфигурация также может быть выполнена с использованием инструментов пользовательского интерфейса, предоставленных 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 не нашел) библиотеки в вашей системе, потому что по умолчанию включенные источники будут автоматически составлены и включены в библиотеку C-Blosc. Это эффективно означает, что вы можете быть уверены в полной поддержке всех кодеков во всех развертываниях BLOSC (если вы не исключаете явно исключая поддержку некоторых из них).
Но если вы хотите заставить BLOSC использовать внешние библиотеки кодека вместо включенных источников, вы можете сделать это:
$ cmake -DPREFER_EXTERNAL_ZSTD=ON ..Вы также можете отключить поддержку некоторых библиотек сжатия:
$ cmake -DDEACTIVATE_SNAPPY=ON .. # in case you don't have a C++ compiler В примерах/ каталоге вы можете найти подсказки о том, как использовать BLOSC в вашем приложении.
BLOSC предназначен для поддержки всех платформ, где можно найти компилятор C89 Compliant C. Сообщается, что те, которые в основном протестированы, - это Intel (Linux, Mac OSX и Windows) и ARM (Linux), но экзотические, поскольку процессор IBM Blue Gene Q Embedded "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 существует образец реализации HDF5-Blosc в:
https://github.com/blosc/hdf5-blosc
Есть официальный список рассылки для Blosc по адресу:
[email protected] https://groups.google.com/g/blosc
Смотрите спасибо.
Наслаждайтесь данными!