I found references to parallel unzipping online, and tried to get a speedup that way, but it looks like the unzipping is still single-threaded. My test code and output are below. Am I missing something?
> ./parallelunzip /dune/data/users/rodriges/CCInclusiveReco-merged-minervame1ABCD.root 1
parallel unzip? 1
[...]
real time 8.0s, cpu time 8.0s = 100% cpu```
___
_ROOT Version:_ 6.16.00
_Platform:_ Linux
_Compiler:_ Not Provided
___
Ah yes, I forgot to include that. Here’s the result of five runs without parallel unzipping, followed by five runs with parallel unzipping:
parallel 0
real time 7.8s, cpu time 7.8s = 99% cpu
real time 7.7s, cpu time 7.7s = 99% cpu
real time 8.3s, cpu time 8.2s = 99% cpu
real time 8.0s, cpu time 7.9s = 99% cpu
real time 8.1s, cpu time 8.0s = 99% cpu
parallel 1
real time 8.4s, cpu time 8.4s = 100% cpu
real time 8.2s, cpu time 8.2s = 100% cpu
real time 8.6s, cpu time 8.6s = 100% cpu
real time 8.1s, cpu time 8.1s = 99% cpu
real time 8.5s, cpu time 8.5s = 100% cpu
The time is about the same. The thing I don’t understand is why the CPU never goes above 100% for the parallel unzipping: that looks symptomatic of not multithreading at all.
rootsrv1:2019-par-unzip pcanal$ ./parunzip Event4.root 0
parallel unzip? 0
Warning in <TClass::Init>: no dictionary for class Event is available
Warning in <TClass::Init>: no dictionary for class EventHeader is available
Warning in <TClass::Init>: no dictionary for class Track is available
0k
real time 13.6s, cpu time 13.6s = 100% cpu
rootsrv1:2019-par-unzip pcanal$ ./parunzip Event4.root 1
parallel unzip? 1
Warning in <TClass::Init>: no dictionary for class Event is available
Warning in <TClass::Init>: no dictionary for class EventHeader is available
Warning in <TClass::Init>: no dictionary for class Track is available
0k
real time 9.3s, cpu time 18.9s = 203% cpu