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

Reply via email to