DOMANDA Comprimere e decomprimere con bsc (block sorting compressor)

Curious

Utente Attivo
172
16
Proprio ieri mi sono chiesto se la mia GPU nVidia potesse partecipare al processo di compressione e decompressione e con una breve ricerca su internet ho scoperto bsc, block sorting compressor, che può comprimere anche con l'aiuto dei CUDA core della GPU nVidia. Dal sito del progetto ho scaricato un piccolo archivio ed ho fatto qualche test con risultati veramente molto soddisfacenti se paragonati a quelli di 7-Zip. Ora che ho imparato un po' ad usarlo ho un paio di domande e dato che non ho trovato un forum dedicato ad esso chiedo qui nella speranza che qualcuno sappia rispondermi.

Innanzitutto, si tratta di un programma da lanciare tramite Prompt dei comandi di Windows perché privo di GUI e questo è piuttosto scomodo perché ho l'impressione che se volessi comprimere più file in una volta sola non potrei farlo, dovrei invece ripetere lo stesso passaggio una volta per ogni file. Qualcuno nel forum conosce il programma e sa dirmi se davvero non è possibile comprimere più file alla volta, od ancor meglio una cartella intera, in un archivio come fa 7-Zip? Sotto riporto le poche informazioni che il programma stesso fornisce all'avvio, dalle quali a parer mio non si evince questa possibilità ma magari non le ho ben interpretate e qualcuno più esperto leggendole saprà indicarmi come fare, se possibile farlo.

Non ho ben capito se bisogna scaricare qualche altro software per far funzionare al meglio il tutto. Nel sito summenzionato parla della libreria libbsc ad esempio. Finora ho utilizzato solo quel che ho scaricato dal sito e non ho ricevuto messaggi di errore del tipo file mancante o cose simili, quindi suppongo che tale libreria sia inclusa nel download, ma non sono sicuro.

Le migliori combinazioni di opzioni per comprimere con CPU+GPU e sola CPU che ho trovato facendo un po' di prove sono rispettivamente:
Codice:
C:\Users\Curious\Documents\"bsc (libbsc)"\"Nuova cartella"\bsc.exe e C:\Users\Curious\Desktop\a.mov C:\Users\Curious\Desktop\b.bsc -b79 -m8 -e2 -l -G
C:\Users\Curious\Documents\"bsc (libbsc)"\"Nuova cartella"\bsc.exe e C:\Users\Curious\Desktop\a.mov C:\Users\Curious\Desktop\b.bsc -b1020 -m0 -e2 -l -H17
So che i valori dei parametri sono influenzati dal proprio hardware, quel che vorrei sapere è se due o più opzioni che ho inserito assieme confliggono e se alcune opzioni che invece non ho inserito avrebbero giovato.
Non essendo molto ferrato in materia ho ottenuto queste combinazioni facendo alcune prove e non ho testato tutte le combinazioni possibili perché sarebbero davvero troppe. Qualcuno sa dirmi se non è molto sensata la combinazione di opzioni che ho scelto? Con essa sono riuscito a ridurre la dimensione di un file MOV da 900+ MB ad un terzo impiegando una trentina abbondante di secondi mentre 7-Zip questi risultati se li sogna quindi è già un grande passo avanti ma magari si può fare meglio.
In particolare, come andrebbero combinate le opzioni (il programma stesso indica questa possibilità)?

Per decomprimere un file bisogna utilizzare lo stesso comando usato per la compressione ma col parametro d al posto di e? O le opzioni presenti nel comando per la compressione sono superflue per quello per la decompressione? Io ho decompresso semplicemente sostituendo d ad e ma ho visto che la GPU non lavora anche se durante la compressione lavorava. Qualcuno sa come funziona di preciso?

Microsoft Windows [Versione 6.3.9600]
(c) 2013 Microsoft Corporation. Tutti i diritti riservati.


C:\Users\Curious>C:\Users\Curious\Documents"bsc (libbsc)""Nuova cartella"\bsc.exe
This is bsc, Block Sorting Compressor. Version 3.1.0. 8 July 2012.
Copyright (c) 2009-2012 Ilya Grebnov <Ilya.Grebnov@gmail.com>.


Usage: bsc <e|d> inputfile outputfile <options>


