| Auteur | Contact | URL |
|---|---|---|
| Équipe de développement BLOSC | [email protected] | https://www.blos.org |
| Givreuse | Actions GH | Numfocus | Code de conduite |
|---|---|---|---|
Remarque : Il existe une version plus moderne de ce package appelé C-BLOSC2 qui prend en charge beaucoup plus de fonctionnalités et est plus activement entretenu. Visitez-le à: https://github.com/blosc/c-blosc2
BLOSC est un compresseur haute performance optimisé pour les données binaires. Il a été conçu pour transmettre des données au cache de processeur plus rapidement que l'approche traditionnelle, non compressée et directe de mémoire directe via un appel MEMCPY () OS. BLOSC est le premier compresseur (que je suis au courant) qui est destiné non seulement à réduire la taille de grands ensembles de données sur le disque ou en mémoire, mais aussi pour accélérer les calculs liés à la mémoire.
Il utilise la technique de blocage afin de réduire autant que possible l'activité dans le bus mémoire. En bref, cette technique fonctionne en divisant des ensembles de données dans des blocs suffisamment petits pour s'adapter aux caches de processeurs modernes et y effectuer une compression / décompression. Il exploite également les instructions SIMD (SSE2, AVX2) et les capacités multi-jet des processeurs, afin d'accélérer le processus de compression / décompression au maximum.
Voir quelques repères sur les performances de BLOSC.
BLOSC est distribué à l'aide de la licence BSD, voir Licence.txt pour plus de détails.
C-BLOC n'est pas comme les autres compresseurs: il devrait plutôt être appelé un méta-compresseur. Il en est ainsi car il peut utiliser différents compresseurs et filtres (programmes qui améliorent généralement le rapport de compression). En tout cas, il peut également être appelé compresseur car il se produit qu'il est déjà livré avec plusieurs compresseurs et filtres, donc il peut en fait fonctionner comme un codec ordinaire.
Actuellement, C-BLOC est livré avec le support de Blosclz, un compresseur fortement basé sur Fastlz (https://ariya.github.io/fastlz/), lz4 et lz4hc (https://lz4.org/), Snappy (https://google.github.io/snappy/), zlib (https:/zab.neb.net/), zlib (https:/zab.neb.net/), Zlib (https:/zab.neb.net/), ZLIB (https:/zab. et zstandard (https://facebook.github.io/zstd/).
C-BLASC est également livré avec des instructions SSE2 ou AVX2 hautement optimisées (ils peuvent utiliser des instructions SSE2 ou AVX2, si disponibles), des filtres BitShuffle (pour des informations sur comment et pourquoi les travaux de mélange voient ici). Cependant, des compresseurs ou filtres supplémentaires peuvent être ajoutés à l'avenir.
BLOSC est chargé de coordonner les différents compresseurs et filtres afin qu'ils puissent tirer parti de la technique de blocage ainsi que de l'exécution multithread (si plusieurs cœurs sont disponibles). Cela fait que chaque codec et filtre fonctionnera à très grande vitesse, même s'il n'a pas été initialement conçu pour faire du blocage ou du multi-lancement.
Enfin, C-BLOC est spécialement adapté pour traiter les données binaires car elle peut profiter de la méta-information de la taille du type pour améliorer le rapport de compression en utilisant les filtres de shuffle et de bithuffle intégrés.
Lorsqu'elles sont prises ensemble, toutes ces fonctionnalités distinguent BLOSC des autres bibliothèques de compression.
BLOSC peut être construit, testé et installé à l'aide de CMake_. La procédure suivante décrit la construction "hors source".
$ cd c-blosc
$ mkdir build
$ cd buildExécutez maintenant la configuration CMake et spécifiez éventuellement le répertoire d'installation (par exemple '/ usr' ou '/ usr / local'):
$ cmake -DCMAKE_INSTALL_PREFIX=your_install_prefix_directory ..CMake permet de configurer BLOSC de différentes manières, comme préférer les sources internes ou externes pour les compresseurs ou les activer / les désactiver. Veuillez noter que la configuration peut également être effectuée à l'aide d'outils d'interface utilisateur fournis par CMake (CCMake ou CMake-Gui):
$ ccmake .. # run a curses-based interface
$ cmake-gui .. # run a graphical interfaceConstruire, tester et installer BLOSC:
$ cmake --build .
$ ctest
$ cmake --build . --target installLa version statique et dynamique de la bibliothèque BLOSC, ainsi que des fichiers d'en-tête, seront installées dans le CMake_install_prefix spécifié.
C-BLASC est livré avec des sources complètes pour LZ4, LZ4HC, Snappy, ZLIB et ZSTD et en général, vous ne devez pas vous soucier de ne pas avoir (ou Cmake ne trouvant pas) les bibliothèques de votre système car par défaut, les sources incluses seront automatiquement compilées et incluses dans la bibliothèque C-BLOC. Cela signifie effectivement que vous pouvez être confiant d'avoir un support complet pour tous les codecs dans tous les déploiements BLOSC (sauf si vous excluez explicitement le soutien à certains d'entre eux).
Mais au cas où vous souhaitez forcer BLOSC à utiliser des bibliothèques de codec externes au lieu des sources incluses, vous pouvez le faire:
$ cmake -DPREFER_EXTERNAL_ZSTD=ON ..Vous pouvez également désactiver la prise en charge de certaines bibliothèques de compression:
$ cmake -DDEACTIVATE_SNAPPY=ON .. # in case you don't have a C++ compiler Dans les exemples / répertoires, vous pouvez trouver des conseils sur la façon d'utiliser BLOSC dans votre application.
BLOSC est destiné à prendre en charge toutes les plates-formes où un compilateur C conforme C C89 peut être trouvé. Ceux qui sont principalement testés sont Intel (Linux, Mac OSX et Windows) et ARM (Linux), mais les exotiques comme le processeur IBM Blue Gene Q incorporé "A2" servirait également.
Si vous rencontrez des problèmes de compilation lorsque vous utilisez Mac OSX, assurez-vous que vous avez installé les outils de développement de ligne de commande. Vous pouvez toujours les installer avec:
$ xcode-select --install Blosc a un emballage officiel pour Python. Voir:
https://github.com/bloss/python-blosc
BLOSC peut être utilisé à partir de la ligne de commande en utilisant BLOSCPACK. Voir:
https://github.com/bloss/blospack
Pour ceux qui souhaitent utiliser BLOSC comme filtre dans la bibliothèque HDF5, il y a un exemple d'implémentation dans le projet HDF5-BLASC dans:
https://github.com/bloss/hdf5-blosc
Il existe une liste de diffusion officielle pour BLOSC à:
[email protected] https://groups.google.com/g/blosc
Voir merci.
Profitez des données!