Re: [petsc-dev] --known-mpi-shared-library and --with-batch annoyance
On 20 April 2016 at 22:09, Barry Smith <[email protected]> wrote:
When running with --batch one must provide the flag --known-mpi-shared-library this is annoying since no one will know this
I am trying to understand the purpose of this flag. It is used in MPI.py in the code
def checkSharedLibrary(self): '''Sets flag indicating if MPI libraries are shared or not and determines if MPI libraries CANNOT be used by shared libraries''' self.executeTest(self.configureMPIEXEC) try: self.shared = self.libraries.checkShared('#include <mpi.h>\n','MPI_Init','MPI_Initialized','MPI_Finalize',checkLink = self.checkPackageLink,libraries = self.lib, defaultArg = 'known-mpi-shared-libraries', executor = self.mpiexec) except RuntimeError, e: if self.argDB['with-shared-libraries']: raise RuntimeError('Shared libraries cannot be built using MPI provided.\nEither rebuild with --with-shared-libraries=0 or rebuild MPI with shared library support') self.logPrint('MPI libraries cannot be used with shared libraries') self.shared = 0 return
It looks to me like the code says that if MPI is not a shared library then you cannot build PETSc with a shared library.
I don't get what checkShared() is trying to do.
1) Is this true? What if MPI was built with PIC but static, won't it still be possible to use it with a PETSc shared library? i.e. is this even the right test?
If MPI is static but PIC, for sure you can build a shared PETSc.
2) Is there any way to get rid of this flag or will there be cases were configure goes through with success and accepts using shared libraries but then the build fails with unable to make the PETSc shared library?
To check if you can build a PETSc shared with an MPI static, you just need to create a shared library with some routine calling eg. MPI_Init()/Finalize(), not run any code (so the --batch flag is irrelevant). If MPI is static but not PIC, and you attempt to build any shared lib, most likely you will get a linker error, no need to run any executable. -- Lisandro Dalcin ============ Research Scientist Computer, Electrical and Mathematical Sciences & Engineering (CEMSE) Extreme Computing Research Center (ECRC) King Abdullah University of Science and Technology (KAUST) http://ecrc.kaust.edu.sa/ 4700 King Abdullah University of Science and Technology al-Khawarizmi Bldg (Bldg 1), Office # 0109 Thuwal 23955-6900, Kingdom of Saudi Arabia http://www.kaust.edu.sa Office Phone: +966 12 808-0459
participants (1)
-
Lisandro Dalcin