[petsc-users] Error - Out of memory. This could be due to allocating too large an object or bleeding by not properly ...

TAY wee-beng zonexo at gmail.com
Tue Mar 1 22:19:42 CST 2016


On 26/2/2016 9:21 PM, Barry Smith wrote:
>> On Feb 26, 2016, at 1:14 AM, TAY wee-beng <zonexo at gmail.com> wrote:
>>
>>
>> On 26/2/2016 1:56 AM, Barry Smith wrote:
>>>     Run a much smaller problem for a few time steps, making sure you free all the objects at the end, with the option -malloc_dump this will print all the memory that was not freed and hopefully help you track down which objects you forgot to free.
>>>
>>>    Barry
>> Hi,
>>
>> I run a smaller problem and lots of things are shown in the log. How can I know which exactly are not freed from the memory?
>     Everything in in the log represents unfreed memory. You need to hunt through all the objects you create and make sure you destroy all of them.
>
>    Barry
Hi,

I have some questions.

[0]Total space allocated 2274656 bytes
[ 0]16 bytes PetscStrallocpy() line 188 in 
/home/wtay/Codes/petsc-3.6.3/src/sys/utils/str.c
[ 0]624 bytes ISLocalToGlobalMappingCreate() line 270 in 
/home/wtay/Codes/petsc-3.6.3/src/vec/is/utils/isltog.c
[ 0]16 bytes VecScatterCreateCommon_PtoS() line 2655 in 
/home/wtay/Codes/petsc-3.6.3/src/vec/vec/utils/vpscat.c
[ 0]16 bytes VecScatterCreateCommon_PtoS() line 2654 in 
/home/wtay/Codes/petsc-3.6.3/src/vec/vec/utils/vpscat.c
[ 0]1440 bytes VecScatterCreate_PtoS() line 2463 in 
/home/wtay/Codes/petsc-3.6.3/src/vec/vec/utils/vpscat.c
[ 0]1440 bytes VecScatterCreate_PtoS() line 2462 in /home/wtay/Codes/

1. What does the [0] means? I get from [0] to [23]?

2. I defined a variable globally:

DM  da_cu_types

Then I use at each time step:

