[petsc-users] petsc on windows

Balay, Satish balay at mcs.anl.gov
Thu Aug 29 17:28:25 CDT 2019


On Thu, 29 Aug 2019, Sam Guo via petsc-users wrote:

> I can link when I add my wrapper to
> PCC_LINKER_FLAGS =    -MD -wd4996 -Z7
> /home/xianzhongg/dev/star/lib/win64/intel18.3vc14/lib/StarMpiWrapper.lib

I don't understand what you mean here. Add PCC_LINKER_FLAGS to where? This is a variable in configure generated makefile 

Since PETSc is not built [as configure failed] - there should be no configure generated makefiles.

> (I don't understand why configure does not include my wrapper)

Well the compiler gives the error below. Can you try to compile
manually [i.e without PETSc or any petsc makefiles] a simple MPI code
- say cpi.c from MPICH and see if it works?  [and copy/paste the log
from this compile attempt.

Satish

> 
> 
> On Thu, Aug 29, 2019 at 1:28 PM Matthew Knepley <knepley at gmail.com> wrote:
> 
> > On Thu, Aug 29, 2019 at 4:02 PM Sam Guo <sam.guo at cd-adapco.com> wrote:
> >
> >> Thanks for the quick response. Attached please find the configure.log
> >> containing the configure error.
> >>
> >
> > Executing: /home/xianzhongg/petsc-3.11.3/lib/petsc/bin/win32fe/win32fe cl
> > -c -o /tmp/petsc-6DsCEk/config.libraries/conftest.o
> > -I/tmp/petsc-6DsCEk/config.compilers
> > -I/tmp/petsc-6DsCEk/config.setCompilers
> > -I/tmp/petsc-6DsCEk/config.utilities.closure
> > -I/tmp/petsc-6DsCEk/config.headers
> > -I/tmp/petsc-6DsCEk/config.utilities.cacheDetails
> > -I/tmp/petsc-6DsCEk/config.types -I/tmp/petsc-6DsCEk/config.atomics
> > -I/tmp/petsc-6DsCEk/config.functions
> > -I/tmp/petsc-6DsCEk/config.utilities.featureTestMacros
> > -I/tmp/petsc-6DsCEk/config.utilities.missing
> > -I/tmp/petsc-6DsCEk/PETSc.options.scalarTypes
> > -I/tmp/petsc-6DsCEk/config.libraries  -MD -wd4996 -Z7
> >  /tmp/petsc-6DsCEk/config.libraries/conftest.c
> > stdout: conftest.c
> > Successful compile:
> > Source:
> > #include "confdefs.h"
> > #include "conffix.h"
> > /* Override any gcc2 internal prototype to avoid an error. */
> > char MPI_Init();
> > static void _check_MPI_Init() { MPI_Init(); }
> > char MPI_Comm_create();
> > static void _check_MPI_Comm_create() { MPI_Comm_create(); }
> >
> > int main() {
> > _check_MPI_Init();
> > _check_MPI_Comm_create();;
> >   return 0;
> > }
> > Executing: /home/xianzhongg/petsc-3.11.3/lib/petsc/bin/win32fe/win32fe cl
> >  -o /tmp/petsc-6DsCEk/config.libraries/conftest.exe    -MD -wd4996 -Z7
> > /tmp/petsc-6DsCEk/config.libraries/conftest.o
> >  /home/xianzhongg/dev/star/lib/win64/intel18.3vc14/lib/StarMpiWrapper.lib
> > Ws2_32.lib
> > stdout:
> > LINK : C:\cygwin64\tmp\PE81BA~1\CONFIG~1.LIB\conftest.exe not found or not
> > built by the last incremental link; performing full link
> > conftest.obj : error LNK2019: unresolved external symbol MPI_Init
> > referenced in function _check_MPI_Init
> > conftest.obj : error LNK2019: unresolved external symbol MPI_Comm_create
> > referenced in function _check_MPI_Comm_create
> > C:\cygwin64\tmp\PE81BA~1\CONFIG~1.LIB\conftest.exe : fatal error LNK1120:
> > 2 unresolved externals
> > Possible ERROR while running linker: exit code 2
> > stdout:
> > LINK : C:\cygwin64\tmp\PE81BA~1\CONFIG~1.LIB\conftest.exe not found or not
> > built by the last incremental link; performing full link
> > conftest.obj : error LNK2019: unresolved external symbol MPI_Init
> > referenced in function _check_MPI_Init
> > conftest.obj : error LNK2019: unresolved external symbol MPI_Comm_create
> > referenced in function _check_MPI_Comm_create
> > C:\cygwin64\tmp\PE81BA~1\CONFIG~1.LIB\conftest.exe : fatal error LNK1120:
> > 2 unresolved externals
> >
> > The link is definitely failing. Does it work if you do it by hand?
> >
> >   Thanks,
> >
> >      Matt
> >
> >
> >> Regarding our dup, our wrapper does support it. In fact, everything works
> >> fine on Linux. I suspect on windows, PETSc picks the system mpi.h somehow.
> >> I am investigating it.
> >>
> >> Thanks,
> >> Sam
> >>
> >> On Thu, Aug 29, 2019 at 3:39 PM Matthew Knepley <knepley at gmail.com>
> >> wrote:
> >>
> >>> On Thu, Aug 29, 2019 at 3:33 PM Sam Guo via petsc-users <
> >>> petsc-users at mcs.anl.gov> wrote:
> >>>
> >>>> Dear PETSc dev team,
> >>>>    I am looking some tips porting petsc to windows. We have our mpi
> >>>> wrapper (so we can switch different mpi). I configure petsc using
> >>>> --with-mpi-lib and --with-mpi-include
> >>>>  ./configure --with-cc="win32fe cl" --with-fc=0
> >>>> --download-f2cblaslapack
> >>>> --with-mpi-lib=/home/xianzhongg/dev/star/lib/win64/intel18.3vc14/lib/StarMpiWrapper.lib
> >>>> --with-mpi-include=/home/xianzhongg/dev/star/base/src/mpi/include
> >>>> --with-shared-libaries=1
> >>>>
> >>>> But I got error
> >>>>
> >>>> ===============================================================================
> >>>>              Configuring PETSc to compile on your system
> >>>>
> >>>> ===============================================================================
> >>>> TESTING: check from
> >>>> config.libraries(config/BuildSystem/config/libraries.py:154)
> >>>> *******************************************************************************
> >>>>          UNABLE to CONFIGURE with GIVEN OPTIONS    (see configure.log
> >>>> for details):
> >>>>
> >>>> -------------------------------------------------------------------------------
> >>>> --with-mpi-lib=['/home/xianzhongg/dev/star/lib/win64/intel18.3vc14/lib/StarMpiWrapper.lib']
> >>>> and
> >>>> --with-mpi-include=['/home/xianzhongg/dev/star/base/src/mpi/include']
> >>>> did not work
> >>>>
> >>>> *******************************************************************************
> >>>>
> >>>
> >>> Your MPI wrapper should pass the tests here. Send the configure.log
> >>>
> >>>
> >>>> To fix the configuration error,  in
> >>>> config/BuildSystem/config/package.py, I removed
> >>>>  self.executeTest(self.checkDependencies)
> >>>>  self.executeTest(self.configureLibrary)
> >>>>  self.executeTest(self.checkSharedLibrary)
> >>>>
> >>>> To link, I add my mpi wrapper
> >>>> to ${PTESTC_ARCH}/lib/petsc/conf/petscvariables:
> >>>> PCC_LINKER_FLAGS =    -MD -wd4996 -Z7
> >>>> /home/xianzhongg/dev/star/lib/win64/intel18.3vc14/lib/StarMpiWrapper.lib
> >>>>
> >>>> I got libpetstc.dll and libpetstc.lib. When I try to test it inside our
> >>>> code, PETSc somehow crates a duplicate of communicator with only 1 MPI
> >>>> process and PETSC_COMM_WORLD is set to 2. If I set PETSC_COMM_WORLD to 1
> >>>> (our MPI_COMM_WORLD), PETSc is hanging.
> >>>>
> >>>
> >>> We do dup the communicator on entry. Shouldn't that be supported by your
> >>> wrapper?
> >>>
> >>>   Thanks,
> >>>
> >>>      Matt
> >>>
> >>>
> >>>> I am wondering if you could give me some tips how to debug this problem.
> >>>>
> >>>> BR,
> >>>> Sam
> >>>>
> >>>
> >>>
> >>> --
> >>> What most experimenters take for granted before they begin their
> >>> experiments is infinitely more interesting than any results to which their
> >>> experiments lead.
> >>> -- Norbert Wiener
> >>>
> >>> https://www.cse.buffalo.edu/~knepley/
> >>> <http://www.cse.buffalo.edu/~knepley/>
> >>>
> >>
> >
> > --
> > What most experimenters take for granted before they begin their
> > experiments is infinitely more interesting than any results to which their
> > experiments lead.
> > -- Norbert Wiener
> >
> > https://www.cse.buffalo.edu/~knepley/
> > <http://www.cse.buffalo.edu/~knepley/>
> >
> 



More information about the petsc-users mailing list