[petsc-users] petsc on windows
Balay, Satish
balay at mcs.anl.gov
Thu Aug 29 19:51:47 CDT 2019
On MS-Windows - you need the location of the DLLs in PATH
Or use --with-shared-libraries=0
Satish
On Thu, 29 Aug 2019, Sam Guo via petsc-users wrote:
> When I use intel mpi, configuration, compile and test all work fine but I
> cannot use dll in my application.
>
> On Thu, Aug 29, 2019 at 3:46 PM Sam Guo <sam.guo at cd-adapco.com> wrote:
>
> > After I removed following lines inin config/BuildSystem/config/package.py,
> > configuration finished without error.
> > self.executeTest(self.checkDependencies)
> > self.executeTest(self.configureLibrary)
> > self.executeTest(self.checkSharedLibrary)
> >
> > I then 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
> >
> > On Thu, Aug 29, 2019 at 3:28 PM Balay, Satish <balay at mcs.anl.gov> wrote:
> >
> >> 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