[petsc-users] Best way to share variables in fortran ?
Matthew Knepley
knepley at gmail.com
Fri Nov 4 22:19:41 CDT 2016
On Fri, Nov 4, 2016 at 7:37 PM, Manuel Valera <mvalera at mail.sdsu.edu> wrote:
> Hello all,
>
> I'm reviving this old post because we are trying to share the petsc
> objects from outside our iteration routine, this means several levels
> outside the linear solver script where they are created now,
>
> we have tried with fortran modules but right now we have conflicts while
> taking the includes, if we make the #include in the module it conflicts
> with the rest of the routines, so we wanted to ask you guys what other
> option to make the petsc objects available for the entire program we have,
> carrying them as arguments seems maybe too cumbersome,
>
Use the Fortran modules
http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Sys/UsingFortran.html
although I would delicately recommend a language with a non-broken scoping
model.
Matt
> Thanks for your help,
>
> Manuel
>
>
>
> On Fri, Sep 23, 2016 at 12:39 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
>
>>
>> I don't know much about modules so can't help, but PETSc variables are
>> just like any other variables and so should behave in the same way.
>>
>> Barry
>>
>> > On Sep 23, 2016, at 2:31 PM, Manuel Valera <mvalera at mail.sdsu.edu>
>> wrote:
>> >
>> > Ok, i got this:
>> >
>> > RHS loaded, size: 213120 / 213120
>> > CSRMAt loaded, sizes: 213120 x 213120
>> > 8.43036175 s
>> > solveP pass: 1
>> > RHS loaded, size: 213120 / 213120
>> > [0]PETSC ERROR: MatGetSize() line 6295 in /home/valera/v5PETSc/petsc/petsc/src/mat/interface/matrix.c
>> Wrong type of object: Parameter # 1
>> >
>> > Program received signal SIGABRT: Process abort signal.
>> >
>> > Backtrace for this error:
>> > #0 0x7F2A35AEA777
>> > #1 0x7F2A35AEAD7E
>> > #2 0x7F2A34FC6CAF
>> > #3 0x7F2A34FC6C37
>> > #4 0x7F2A34FCA027
>> > #5 0x7F2A35F6F6AA
>> > #6 0x7F2A35F6A2EA
>> > #7 0x7F2A362E2FEF
>> > #8 0x7F2A36326681
>> > #9 0x799AFF in solvepetsclinear_ at SolvePetscLinear.f90:137
>> (discriminator 2)
>> > #10 0x798F6A in solvep_rhs_ at SolveP_Rhs.f90:284
>> > #11 0x80D028 in ucmsmain at ucmsMain.f90:472
>> >
>> > .-.-.-.-.-.-.-.-
>> >
>> > What is weird for me is why it loads everything as it should for the
>> first timestep of the problem and then it breaks on the second one,
>> shouldnt the matrix be loaded at modules and shared with all subroutines?
>> also, shouldnt the matrix be locked after assembly_final was used ? that
>> matrix call is Ap which is inside LoadPetscMatrix module, and it looks like
>> its changed after the first timestep.
>> >
>> >
>> > On Fri, Sep 23, 2016 at 12:18 PM, Barry Smith <bsmith at mcs.anl.gov>
>> wrote:
>> >
>> > Ok, so the problem is not memory corruption.
>> >
>> > > 0]PETSC ERROR: --------------------- Error Message
>> --------------------------------------------------------------
>> > > [0]PETSC ERROR: Invalid argument
>> > > [0]PETSC ERROR: Wrong type of object: Parameter # 1
>> > > [0]PETSC ERROR: #1 MatGetSize() line 6295 in
>> /home/valera/v5PETSc/petsc/petsc/src/mat/interface/matrix.c
>> >
>> > So it looks like the matrix has not been created yet in this call.
>> You can run with -start_in_debugger noxterm and then type cont in the
>> debugger and it should stop at this error so you can look at the mat object
>> to see what its value is.
>> >
>> > Barry
>> >
>> >
>> >
>> > > On Sep 23, 2016, at 2:07 PM, Manuel Valera <mvalera at mail.sdsu.edu>
>> wrote:
>> > >
>> > > Barry, that was awesome, all the valgrind error dissappeared after
>> using the mpiexec from petsc folder, the more you know...
>> > >
>> > > Anyway this is my output from valgrind running with those options:
>> > >
>> > > Last Update: 9/23/2016 12: 5:12
>> > > ucmsSeamount Entering MAIN loop.
>> > > RHS loaded, size: 213120 / 213120
>> > > CSRMAt loaded, sizes: 213120 x 213120
>> > > 8.32709217 s
>> > > solveP pass: 1
>> > > RHS loaded, size: 213120 / 213120
>> > > CSRMAt loaded, sizes: 213120 x 0
>> > > [0]PETSC ERROR: --------------------- Error Message
>> --------------------------------------------------------------
>> > > [0]PETSC ERROR: Invalid argument
>> > > [0]PETSC ERROR: Wrong type of object: Parameter # 1
>> > > [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/d
>> ocumentation/faq.html for trouble shooting.
>> > > [0]PETSC ERROR: Petsc Release Version 3.7.3, unknown
>> > > [0]PETSC ERROR: ./ucmsSeamount
>>
>>
>> �J� on a
>> arch-linux2-c-debug named valera-HP-xw4600-Workstation by valera Fri Sep 23
>> 12:05:03 2016
>> > > [0]PETSC ERROR: Configure options --with-cc=gcc --with-cxx=g++
>> --with-fc=gfortran --download-fblaslapack=1 --download-mpich=1
>> --download-ml=1
>> > > [0]PETSC ERROR: #1 MatGetSize() line 6295 in
>> /home/valera/v5PETSc/petsc/petsc/src/mat/interface/matrix.c
>> > > [0]PETSC ERROR: --------------------- Error Message
>> --------------------------------------------------------------
>> > > [0]PETSC ERROR: Invalid argument
>> > > [0]PETSC ERROR: Wrong type of object: Parameter # 2
>> > > [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/d
>> ocumentation/faq.html for trouble shooting.
>> > > [0]PETSC ERROR: Petsc Release Version 3.7.3, unknown
>> > > [0]PETSC ERROR: ./ucmsSeamount
>>
>>
>> �J� on a
>> arch-linux2-c-debug named valera-HP-xw4600-Workstation by valera Fri Sep 23
>> 12:05:03 2016
>> > > [0]PETSC ERROR: Configure options --with-cc=gcc --with-cxx=g++
>> --with-fc=gfortran --download-fblaslapack=1 --download-mpich=1
>> --download-ml=1
>> > > [0]PETSC ERROR: #2 KSPSetOperators() line 531 in
>> /home/valera/v5PETSc/petsc/petsc/src/ksp/ksp/interface/itcreate.c
>> > > [0]PETSC ERROR: --------------------- Error Message
>> --------------------------------------------------------------
>> > > [0]PETSC ERROR: Nonconforming object sizes
>> > > [0]PETSC ERROR: Preconditioner number of local rows -1 does not equal
>> resulting vector number of rows 213120
>> > > [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/d
>> ocumentation/faq.html for trouble shooting.
>> > > [0]PETSC ERROR: Petsc Release Version 3.7.3, unknown
>> > > [0]PETSC ERROR: ./ucmsSeamount
>>
>>
>> �J� on a
>> arch-linux2-c-debug named valera-HP-xw4600-Workstation by valera Fri Sep 23
>> 12:05:03 2016
>> > > [0]PETSC ERROR: Configure options --with-cc=gcc --with-cxx=g++
>> --with-fc=gfortran --download-fblaslapack=1 --download-mpich=1
>> --download-ml=1
>> > > [0]PETSC ERROR: #3 PCApply() line 474 in
>> /home/valera/v5PETSc/petsc/petsc/src/ksp/pc/interface/precon.c
>> > > [0]PETSC ERROR: --------------------- Error Message
>> --------------------------------------------------------------
>> > > [0]PETSC ERROR: Object is in wrong state
>> > > [0]PETSC ERROR: Mat object's type is not set: Argument # 1
>> > > [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/d
>> ocumentation/faq.html for trouble shooting.
>> > > [0]PETSC ERROR: Petsc Release Version 3.7.3, unknown
>> > > [0]PETSC ERROR: ./ucmsSeamount
>>
>>
>> �J� on a
>> arch-linux2-c-debug named valera-HP-xw4600-Workstation by valera Fri Sep 23
>> 12:05:03 2016
>> > > [0]PETSC ERROR: Configure options --with-cc=gcc --with-cxx=g++
>> --with-fc=gfortran --download-fblaslapack=1 --download-mpich=1
>> --download-ml=1
>> > > [0]PETSC ERROR: #4 MatGetFactorAvailable() line 4286 in
>> /home/valera/v5PETSc/petsc/petsc/src/mat/interface/matrix.c
>> > > [0]PETSC ERROR: #5 PCGetDefaultType_Private() line 28 in
>> /home/valera/v5PETSc/petsc/petsc/src/ksp/pc/interface/precon.c
>> > > [0]PETSC ERROR: #6 PCSetFromOptions() line 159 in
>> /home/valera/v5PETSc/petsc/petsc/src/ksp/pc/interface/pcset.c
>> > > [0]PETSC ERROR: #7 KSPSetFromOptions() line 400 in
>> /home/valera/v5PETSc/petsc/petsc/src/ksp/ksp/interface/itcl.c
>> > > application called MPI_Abort(MPI_COMM_WORLD, 73) - process 0
>> > > [cli_0]: aborting job:
>> > > application called MPI_Abort(MPI_COMM_WORLD, 73) - process 0
>> > >
>> > > ============================================================
>> =======================
>> > > = BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
>> > > = PID 6490 RUNNING AT valera-HP-xw4600-Workstation
>> > > = EXIT CODE: 73
>> > > = CLEANING UP REMAINING PROCESSES
>> > > = YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
>> > > ============================================================
>> =======================
>> > > ==6488==
>> > > ==6488== HEAP SUMMARY:
>> > > ==6488== in use at exit: 131,120 bytes in 2 blocks
>> > > ==6488== total heap usage: 1,224 allocs, 1,222 frees, 249,285 bytes
>> allocated
>> > > ==6488==
>> > > ==6488== LEAK SUMMARY:
>> > > ==6488== definitely lost: 0 bytes in 0 blocks
>> > > ==6488== indirectly lost: 0 bytes in 0 blocks
>> > > ==6488== possibly lost: 0 bytes in 0 blocks
>> > > ==6488== still reachable: 131,120 bytes in 2 blocks
>> > > ==6488== suppressed: 0 bytes in 0 blocks
>> > > ==6488== Rerun with --leak-check=full to see details of leaked memory
>> > > ==6488==
>> > > ==6488== For counts of detected and suppressed errors, rerun with: -v
>> > > ==6488== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from
>> 0)
>> > >
>> > >
>> > > On Fri, Sep 23, 2016 at 11:15 AM, Barry Smith <bsmith at mcs.anl.gov>
>> wrote:
>> > >
>> > > > On Sep 23, 2016, at 1:09 PM, Manuel Valera <mvalera at mail.sdsu.edu>
>> wrote:
>> > > >
>> > > > Thanks Barry, for the quick reply,
>> > > >
>> > > > I tried doing that once recently, not for this problem though, but
>> it looks like the model i'm working on isn't optimized at all for memory
>> leaks, and valgrind stopped with thousands of errors before reaching this
>> part of the execution.
>> > >
>> > > Some MPI implementations by default produce many meaningless
>> valgrind messages. So make sure you ./configure PETSc with --download-mpich
>> this version will not produce any meaningless valgrind messages about MPI.
>> > >
>> > > You are not concerned with "memory leaks" in this exercise, only
>> with using uninitialized memory or overwriting memory you should not
>> overwrite. So you want valgrind arguments like -q --tool=memcheck
>> --num-callers=20 --track-origins=yes you do not need --leak-check=yes
>> > >
>> > > So run with valgrind and email use the output and we may have
>> suggestions on the cause.
>> > >
>> > > Barry
>> > >
>> > >
>> > >
>> > > >
>> > > > Is there maybe an alternative approach ? or it would be better to
>> just get the model in better shape already ?
>> > > >
>> > > > Thanks
>> > > >
>> > > > On Fri, Sep 23, 2016 at 10:53 AM, Barry Smith <bsmith at mcs.anl.gov>
>> wrote:
>> > > >
>> > > > Run with valgrind to find the exact location of the first memory
>> corruption. http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind
>> > > >
>> > > > > On Sep 23, 2016, at 12:47 PM, Manuel Valera <
>> mvalera at mail.sdsu.edu> wrote:
>> > > > >
>> > > > > Hello all,
>> > > > >
>> > > > > I'm trying to load my laplacian matrix into a fortran module, and
>> i have implemented it and it works for the first iteration of laplacian
>> solver, but when starts the second step the laplacian matrix object becomes
>> corrupts and looks like it loses one of it's dimensions.
>> > > > >
>> > > > > Can you help me understand whats happening?
>> > > > >
>> > > > > The modules are attached, the error i get is the following, i
>> bolded the lines where i detected corruption:
>> > > > >
>> > > > > ucmsSeamount Entering MAIN loop.
>> > > > > RHS loaded, size: 213120 / 213120
>> > > > > CSRMAt loaded, sizes: 213120 x 213120
>> > > > > 8.39198399 s
>> > > > > solveP pass: 1 !Iteration number
>> > > > > RHS loaded, size: 213120 / 213120
>> > > > > [0]PETSC ERROR: --------------------- Error Message
>> --------------------------------------------------------------
>> > > > > [0]PETSC ERROR: Invalid argument
>> > > > > [0]PETSC ERROR: Wrong type of object: Parameter # 1
>> > > > > [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/d
>> ocumentation/faq.html for trouble shooting.
>> > > > > [0]PETSC ERROR: Petsc Release Version 3.7.3, unknown
>> > > > > [0]PETSC ERROR: ./ucmsSeamount
>>
>>
>> �J� on a
>> arch-linux2-c-debug named valera-HP-xw4600-Workstation by valera Fri Sep 23
>> 10:27:21 2016
>> > > > > [0]PETSC ERROR: Configure options --with-cc=gcc --with-cxx=g++
>> --with-fc=gfortran --download-fblaslapack=1 --download-mpich=1
>> --download-ml=1
>> > > > > [0]PETSC ERROR: #1 MatGetSize() line 6295 in
>> /home/valera/v5PETSc/petsc/petsc/src/mat/interface/matrix.c
>> > > > > CSRMAt loaded, sizes: 213120 x 0
>> > > > > [0]PETSC ERROR: --------------------- Error Message
>> --------------------------------------------------------------
>> > > > > [0]PETSC ERROR: Invalid argument
>> > > > > [0]PETSC ERROR: Wrong type of object: Parameter # 2
>> > > > > [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/d
>> ocumentation/faq.html for trouble shooting.
>> > > > > [0]PETSC ERROR: Petsc Release Version 3.7.3, unknown
>> > > > > [0]PETSC ERROR: ./ucmsSeamount
>>
>>
>> �J� on a
>> arch-linux2-c-debug named valera-HP-xw4600-Workstation by valera Fri Sep 23
>> 10:27:21 2016
>> > > > > [0]PETSC ERROR: Configure options --with-cc=gcc --with-cxx=g++
>> --with-fc=gfortran --download-fblaslapack=1 --download-mpich=1
>> --download-ml=1
>> > > > > [0]PETSC ERROR: #2 KSPSetOperators() line 531 in
>> /home/valera/v5PETSc/petsc/petsc/src/ksp/ksp/interface/itcreate.c
>> > > > > [0]PETSC ERROR: --------------------- Error Message
>> --------------------------------------------------------------
>> > > > > [0]PETSC ERROR: Nonconforming object sizes
>> > > > > [0]PETSC ERROR: Preconditioner number of local rows -1 does not
>> equal resulting vector number of rows 213120
>> > > > > [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/d
>> ocumentation/faq.html for trouble shooting.
>> > > > > [0]PETSC ERROR: Petsc Release Version 3.7.3, unknown
>> > > > > [0]PETSC ERROR: ./ucmsSeamount
>>
>>
>> �J� on a
>> arch-linux2-c-debug named valera-HP-xw4600-Workstation by valera Fri Sep 23
>> 10:27:21 2016
>> > > > > [0]PETSC ERROR: Configure options --with-cc=gcc --with-cxx=g++
>> --with-fc=gfortran --download-fblaslapack=1 --download-mpich=1
>> --download-ml=1
>> > > > > [0]PETSC ERROR: #3 PCApply() line 474 in
>> /home/valera/v5PETSc/petsc/petsc/src/ksp/pc/interface/precon.c
>> > > > > [0]PETSC ERROR: --------------------- Error Message
>> --------------------------------------------------------------
>> > > > > [0]PETSC ERROR: Object is in wrong state
>> > > > > [0]PETSC ERROR: Mat object's type is not set: Argument # 1
>> > > > > [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/d
>> ocumentation/faq.html for trouble shooting.
>> > > > > [0]PETSC ERROR: Petsc Release Version 3.7.3, unknown
>> > > > > [0]PETSC ERROR: ./ucmsSeamount
>>
>>
>> �J� on a
>> arch-linux2-c-debug named valera-HP-xw4600-Workstation by valera Fri Sep 23
>> 10:27:21 2016
>> > > > > [0]PETSC ERROR: Configure options --with-cc=gcc --with-cxx=g++
>> --with-fc=gfortran --download-fblaslapack=1 --download-mpich=1
>> --download-ml=1
>> > > > > [0]PETSC ERROR: #4 MatGetFactorAvailable() line 4286 in
>> /home/valera/v5PETSc/petsc/petsc/src/mat/interface/matrix.c
>> > > > > [0]PETSC ERROR: #5 PCGetDefaultType_Private() line 28 in
>> /home/valera/v5PETSc/petsc/petsc/src/ksp/pc/interface/precon.c
>> > > > > [0]PETSC ERROR: #6 PCSetFromOptions() line 159 in
>> /home/valera/v5PETSc/petsc/petsc/src/ksp/pc/interface/pcset.c
>> > > > > [0]PETSC ERROR: #7 KSPSetFromOptions() line 400 in
>> /home/valera/v5PETSc/petsc/petsc/src/ksp/ksp/interface/itcl.c
>> > > > > application called MPI_Abort(MPI_COMM_WORLD, 73) - process 0
>> > > > > [unset]: aborting job:
>> > > > > application called MPI_Abort(MPI_COMM_WORLD, 73) - process 0
>> > > > >
>> > > > > <LoadPetscMatrix.f90><SolvePetscLinear.f90>
>> > > >
>> > > >
>> > >
>> > >
>> >
>> >
>>
>>
>
--
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20161104/45a143e6/attachment-0001.html>
More information about the petsc-users
mailing list