| Autor | Contato | Url |
|---|---|---|
| Equipe de desenvolvimento BLOSC | [email protected] | https://www.blosc.org |
| Gitter | Ações de GH | NumFocus | Código de Conduta |
|---|---|---|---|
Nota : Existe uma versão mais moderna deste pacote chamada C-BLOSC2, que suporta muito mais recursos e é mais ativamente mantido. Visite em: https://github.com/blosc/closc2
O BLOSC é um compressor de alto desempenho otimizado para dados binários. Ele foi projetado para transmitir dados para o cache do processador mais rápido do que a abordagem tradicional de busca de memória direta e não compactada por meio de uma chamada do sistema operacional memcpy (). O BLOSC é o primeiro compressor (que estou ciente) que significa não apenas para reduzir o tamanho de grandes conjuntos de dados no disco ou na memória, mas também para acelerar os cálculos ligados à memória.
Ele usa a técnica de bloqueio para reduzir a atividade no barramento da memória o máximo possível. Em resumo, essa técnica funciona dividindo os conjuntos de dados em blocos pequenos o suficiente para caber em caches de processadores modernos e executar compressão / descompressão lá. Ele também aproveita, se disponível, as instruções SIMD (SSE2, AVX2) e os multi-threading das CPUs, a fim de acelerar o processo de compressão / descompressão ao máximo.
Veja alguns benchmarks sobre o desempenho do BLOSC.
O BLOSC é distribuído usando a licença BSD, consulte License.txt para obter detalhes.
O C-BLOSC não é como outros compressores: deve ser chamado de meta-compressor. Isso ocorre porque pode usar diferentes compressores e filtros (programas que geralmente melhoram a taxa de compressão). De qualquer forma, também pode ser chamado de compressor, pois acontece que já vem com vários compressores e filtros, para que possa funcionar como um codec regular.
Atualmente, o C-BLOSC vem com o apoio da Blosclz, um compressor fortemente baseado em Fastlz (https://ariya.github.io/fastlz/), lz4 e lz4hc (https://lz4 (https://zlib.net/) e Zstandard (https://facebook.github.io/zstd/).
O C-BLOSC também vem com altamente otimizados (eles podem usar as instruções SSE2 ou AVX2, se disponível) Shuffle e Bitshuffle Filters (para obter informações sobre como e por que o Shuffling funciona veja aqui). No entanto, compressores ou filtros adicionais podem ser adicionados no futuro.
O BLOSC está responsável por coordenar os diferentes compressores e filtros para que eles possam aproveitar a técnica de bloqueio, bem como a execução multithread (se vários núcleos estiverem disponíveis) automaticamente. Isso faz com que todo codec e filtro funcione em velocidades muito altas, mesmo que não tenha sido projetado inicialmente para fazer bloqueio ou multi-threading.
Finalmente, o C-BLOSC é especialmente adequado para lidar com dados binários, pois pode aproveitar a meta-informação do tamanho do tipo para melhorar a taxa de compressão usando os filtros integrados Shuffle e BitShuffle.
Quando tomados em conjunto, todos esses recursos diferenciam o BLOSC de outras bibliotecas de compactação.
O BLOSC pode ser construído, testado e instalado usando o cmake_. O procedimento a seguir descreve a construção "fora da fonte".
$ cd c-blosc
$ mkdir build
$ cd buildAgora execute a configuração do CMake e, opcionalmente, especifique o diretório de instalação (por exemplo, '/usr' ou '/usr/local'):
$ cmake -DCMAKE_INSTALL_PREFIX=your_install_prefix_directory ..O CMake permite configurar o BLOSC de muitas maneiras diferentes, como preferir fontes internas ou externas para compressores ou habilitá -los/desativá -los. Observe que a configuração também pode ser realizada usando as ferramentas de interface do usuário fornecidas pelo CMake (CCMake ou Cmake-Gui):
$ ccmake .. # run a curses-based interface
$ cmake-gui .. # run a graphical interfaceConstrua, teste e instale o BLOSC:
$ cmake --build .
$ ctest
$ cmake --build . --target installA versão estática e dinâmica da biblioteca BLOSC, juntamente com os arquivos do cabeçalho, será instalada no cmake_install_prefix especificado.
O C-BLOSC vem com fontes completas para LZ4, LZ4HC, Snappy, Zlib e Zstd e, em geral, você não deve se preocupar em não ter (ou não encontrar) as bibliotecas no seu sistema, porque, por padrão, as fontes incluídas serão compiladas e incluídas automaticamente na biblioteca C-BLOSC. Isso significa efetivamente que você pode ter um suporte completo para todos os codecs em todas as implantações do BLOSC (a menos que esteja excluindo explicitamente o suporte para alguns deles).
Mas, caso você queira forçar o BLOSC a usar bibliotecas de codec externas em vez das fontes incluídas, você pode fazer isso:
$ cmake -DPREFER_EXTERNAL_ZSTD=ON ..Você também pode desativar o suporte para algumas bibliotecas de compressão:
$ cmake -DDEACTIVATE_SNAPPY=ON .. # in case you don't have a C++ compiler Nos exemplos/ diretório, você pode encontrar dicas sobre como usar o BLOSC dentro do seu aplicativo.
O BLOSC visa suportar todas as plataformas em que um compilador C compatível com C89 pode ser encontrado. Os que são testados principalmente são Intel (Linux, Mac OSX e Windows) e ARM (Linux), mas exóticos como o processador IBM Blue Gene Q incorporado "A2" também é relatado para funcionar.
Se você se deparar com problemas de compilação ao usar o Mac OSX, verifique se você instalou as ferramentas de desenvolvedor de linha de comando. Você sempre pode instalá -los com:
$ xcode-select --install Blosc tem um invólucro oficial para Python. Ver:
https://github.com/blosc/python-blosc
O BLOSC pode ser usado na linha de comando usando o Bloscpack. Ver:
https://github.com/blosc/bloscpack
Para aqueles que desejam usar o BLOSC como filtro na biblioteca HDF5, há uma implementação de amostra no projeto HDF5-BLOC em:
https://github.com/blosc/hdf5blosc
Há uma lista de discussão oficial para BLOSC em:
[email protected] https://groups.google.com/g/blosc
Veja obrigado.
Aproveite os dados!