[li]What is the difference between TProcessExecutor and PROOF? TProcessExecutor looks like a wrapper of MPI.[/li]
[li]TProcessExecutor(TFileCollection, TSelector, “T/data”) give me error "cannot find tree name ". Why?
T is directory, data is tree name. But it can be found by TChain.[/li]
[li]And how to pass parameters to TSelector for TProcessExecutor like TProof?[/li][/ol]
Thanks in advanced.
TProcessExecutor uses fork to create the workers in the moment their are needed so that the environment is automatically the setup to the one of the parent process. The interface has been designed following the ideas of the python multiprocessing module, providing a Map(…) interface to execute a set of tasks in parallel, and adding an optional Reduce(…) interface to merge the results. TProcessExecutor is intended to replace and extend ProofLite for multicore machines.
[quote=“gjzeus”]TProcessExecutor(TFileCollection, TSelector, “T/data”) give me error "cannot find tree name ". Why?
T is directory, data is tree name. But it can be found by TChain.[/quote]
This must be a bug, I will have a look. TSelector support was the last addition.
[quote=“gjzeus”]And how to pass parameters to TSelector for TProcessExecutor like TProof?
You should setup the selector before calling TProcessExecutor::ProcTree(TFileCollection &, TSelector &, …): all the settings are automatically taken by the workers. If you were using the input list in PROOF, the input list is directly accessible in TSelector via the GetInputList method.
Please note that, as indicated by the fact that the TProcessExecutor header is under ROOT/, this interface is still experimental and subject to optimizations and requiring consolidation.
Some examples of usage are available under tutorials/multicore/mp_…
Many thanks. I test the TProcessExecutor just after seeing the tutorials/multicore/mp*. Never notice it’s on the experimental stage. But it looks pretty cool. I will keep both version on my laptop in case new root comes out.