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 why configure does not include my wrapper)


On Thu, Aug 29, 2019 at 1:28 PM Matthew Knepley <knep...@gmail.com> wrote:

> On Thu, Aug 29, 2019 at 4:02 PM Sam Guo <sam....@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 <knep...@gmail.com>
>> wrote:
>>
>>> On Thu, Aug 29, 2019 at 3:33 PM Sam Guo via petsc-users <
>>> petsc-users@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/>
>

Reply via email to