| 작가 | 연락하다 | URL |
|---|---|---|
| Blosc 개발 팀 | [email protected] | https://www.blosc.org |
| gitter | GH 동작 | Numfocus | 행동 강령 |
|---|---|---|---|
참고 : C-Blosc2라는이 패키지에는 더 많은 기능을 지원하고보다 적극적으로 유지 관리되는이 패키지의 최신 버전이 있습니다. https://github.com/blosc/c-closc2를 방문하십시오
BLOSC는 이진 데이터에 최적화 된 고성능 압축기입니다. Memcpy () OS 호출을 통해 기존의 비 압축, 직접 메모리 페치 접근법보다 프로세서 캐시에 데이터를 더 빠르게 전송하도록 설계되었습니다. BLOSC는 최초의 압축기 (내가 알고있는)입니다. 이는 대형 데이터 세트 온 디스크 또는 메모리 내 크기의 크기를 줄일뿐만 아니라 메모리 바운드 계산을 가속화하기위한 것입니다.
메모리 버스의 활동을 가능한 한 많이 줄이기 위해 차단 기술을 사용합니다. 요컨대,이 기술은 데이터 세트를 최신 프로세서의 캐시에 맞게 충분히 작은 블록으로 나누고 압축 / 압축을 수행하여 작동합니다. 또한 압축 / 감압 프로세스를 최대로 가속화하기 위해 CPU의 SIMD 명령 (SSE2, AVX2) 및 다중 스레딩 기능을 활용합니다.
BLOSC 성능에 대한 몇 가지 벤치 마크를 참조하십시오.
BLOSC는 BSD 라이센스를 사용하여 배포됩니다. 자세한 내용은 License.txt를 참조하십시오.
C-Blosc는 다른 압축기와 다릅니다. 오히려 메타 코압기라고해야합니다. 다른 압축기와 필터 (일반적으로 압축 비율을 향상시키는 프로그램)를 사용할 수 있기 때문입니다. 어쨌든, 컴프레서는 이미 여러 압축기와 필터와 함께 제공되므로 압축기라고도 할 수도 있으므로 실제로 일반 코덱처럼 작동 할 수 있습니다.
현재 C-Blosc는 Fastlz (https://ariya.github.io/fastlz/), lz4 및 lz4hc (https://lz4.org/)를 기반으로 한 압축기 인 Blosclz를 지원합니다. Zstandard (https://facebook.github.io/zstd/).
C-Blosc는 또한 고도로 최적화 된 것 (사용 가능한 경우 SSE2 또는 AVX2 지침을 사용할 수 있음) 셔플 및 비트 슈퍼 피플 필터 (셔플 링 작품에 대한 정보는 여기에서 참조)를 제공합니다. 그러나 향후 추가 압축기 또는 필터가 추가 될 수 있습니다.
BLOSC는 다양한 압축기와 필터를 조정하여 차단 기술과 다중 스레드 실행 (여러 코어를 사용할 수있는 경우)을 자동으로 활용할 수 있습니다. 따라서 모든 코덱과 필터는 처음에 차단 또는 멀티 스레딩을 위해 설계되지 않았더라도 매우 빠른 속도로 작동합니다.
마지막으로, C-BLOSC는 이진 데이터를 처리하는 데 특별히 적합합니다. 통합 셔플 및 비트 셔플 필터를 사용하여 압축 비율을 향상시키기위한 유형 크기 메타 정보를 활용할 수 있기 때문입니다.
종합하면 이러한 모든 기능은 BLOSC를 다른 압축 라이브러리와 차별화시킵니다.
CMAKE_를 사용하여 BLOSC를 구축, 테스트 및 설치할 수 있습니다. 다음 절차는 "소스 외부"빌드를 설명합니다.
$ 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)가 제공하는 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 용 전체 소스가 제공되며 일반적으로 포함 된 소스가 자동 컴파일되어 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 호환 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
Bloscpack을 사용하여 Blosc는 명령 줄에서 사용할 수 있습니다. 보다:
https://github.com/blosc/bloscpack
HDF5 라이브러리에서 blosc를 필터로 사용하려는 사람들의 경우 hdf5 blosc 프로젝트에서 샘플 구현이 있습니다.
https://github.com/blosc/hdf5-blosc
blosc의 공식 메일 링리스트가 있습니다.
[email protected] https://groups.google.com/g/blosc
감사합니다.
데이터를 즐기십시오!