Block sorting options:
-b<size> Block size in megabytes, default: -b25
minimum: -b1, maximum: -b1024
-m<algo> Block sorting algorithm, default: -m0
-m0 Burrows Wheeler Transform (default)
-m3..8 Sort Transform of order n
-c<ctx> Contexts for sorting, default: -cf
-cf Following contexts (default)
-cp Preceding contexts
-ca Autodetect (experimental)
-e<algo> Entropy encoding algorithm, default: -e1
-e1 Static Quantized Local Frequency Coding (default)
-e2 Adaptive Quantized Local Frequency Coding (best compression)


Preprocessing options:
-p Disable all preprocessing techniques
-s Enable segmentation (adaptive block size), default: disable
-r Enable structured data reordering, default: disable
-l Enable Lempel-Ziv preprocessing, default: enable
-H<size> LZP dictionary size in bits, default: -H16
minimum: -H10, maximum: -H28
-M<size> LZP minimum match length, default: -M128
minimum: -M4, maximum: -M255


Platform specific options:
-G Enable Sort Transform acceleration on NVIDIA GPU, default: disable
-P Enable large 2MB RAM pages, default: disable
-t Disable parallel blocks processing, default: enable
-T Disable multi-core systems support, default: enable


Options may be combined into one, like -b128p -m5e1
 
Ultima modifica:

Curious

Utente Attivo
172
16
Dopo diverso tempo ho ripreso in mano questo programma, chiarito alcuni dubbi e trovato una migliore combinazione delle opzioni per il mio pc.

La cartella compressa che si scarica dal sito del programma contiene tutto il necessario per comprimere e decomprimere, non serve altro.
Il programma è un compressore di file, non un gestore di archivi pertanto non si possono creare cartelle compresse contenenti più file, inoltre si può elaborare un solo file alla volta.
Il programma crea un file con formato BSC ed estensione .bsc che non può essere decompresso utilizzando altri programmi.
Per decomprimere un file compresso con bsc bisogna utilizzare lo stesso comando usato per la compressione ma col parametro d al posto di e rimuovendo le opzioni utilizzate in compressione dato che non hanno alcuno effetto.
La dimensione della memoria della scheda video utilizzata se si comprime con CPU e GPU vale n*5*b dove n è il numero di core reali della CPU (non di quelli logici in caso di Hyper Threading su processore Intel ad esempio) e b è il valore che si assegna al parametro -b. Tuttavia io ho potuto eccedere un pochino (2 GB, -b110).

Tuttavia ancora non so come combinare le opzioni: nel sito del programma indica che si possono unire scrivendole senza spazi ma non so quali si possano od abbia senso combinare e quali no.

Il miglior rapporto di compressione nel più breve tempo che ho ottenuto col mio notebook utilizzando CPU e GPU (Intel Core i-7 4700QM * e Nvidia Geforce GT 740M con lieve overclock OEM, Turbo Boost 2 attivo) è stato 12% nel comprimere un file XML da 5 GB (backup di Wikipedia) in 461 MB impiegando 130 secondi con la seguente configurazione (quando l'ho scaricato era un file da 1 GB compresso con bzip2 quindi bsc ha compresso di più):
* overcloccato con Intel Extreme Tuning Utility a 3,6 GHz con un core attivo e 3,5 con due
Codice:
C:\Users\Curious\Documents\"bsc (libbsc)"\"Nuova cartella"\bsc.exe e C:\Users\Curious\Desktop\a.mov C:\Users\Curious\Desktop\b.bsc -b83 -m8 -e2 -r -G -H19
Sfruttando invece tutta la VRAM disponibile con -b110 ho guadagnato un millesimo nel rapporto di compressione pagandolo con 5 s in più di elaborazione (quindi tanto vale risparmiare memoria).
Con un file MOV da 1 GB scarso ho ottenuto prestazioni un po' meno brillanti ma comunque soddisfacenti rispetto a 7-Zip: un terzo del tempo e molto minor utilizzo di memoria rispetto ai formati zip, 7z ed xz con algoritmo LZMA (impraticabile invece LZMA2 per il consumo smodato di RAM).
La compressione con sola CPU offre un migliore rapporto di compressione ma è paragonabile a 7-Zip in quanto a tempi quindi decisamente più lenta di CPU+GPU.

Su questo sito trovate diversi test con schede grafiche più potenti della mia che offrono prestazioni decisamente migliori: 1 GB compresso del 20% in meno di 10 sec.
 
Ultima modifica:

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!