[petsc-users] Fortran example for PETSc global to natural ordering test
Matthew Knepley
knepley at gmail.com
Tue Dec 4 13:06:18 CST 2018
On Mon, Dec 3, 2018 at 8:32 PM Danyang Su <danyang.su at gmail.com> wrote:
> Hi Matt,
>
> Attached is the test example with source code, makefile, data and screen
> output I wrote this afternoon. This example reads 2D mesh from vtk file and
> then distribute over all processors. I can get correct global order of
> local nodes after distribution, but the natural order of local nodes is
> always zero after using DMPlexGlobalToNaturalBegin/End(). Sounds like it
> does not take effect.
>
> Would you mind helping me to check/test this code at you most convenience?
>
> On 2 procs, I get an SEGV
rank 1 local nodes with ghost 47 local cells with ghost 75
rank 0 local nodes with ghost 52 local cells with ghost 78
[1]PETSC ERROR:
------------------------------------------------------------------------
[1]PETSC ERROR: Caught signal number 11 SEGV: Segmentation Violation,
probably memory access out of range
[1]PETSC ERROR: Try option -start_in_debugger or -on_error_attach_debugger
[1]PETSC ERROR: or see
http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind
[1]PETSC ERROR: or try http://valgrind.org on GNU/linux and Apple Mac OS X
to find memory corruption errors
[1]PETSC ERROR: likely location of problem given in stack below
[1]PETSC ERROR: --------------------- Stack Frames
------------------------------------
[1]PETSC ERROR: Note: The EXACT line numbers in the stack are not available,
[1]PETSC ERROR: INSTEAD the line number of the start of the function
[1]PETSC ERROR: is given.
[1]PETSC ERROR: --------------------- Error Message
--------------------------------------------------------------
[1]PETSC ERROR: Signal received
[1]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html for
trouble shooting.
[1]PETSC ERROR: Petsc Development GIT revision: v3.9.3-1021-g8625415 GIT
Date: 2018-08-02 12:57:14 -0500
[1]PETSC ERROR: Unknown Name on a arch-master-debug named
MATTHEW-KNEPLEYs-MacBook-Air-2.local by knepley Tue Dec 4 14:00:46 2018
[1]PETSC ERROR: Configure options --PETSC_ARCH=arch-master-debug
--download-chaco
--download-cmake=/Users/knepley/Downloads/cmake-3.7.2.tar.gz
--download-ctetgen --download-eigen --download-fftw --download-hdf5
--download-med --download-metis --download-mpich --download-netcdf
--download-p4est --download-parmetis --download-pnetcdf
--download-superlu_dist --download-triangle
--with-cc="/Users/knepley/MacSoftware/bin/ccache gcc -Qunused-arguments"
--with-cxx="/Users/knepley/MacSoftware/bin/ccache g++ -Qunused-arguments"
--with-fc="/Users/knepley/MacSoftware/bin/ccache gfortran"
--with-shared-libraries
[1]PETSC ERROR: #1 User provided function() line 0 in unknown file
[0]PETSC ERROR: application called MPI_Abort(MPI_COMM_WORLD, 59) - process 1
------------------------------------------------------------------------
[0]PETSC ERROR: Caught signal number 11 SEGV: Segmentation Violation,
probably memory access out of range
[0]PETSC ERROR: Try option -start_in_debugger or -on_error_attach_debugger
[0]PETSC ERROR: or see
http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind
[0]PETSC ERROR: or try http://valgrind.org on GNU/linux and Apple Mac OS X
to find memory corruption errors
[0]PETSC ERROR: likely location of problem given in stack below
[0]PETSC ERROR: --------------------- Stack Frames
------------------------------------
[0]PETSC ERROR: Note: The EXACT line numbers in the stack are not available,
[0]PETSC ERROR: INSTEAD the line number of the start of the function
[0]PETSC ERROR: is given.
[0]PETSC ERROR: --------------------- Error Message
--------------------------------------------------------------
[0]PETSC ERROR: Signal received
[0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html for
trouble shooting.
[0]PETSC ERROR: Petsc Development GIT revision: v3.9.3-1021-g8625415 GIT
Date: 2018-08-02 12:57:14 -0500
[0]PETSC ERROR: Unknown Name on a arch-master-debug named
MATTHEW-KNEPLEYs-MacBook-Air-2.local by knepley Tue Dec 4 14:00:46 2018
[0]PETSC ERROR: Configure options --PETSC_ARCH=arch-master-debug
--download-chaco
--download-cmake=/Users/knepley/Downloads/cmake-3.7.2.tar.gz
--download-ctetgen --download-eigen --download-fftw --download-hdf5
--download-med --download-metis --download-mpich --download-netcdf
--download-p4est --download-parmetis --download-pnetcdf
--download-superlu_dist --download-triangle
--with-cc="/Users/knepley/MacSoftware/bin/ccache gcc -Qunused-arguments"
--with-cxx="/Users/knepley/MacSoftware/bin/ccache g++ -Qunused-arguments"
--with-fc="/Users/knepley/MacSoftware/bin/ccache gfortran"
--with-shared-libraries
[0]PETSC ERROR: #1 User provided function() line 0 in unknown file
application called MPI_Abort(MPI_COMM_WORLD, 59) - process 0
which valgrind says comes from DMPlexCreateSection()
rank 0 local nodes with ghost 52 local cells with ghost 78
rank 1 local nodes with ghost 47 local cells with ghost 75
==14766== Invalid write of size 4
==14766== at 0x1151A3B: dmplexcreatesection_ (zplexsectionf90.c:20)
==14766== by 0x1000042FA: MAIN__ (in ./natural)
==14766== by 0x10000497D: main (in ./natural)
==14766== Address 0x600001000 is not stack'd, malloc'd or (recently) free'd
==14766==
==14767== Invalid write of size 4
==14767== at 0x1151A3B: dmplexcreatesection_ (zplexsectionf90.c:20)
==14767== by 0x1000042FA: MAIN__ (in ./natural)
==14767== by 0x10000497D: main (in ./natural)
==14767== Address 0x600001000 is not stack'd, malloc'd or (recently) free'd
==14767==
I cannot run the debugger on it because command line arguments are not
working with
my Fortran compiler (Ugh). Do you see this error?
Thanks,
Matt
> Thanks,
>
> Danyang
> On 2018-12-03 1:12 p.m., Danyang Su wrote:
>
>
> On 2018-12-03 12:56 p.m., Matthew Knepley wrote:
>
> On Mon, Dec 3, 2018 at 3:40 PM Danyang Su <danyang.su at gmail.com> wrote:
>
>>
>> On 2018-12-03 12:03 p.m., Matthew Knepley wrote:
>>
>> On Mon, Dec 3, 2018 at 2:27 PM Danyang Su <danyang.su at gmail.com> wrote:
>>
>>> Hi Matt,
>>>
>>> Thanks.
>>>
>>> BTW: DmPlexGetVertexNumbering now can work using the latest develop
>>> version. But the index is not in natural ordering when DMSetUseNatural is
>>> called. That's why I want to use PetscSFDistributeSection to check if I
>>> miss anything in the code.
>>>
>> Can you explain that a little more? Maybe you can just push forward what
>> you want using the migrationSF.
>>
>> Hi Matt,
>>
>> Since I cannot figure what is wrong or missing in my code, I followed an
>> old ex26.c example in src/dm/impls/plex/examples/tests to create similar
>> code as shown below to test global to natural ordering. The code may be
>> ugly with unnecessary functions in it. Using DmPlexGetVertexNumbering, I
>> can get the value but it is not in natural order, instead, it is still in
>> default PETSc order without calling DMSetUseNatural(dm,PETSC_TRUE,ierr).
>>
> I do not understand what you are doing below. You just need to call
>
> ierr = DMSetUseNatural(dm,PETSC_TRUE);CHKERRQ(ierr);
> ierr = DMPlexDistribute(dm,0,&migrationSF,&pdm);CHKERRQ(ierr);
> if (pdm) {
> ierr = DMPlexSetMigrationSF(pdm,migrationSF);CHKERRQ(ierr);
> }
>
> and the DMGlobalToNaturalBegin/End() should work.
>
> You mean to use DMPlexGlobalToNaturalBegin/End(), right? That's what I
> tried at first, but without success.
>
> I will create a test example to make further check if I can reproduce the
> problem.
>
> Thanks,
>
> Danyang
>
>
> Thanks,
>
> Matt
>
>> if (rank == 0) then
>> call
>> DMPlexCreateFromCellList(Petsc_Comm_World,ndim,num_cells,
>> num_nodes,num_nodes_per_cell, &
>> Petsc_False,dmplex_cells,ndim,
>> dmplex_verts,dm,ierr)
>> CHKERRQ(ierr)
>> else
>> call DMPlexCreateFromCellList(Petsc_Comm_World,ndim,0,
>> 0,num_nodes_per_cell, &
>>
>> Petsc_False,dmplex_cells,ndim,dmplex_verts,dm,ierr)
>> CHKERRQ(ierr)
>> end if
>>
>> if (nprocs > 1) then
>> call DMSetUseNatural(dm,PETSC_TRUE,ierr)
>> CHKERRQ(ierr)
>> end if
>>
>> call DMPlexDistribute(dm,stencil_width, &
>>
>> migrationsf,distributedMesh,ierr)
>> CHKERRQ(ierr)
>>
>> if (distributedMesh /= PETSC_NULL_DM) then
>> call PetscSFCreateInverseSF(migrationsf,migrationsf_inv,ierr)
>> CHKERRQ(ierr)
>>
>> call
>> DMCreateGlobalToNatural(distributedMesh,migrationsf,migrationsf_inv,ierr)
>> CHKERRQ(ierr)
>>
>> call DMGetSection(distributedMesh,section,ierr)
>> CHKERRQ(ierr)
>>
>> call PetscSectionCreate(Petsc_Comm_World,section_seq,ierr)
>> CHKERRQ(ierr)
>>
>> call PetscSFDistributeSection(migrationsf_inv,section, &
>> PETSC_NULL_INTEGER,section_seq,ierr)
>> CHKERRQ(ierr)
>>
>> call DMPlexCreateGlobalToNaturalSF(distributedMesh, &
>> section_seq,migrationsf,sf_natural,ierr)
>> CHKERRQ(ierr)
>>
>> call DMSetUseNatural(distributedMesh,PETSC_TRUE,ierr)
>> CHKERRQ(ierr)
>>
>> call PetscSFDestroy(migrationsf,ierr)
>> CHKERRQ(ierr)
>>
>> call PetscSFDestroy(migrationsf_inv,ierr)
>> CHKERRQ(ierr)
>>
>> end if
>>
>> Thanks,
>>
>> Danyang
>>
>>
>> Thanks,
>>
>> Matt
>>
>>> Regards,
>>>
>>> Danyang
>>> On 2018-12-03 5:22 a.m., Matthew Knepley wrote:
>>>
>>> I need to write a custom Fortran stub for this one. I will get it done
>>> as soon as possible.
>>>
>>> Thanks,
>>>
>>> Matt
>>>
>>> On Sat, Dec 1, 2018 at 7:16 PM Danyang Su via petsc-users <
>>> petsc-users at mcs.anl.gov> wrote:
>>>
>>>> Hi All,
>>>>
>>>> I got a simple compilation error when use PetscSFDistributeSection in
>>>> Fortran. It looks like the required head files are included and the
>>>> parameters are correctly defined. However, when compile the code, I got
>>>> error undefined reference to `petscsfdistributesection_'. The code is
>>>> shown below. Did I miss anything here?
>>>>
>>>> #include <petsc/finclude/petscsys.h>
>>>> #include <petsc/finclude/petscvec.h>
>>>> #include <petsc/finclude/petscdm.h>
>>>> #include <petsc/finclude/petscdmplex.h>
>>>> use petscsys
>>>> use petscvec
>>>> use petscdm
>>>> use petscdmplex
>>>>
>>>> implicit none
>>>>
>>>> PetscSection :: section, section_seq
>>>> PetscSF :: migrationsf_inv, sf_natural
>>>> Vec :: vec_global, vec_natural
>>>> PetscErrorCode :: ierr
>>>>
>>>> ...
>>>>
>>>> call PetscSFDistributeSection(migrationsf_inv,section,
>>>> &
>>>> PETSC_NULL_INTEGER,section_seq,ierr)
>>>> CHKERRQ(ierr)
>>>>
>>>>
>>>> call PetscSFDistributeSection(migrationsf_inv,section,
>>>> &
>>>> PETSC_NULL_INTEGER,section_seq,ierr)
>>>> CHKERRQ(ierr)
>>>>
>>>> Thanks,
>>>>
>>>> Danyang
>>>>
>>>>
>>>
>>> --
>>> 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/>
>>
>>
>
> --
> 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/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20181204/3db504cf/attachment-0001.html>
More information about the petsc-users
mailing list