[petsc-users] Best way to share variables in fortran ?
Barry Smith
bsmith at mcs.anl.gov
Fri Nov 4 20:15:07 CDT 2016
For some of the includes once you include them in a module you cannot include them in routines that use the module. This is generally true for includes that do not have def at the end of the filename before the prefix. Just let us know what errors you are getting and we can probably determine what includes you should not "reinclude"
Barry
> On 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,
>
> 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/documentation/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/documentation/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/documentation/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/documentation/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/documentation/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/documentation/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/documentation/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/documentation/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>
> > > >
> > > >
> > >
> > >
> >
> >
>
>
More information about the petsc-users
mailing list