| Autor | Contacto | Url |
|---|---|---|
| Equipo de desarrollo de BLOSC | [email protected] | https://www.blosc.org |
| Dar un desprendimiento | Acciones de GH | Numorizar | Código de conducta |
|---|---|---|---|
NOTA : Hay una versión más moderna de este paquete llamado C-B-BLOSC2 que admite muchas más funciones y se mantiene más activamente. Visítelo en: https://github.com/blosc/c-losc2
BLOSC es un compresor de alto rendimiento optimizado para datos binarios. Ha sido diseñado para transmitir datos al caché del procesador más rápido que el enfoque tradicional de recuperación de memoria directa y no comprimida a través de una llamada MEMCPY () OS. BLOSC es el primer compresor (del que conozco) que se entiende no solo para reducir el tamaño de grandes conjuntos de datos en disco o en memoria, sino también para acelerar los cálculos unidos a la memoria.
Utiliza la técnica de bloqueo para reducir la actividad en el bus de memoria tanto como sea posible. En resumen, esta técnica funciona dividiendo conjuntos de datos en bloques que son lo suficientemente pequeños como para caber en cachés de procesadores modernos y realizar compresión / descompresión allí. También aprovecha, si está disponible, las instrucciones SIMD (SSE2, AVX2) y las capacidades de múltiples subprocesos de las CPU, para acelerar el proceso de compresión / descompresión al máximo.
Vea algunos puntos de referencia sobre el rendimiento de BLOSC.
BLOSC se distribuye utilizando la licencia BSD, consulte License.txt para más detalles.
C-Blosc no es como otros compresores: debe llamarse más bien un metacompresor. Esto es así porque puede usar diferentes compresores y filtros (programas que generalmente mejoran la relación de compresión). En cualquier caso, también se puede llamar compresor porque sucede que ya viene con varios compresor y filtros, por lo que en realidad puede funcionar como un códec regular.
Actualmente, C-Blosc viene con el soporte de Blosclz, un compresor muy basado en Fastlz (https://ariya.github.io/fastlz/), LZ4 y LZ4HC (https://lz4.org/), Snappy (https://google.github.io/snappy/), Zlib (https://zlib.ett/) Zstandard (https://facebook.github.io/zstd/).
C-BLOSC también viene con instrucciones altamente optimizadas (pueden usar filtros SSE2 o AVX2, si están disponibles)) (para obtener información sobre cómo y por qué los trabajos barajos ver aquí). Sin embargo, se pueden agregar compresores o filtros adicionales en el futuro.
BLOSC está a cargo de coordinar los diferentes compresores y filtros para que puedan aprovechar la técnica de bloqueo, así como la ejecución de subprocesos múltiples (si hay varios núcleos disponibles) automáticamente. Eso hace que cada códec y filtro funcione a velocidades muy altas, incluso si no se diseñó inicialmente para hacer bloqueo o múltiples subprocesos.
Finalmente, C-BLOSC es especialmente adecuado para tratar con datos binarios porque puede aprovechar la metaceformación de tipo de tipo para una relación de compresión mejorada utilizando los filtros integrados de barras y bitshuffle.
Cuando se toman en conjunto, todas estas características se diferencian de otras bibliotecas de compresión.
BLOSC se puede construir, probar e instalar con CMake_. El siguiente procedimiento describe la construcción "fuera de fuente".
$ cd c-blosc
$ mkdir build
$ cd buildAhora ejecute la configuración de CMake y opcionalmente especifique el directorio de instalación (EG '/usr' o '/usr/local')::
$ cmake -DCMAKE_INSTALL_PREFIX=your_install_prefix_directory ..CMake permite configurar BLOSC de muchas maneras diferentes, como preferir fuentes internas o externas para compresores o habilitarlos/deshabilitarlos. Tenga en cuenta que la configuración también se puede realizar utilizando herramientas de interfaz de usuario proporcionadas por CMake (CCmake o CMake-Gui):
$ ccmake .. # run a curses-based interface
$ cmake-gui .. # run a graphical interfaceConstruir, probar e instalar BLOSC:
$ cmake --build .
$ ctest
$ cmake --build . --target installLa versión estática y dinámica de la biblioteca BLOSC, junto con los archivos de encabezado, se instalará en el CMAKE_INSTALL_PREFIX especificado.
C-BLOSC viene con fuentes completas para LZ4, LZ4HC, Snappy, ZLIB y ZSTD y, en general, no debe preocuparse por no tener (o CMake no encontrar) las bibliotecas en su sistema porque, de manera predeterminada, las fuentes incluidas se compilarán e incluirán automáticamente en la biblioteca C-Glosc. Esto significa efectivamente que puede confiar en tener un soporte completo para todos los códecs en todas las implementaciones de BLOSC (a menos que excluya explícitamente el soporte para algunos de ellos).
Pero en caso de que desee obligar a BLOSC a usar bibliotecas de códec externos en lugar de las fuentes incluidas, puede hacerlo:
$ cmake -DPREFER_EXTERNAL_ZSTD=ON ..También puede deshabilitar el soporte para algunas bibliotecas de compresión:
$ cmake -DDEACTIVATE_SNAPPY=ON .. # in case you don't have a C++ compiler En los ejemplos/ directorio, puede encontrar pistas sobre cómo usar BLOSC dentro de su aplicación.
BLOSC está destinado a admitir todas las plataformas donde se puede encontrar un compilador C C89 compatible con C89. Los que se prueban principalmente son Intel (Linux, Mac OSX y Windows) y ARM (Linux), pero se informa que los exóticos como el procesador "A2" IBM Gene Q integrado también funcionan.
Si se encuentra con problemas de compilación cuando usa Mac OSX, asegúrese de haber instalado las herramientas de desarrollador de línea de comandos. Siempre puedes instalarlos con:
$ xcode-select --install Blosc tiene un envoltorio oficial para Python. Ver:
https://github.com/blosc/python-losc
BLOSC se puede usar desde la línea de comandos usando Bloscpack. Ver:
https://github.com/blosc/bloscpack
Para aquellos que desean usar BLOSC como filtro en la biblioteca HDF5, hay una implementación de muestra en el proyecto HDF5-BLOSC en:
https://github.com/blosc/hdf5-losc
Hay una lista de correo oficial para BLOSC en:
[email protected] https://groups.google.com/g/blosc
Ver gracias. Primero.
¡Disfruta de los datos!