/call 
DMDACreate3d(MPI_COMM_WORLD,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DM_BOUNDARY_NONE,DMDA_STENCIL_STAR,(IIB_I_end_domain(1) 
- IIB_I_sta_domain(1) + 1),(IIB_I_end_domain(2) - IIB_I_sta_domain(2) + 
1),&//
//
//(IIB_I_end_domain(3) - IIB_I_sta_domain(3) + 
1),PETSC_DECIDE,PETSC_DECIDE,PETSC_DECIDE,1,stencil_width_IIB,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,da_cu_types,ierr)//
//
//call 
DMDAGetInfo(da_cu_types,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,num_procs_xyz_IIB(1),num_procs_xyz_IIB(2),num_procs_xyz_IIB(3),&//
//
//PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,ierr)//
//
//call 
DMDAGetCorners(da_cu_types,start_ijk_IIB(1),start_ijk_IIB(2),start_ijk_IIB(3),width_ijk_IIB(1),width_ijk_IIB(2),width_ijk_IIB(3),ierr)//
//
//call 
DMDAGetGhostCorners(da_cu_types,start_ijk_ghost_IIB(1),start_ijk_ghost_IIB(2),start_ijk_ghost_IIB(3),width_ijk_ghost_IIB(1),width_ijk_ghost_IIB(2),width_ijk_ghost_IIB(3),ierr)/

The purpose is just to get the starting and ending inidices for each cpu 
partition. This is done every time step for a moving body case since the 
/IIB_I_sta_domain/ and /IIB_I_end_domain/ changes

After getting all the info, must I call DMDestroy(da_cu_types,ierr)?

Is it possible to update and use the new /IIB_I_sta_domain/ and 
/IIB_I_end_domain /without the need to create and destroy the DM? I 
thought that may save some time since it's done at every time step.

Thanks

>
>> Is this info helpful? Or should I run in a single core?
>>
>> Thanks
>>>> On Feb 25, 2016, at 12:33 AM, TAY wee-beng <zonexo at gmail.com> wrote:
>>>>
>>>> Hi,
>>>>
>>>> I ran the code and it hangs again. However, adding -malloc_test doesn't seem to do any thing. The output (attached) is the same w/o it.
>>>>
>>>> Wonder if there's anything else I can do.
>>>> Thank you
>>>>
>>>> Yours sincerely,
>>>>
>>>> TAY wee-beng
>>>>
>>>> On 24/2/2016 11:33 PM, Matthew Knepley wrote:
>>>>> On Wed, Feb 24, 2016 at 9:28 AM, TAY wee-beng <zonexo at gmail.com> wrote:
>>>>>
>>>>> On 24/2/2016 11:18 PM, Matthew Knepley wrote:
>>>>>> On Wed, Feb 24, 2016 at 9:16 AM, TAY wee-beng <zonexo at gmail.com> wrote:
>>>>>>
>>>>>> On 24/2/2016 9:12 PM, Matthew Knepley wrote:
>>>>>>> On Wed, Feb 24, 2016 at 1:54 AM, TAY wee-beng <zonexo at gmail.com> wrote:
>>>>>>>
>>>>>>> On 24/2/2016 10:28 AM, Matthew Knepley wrote:
>>>>>>>> On Tue, Feb 23, 2016 at 7:50 PM, TAY wee-beng <zonexo at gmail.com> wrote:
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> I got this error (also attached, full) when running my code. It happens after a few thousand time steps.
>>>>>>>>
>>>>>>>> The strange thing is that for 2 different clusters, it stops at 2 different time steps.
>>>>>>>>
>>>>>>>> I wonder if it's related to DM since this happens after I added DM into my code.
>>>>>>>>
>>>>>>>> In this case, how can I find out the error? I'm thinking valgrind may take very long and gives too many false errors.
>>>>>>>>
>>>>>>>> It is very easy to find leaks. You just run a few steps with -malloc_dump and see what is left over.
>>>>>>>>
>>>>>>>>     Matt
>>>>>>> Hi Matt,
>>>>>>>
>>>>>>> Do you mean running my a.out with the -malloc_dump and stop after a few time steps?
>>>>>>>
>>>>>>> What and how should I "see" then?
>>>>>>>
>>>>>>> -malloc_dump outputs all unfreed memory to the screen after PetscFinalize(), so you should see the leak.
>>>>>>> I guess it might be possible to keep creating things that you freed all at once at the end, but that is less likely.
>>>>>>>
>>>>>>>     Matt
>>>>>>>   
>>>>>> Hi,
>>>>>>
>>>>>> I got the output. I have zipped it since it's rather big. So it seems to be from DM routines but can you help me where the error is from?
>>>>>>
>>>>>> Its really hard to tell by looking at it. What I do is remove things until there is no leak, then progressively
>>>>>> put thing back in until I have the culprit. Then you can think about what is not destroyed.
>>>>>>
>>>>>>    Matt
>>>>> Ok so let me get this clear. When it shows:
>>>>>
>>>>> [21]Total space allocated 1728961264 bytes
>>>>> [21]1861664 bytes MatCheckCompressedRow() line 60 in /home/wtay/Codes/petsc-3.6.3/src/mat/utils/compressedrow.c
>>>>> [21]16 bytes PetscStrallocpy() line 188 in /home/wtay/Codes/petsc-3.6.3/src/sys/utils/str.c
>>>>> [21]624 bytes ISLocalToGlobalMappingCreate() line 270 in /home/wtay/Codes
>>>>>
>>>>> ....
>>>>>
>>>>> Does it mean that it's simply allocating space ie normal? Or does it show that there's memory leak ie error?
>>>>>
>>>>> I gave the wrong option. That dumps everything. Lets just look at the leaks with -malloc_test.
>>>>>
>>>>>   Sorry about that,
>>>>>
>>>>>      Matt
>>>>>   If it's error, should I zoom in and debug around this time at this region?
>>>>>
>>>>> Thanks
>>>>>>   Thanks.
>>>>>>>   
>>>>>>>> -- 
>>>>>>>> Thank you
>>>>>>>>
>>>>>>>> Yours sincerely,
>>>>>>>>
>>>>>>>> TAY wee-beng
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> -- 
>>>>>>>> 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
>>>>>>>
>>>>>>>
>>>>>>> -- 
>>>>>>> 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
>>>>>>
>>>>>>
>>>>>> -- 
>>>>>> 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
>>>>>
>>>>>
>>>>> -- 
>>>>> 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
>>>> <ibm2d.err>
>> <log.7z>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20160302/38a71729/attachment-0001.html>


More information about the petsc-users mailing list