How does cling::DynamicLibraryManager::loadLibrary() work?


_ROOT Version: 6.14.04-x86_64-slc6-gcc62-opt
Platform: Not Provided
Compiler: Not Provided


Dear experts,

I’m trying to run (on lxplus) in parallel my code on HTCondor batch, but I found the following problem:

Info in <ACLiC>: script has already been loaded in interpreted mode
Info in <ACLiC>: unloading MonoJetParameters.h and compiling it
Info in <TUnixSystem::ACLiC>: creating shared library /pool/condor/dir_6626/MonoJetParameters_h.so
Opening connections to workers: OK (8 workers)
Setting up worker servers: OK (8 workers)
Info in <ACLiC&>: unmodified script has already been compiled and loaded
Info in <TProofLite::SetQueryRunning>: starting query: 1
Info in <TProofQueryResult::SetRunning>: nwrks: 8
cling::DynamicLibraryManager::loadLibrary(): /pool/condor/dir_10602/MonoJetParameters_h.so: cannot open shared object file: No such file or directory

I should also mention that I’m using PROOF for running my Selector. I don’t have problems if I run on 1 queue, but if I want to parallelize the jobs I got the error above. What it is strange to me is that although this job run on
/pool/condor/dir_6626/ the system looks for a library in /pool/condor/dir_10602/, where (I suppose) the first compilation of all jobs sent in parallel succeded (see below):

Info in <ACLiC>: script has already been loaded in interpreted mode
Info in <ACLiC>: unloading MonoJetParameters.h and compiling it
Info in <TUnixSystem::ACLiC>: creating shared library /pool/condor/dir_10602/MonoJetParameters_h.so
Opening connections to workers: OK (8 workers)
Setting up worker servers: OK (8 workers)
Info in <ACLiC>: unmodified script has already been compiled and loaded
Info in <TProofLite::SetQueryRunning>: starting query: 1
Info in <TProofQueryResult::SetRunning>: nwrks: 8
Info in <TUnixSystem::ACLiC>: creating shared library /pool/condor/dir_10602/./MonoJetReaderSyst_C.so

The compilation of MonoJetParameters class is performed at the beginning of my running macro in this way

R__LOAD_LIBRARY(MonoJetParameters.h+)

I also tried with

R__LOAD_LIBRARY(MonoJetParameters.h++)

without success.

How can I force the compiler to recreate the library in the running directory?
Do you have any suggestions?

Thanks for the help.

Best regards,
Francesco

Hi Francesco,

R__LOAD_LIBRARY is not there to build libraries but to load already compiled ones at parsing time.
The problem here is that the program cannot load the library MonoJetParameters_h.so since it does not find it: this looks like an issue in which you are configuring your paths.

Cheers,
P

Thanks for the reply. I always compile my code in the macro, by using

//Processing sample Znunu
 fProof_Znunu->Load("MonoJetParameters.h+");
 fProof_Znunu->Process(dset_Znunu,"MonoJetReader.C+");

Why the compiler should look for a library in an another path if I request again the compilation?

Best regards,
Francesco

Hi,

Not sure.
What happens if you include the header in the macro? You can get rid of some complexity, I think.

Cheers,
P

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.