So after comparing the results of getrusage with guppy, a python
memory profiling tool, it seems the os x getrusage is returning bytes
in contrast to the os x man pages which say the results are in kb.
Doing the same tests on a linux machine, it looks like getrusage is
returning kb as it says in the documentation. Anyway it is not problem
to correct the results of the petsc memory functions from my
application code. Thanks for all your help!
Colin
Quoting Barry Smith <[email protected]>:
On May 22, 2013, at 8:32 PM, Colin McAuliffe <[email protected]> wrote:
According to gdb the program goes here
110: #elif defined(PETSC_HAVE_TASK_INFO)
111: *mem = 0;
The configuration flags from my petsc compilation indicate that
both PETSC_HAVE_TASK_INFO and PETSC_HAVE_GETRUSAGE are 1. I'm not
sure what have task info is supposed to do, is it safe to set it to
0 to see if this fixes the problem?
Remove the PETSC_HAVE_TASK_INFO stuff completely and then rerun
make and see if it solves the problem.
At some point the TASK_INFO stuff worked on the Apple some
years ago, perhaps they turned if off.
Barry
Quoting Barry Smith <[email protected]>:
On May 22, 2013, at 7:06 PM, Colin McAuliffe <[email protected]> wrote:
Hi Barry, thanks for the quick response.
I am using os x and so I would expect that petsc would be able to
use getrusage in the following lines of mem.c:
115: #elif defined(PETSC_HAVE_GETRUSAGE)
116: getrusage(RUSAGE_SELF,&temp);
Is this not the case?
You can run in the debugger, put a break point at that line to
verify it goes there and if it does check the values of temp after
the call. (Sometimes Apple's docs are more optimistic than
reality.)
Barry
Here is the link to apple's getrusage manual page
http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/10.7/man2/getrusage.2.html
Quoting Barry Smith <[email protected]>:
Colin,
PetscMemoryGetCurrentUsage() and MaximumUsage() us calls to
the underlying operating system to get how much memory the
process is using, as such they will also include external
package memory. Unfortunately it depends on the operating
system providing this information and often it does not, this
is why you get 0. If you are a hacker you could look at the
source for PetscMemoryGetCurrentUsage() and see how to get the
information for your OS and add it to this routine.
Barry
On May 22, 2013, at 6:31 PM, Colin McAuliffe
<[email protected]> wrote:
Hi all,
When calling PetscMemoryGetCurrentUsage or
PetscMemoryGetMaximumUsage in a fortran code the memory usage
returned is always zero. Adding command line options such as
-malloc_log and -memory_info doesn't change this result. Is
there something else I'm missing? Also, will use of these two
functions give memory used by external packaged called by
petsc?
All the best,
Colin
--
Colin McAuliffe
PhD Candidate
Columbia University
Department of Civil Engineering and Engineering Mechanics
--
Colin McAuliffe
PhD Candidate
Columbia University
Department of Civil Engineering and Engineering Mechanics
--
Colin McAuliffe
PhD Candidate
Columbia University
Department of Civil Engineering and Engineering Mechanics
--
Colin McAuliffe
PhD Candidate
Columbia University
Department of Civil Engineering and Engineering Mechanics