[petsc-users] Solver compilation with 64-bit version of PETSc under Windows 10 using Cygwin
Matthew Knepley
knepley at gmail.com
Wed Jan 15 13:20:39 CST 2020
On Wed, Jan 15, 2020 at 2:15 PM Balay, Satish <balay at mcs.anl.gov> wrote:
> On Wed, 15 Jan 2020, Matthew Knepley wrote:
>
> > On Wed, Jan 15, 2020 at 10:26 AM Дмитрий Мельничук <
> > dmitry.melnichuk at geosteertech.com> wrote:
> >
> > > > And I'm not sure why you are having to use PetscInt for ierr. All
> PETSc
> > > routines should be suing 'PetscErrorCode for ierr'
> > >
> > > If I define *ierr *as *PetscErrorCode *for all subroutines given below
> > >
> > > call VecDuplicate(Vec_U,Vec_Um,ierr)
> > > call VecCopy(Vec_U,Vec_Um,ierr)
> > > call VecGetLocalSize(Vec_U,j,ierr)
> > > call VecGetOwnershipRange(Vec_U,j1,j2,ierr)
> > >
> > > then errors occur with first three subroutines:
> > > *Error: Type mismatch in argument «z» at (1); passed INTEGER(4) to
> > > INTEGER(8).*
> > >
> >
> > Barry,
> >
> > It looks like the ftn-auto interfaces are using 'integer' for the error
> > code, whereas the ftn-custom is using PetscErrorCode.
> > Could we make the generated ones use integer?
>
> Well it needs a fix to bfort. But then there are a bunch of other issues
> wrt MPI - its not clear [to me] how to fix [wrt -fdefault-integer-8]
>
Well, we could conversely just change the ftn-custom bindings to 'integer'
for the error code.
Thanks,
Matt
> Satish
>
> >
> > Thanks,
> >
> > Matt
> >
> >
> > > Therefore I was forced to define *ierr *as *PetscInt *for VecDuplicate,
> > > VecCopy, VecGetLocalSize subroutines to fix these errors.
> > > Why some subroutines sue 8-bytes integer type of *ierr *(*PetscInt*),
> > > while others - 4-bytes integer type of *ierr *(*PetscErrorCode*)
> remains
> > > a mystery for me.
> > >
> > > > What version of PETSc are you using?
> > >
> > > version 3.12.2
> > >
> > > > Are you seeing this issue with a PETSc example?
> > >
> > > I will check it tomorrow and let you know.
> > >
> > > Kind regards,
> > > Dmitry Melnichuk
> > >
> > >
> > >
> > > 15.01.2020, 17:14, "Balay, Satish" <balay at mcs.anl.gov>:
> > >
> > > -fdefault-integer-8 is likely to break things [esp with MPI - where
> > > 'integer' is used everywhere for ex - MPI_Comm etc - so MPI includes
> become
> > > incompatible with the MPI library with -fdefault-integer-8.]
> > >
> > > And I'm not sure why you are having to use PetscInt for ierr. All PETSc
> > > routines should be suing 'PetscErrorCode for ierr'
> > >
> > > What version of PETSc are you using? Are you seeing this issue with a
> > > PETSc example?
> > >
> > > Satish
> > >
> > > On Wed, 15 Jan 2020, Дмитрий Мельничук wrote:
> > >
> > >
> > > Hello all!
> > > At present time I need to compile solver called Defmod (
> > > https://bitbucket.org/stali/defmod/wiki/Home), which is written in
> > > Fortran 95.
> > > Defmod uses PETSc for solving linear algebra system.
> > > Solver compilation with 32-bit version of PETSc does not cause any
> > > problem.
> > > But solver compilation with 64-bit version of PETSc produces an error
> > > with size of ierr PETSc variable.
> > >
> > > 1. For example, consider the following statements written in Fortran:
> > >
> > >
> > > PetscErrorCode :: ierr_m
> > > PetscInt :: ierr
> > > ...
> > > ...
> > > call VecDuplicate(Vec_U,Vec_Um,ierr)
> > > call VecCopy(Vec_U,Vec_Um,ierr)
> > > call VecGetLocalSize(Vec_U,j,ierr)
> > > call VecGetOwnershipRange(Vec_U,j1,j2,ierr_m)
> > >
> > >
> > > As can be seen first three subroutunes require ierr to be size
> > > of INTEGER(8), while the last subroutine (VecGetOwnershipRange)
> > > requires ierr to be size of INTEGER(4).
> > > Using the same integer format gives an error:
> > >
> > > There is no specific subroutine for the generic
> ‘vecgetownershiprange’ at
> > > (1)
> > >
> > > 2. Another example is:
> > >
> > >
> > > call MatAssemblyBegin(Mat_K,Mat_Final_Assembly,ierr)
> > > CHKERRA(ierr)
> > > call MatAssemblyEnd(Mat_K,Mat_Final_Assembly,ierr)
> > >
> > >
> > > I am not able to define an appropriate size if ierr in CHKERRA(ierr).
> If
> > > I choose INTEGER(8), the error "Type mismatch in argument ‘ierr’ at
> (1);
> > > passed INTEGER(8) to
> > > INTEGER(4)" occurs.
> > > If I define ierr as INTEGER(4), the error "Type mismatch in argument
> > > ‘ierr’ at (1); passed INTEGER(4) to INTEGER(8)" appears.
> > >
> > > 3. If I change the sizes of ierr vaiables as error messages require,
> the
> > > compilation completed successfully, but an error occurs when
> calculating
> > > the RHS vector with
> > > following message:
> > > [0]PETSC ERROR: Out of range index value -4 cannot be negative
> > >
> > >
> > > Command to configure 32-bit version of PETSc under Windows 10 using
> > > Cygwin:
> > > ./configure --with-cc=x86_64-w64-mingw32-gcc
> > > --with-cxx=x86_64-w64-mingw32-g++ --with-fc=x86_64-w64-mingw32-gfortran
> > > --download-fblaslapack
> > > --with-mpi-include=/cygdrive/c/MPISDK/Include
> > > --with-mpi-lib=/cygdrive/c/MPISDK/Lib/libmsmpi.a
> > > --with-mpi-mpiexec=/cygdrive/c/MPI/Bin/mpiexec.exe --with-debugging=yes
> > > -CFLAGS='-O2' -CXXFLAGS='-O2' -FFLAGS='-O2 -static-libgfortran -static
> > > -lpthread -fno-range-check' --with-shared-libraries=no
> > > Command to configure 64-bit version of PETSc under Windows 10 using
> > > Cygwin:./configure --with-cc=x86_64-w64-mingw32-gcc
> > > --with-cxx=x86_64-w64-mingw32-g++
> > > --with-fc=x86_64-w64-mingw32-gfortran --download-fblaslapack
> > > --with-mpi-include=/cygdrive/c/MPISDK/Include
> > > --with-mpi-lib=/cygdrive/c/MPISDK/Lib/libmsmpi.a
> > > --with-mpi-mpiexec=/cygdrive/c/MPI/Bin/mpiexec.exe
> --with-debugging=yes
> > > -CFLAGS='-O2' -CXXFLAGS='-O2' -FFLAGS='-O2 -static-libgfortran -static
> > > -lpthread -fno-range-check
> > > -fdefault-integer-8' --with-shared-libraries=no --with-64-bit-indices
> > > --known-64-bit-blas-indices
> > >
> > >
> > > Kind regards,
> > > Dmitry Melnichuk
> > >
> > >
> > >
> > >
> >
> >
>
--
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/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20200115/a7f61c43/attachment.html>
More information about the petsc-users
mailing list