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 <[email protected]> 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 <[email protected]> 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 <[email protected]> >> wrote: >> > >> > > On Thu, Aug 29, 2019 at 4:02 PM Sam Guo <[email protected]> >> 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 <[email protected]> >> > >> wrote: >> > >> >> > >>> On Thu, Aug 29, 2019 at 3:33 PM Sam Guo via petsc-users < >> > >>> [email protected]> 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/> >> > > >> > >> >>
