[Paraview-developers] Release memory

RIVERA ROLDAN, Jorge Orlando Orlando.RIVERA at mtu.de
Thu Oct 22 11:36:30 EDT 2015


Thanks for  the reply , I will try to explain as concise as I can

The workflow is in the RequestData    the tree Structure is  build the first time a RequetData is called

RequestData(){

     If ( !this->treeBuilt)
     {
           buildTree();
          this->treeBuilt=true;
     }

     readGrid();

}


In buildTree()   I have  built the tree  using the same loop as described   like :

root->SetNumberOfBlocks(10);      // 10 is just an example
 for( i=0 ; i< root->GetNumberOfBlocks() ; ++i )
 {
      vtkSmartPointer<vtkSmavtkMultiBlockDataSet>
    level2Pointer=vtkMultiBlockDataSet::SafeDownCast(Root->GetBlock(i));
   level2Pointer->SetNumberOfBlocks(5)  //5 just an example
     for(k=0; k< level2Pointer->GetNumberOfBlocks(); k++){
         vtkSmartPointer<vtkDataSet> grid;
                 grid=vtkStructuredGrid::New()
                 level2Pointer->SetBlock(k,grid);
      }
}


 so when  RequesData is triggered  for the very firs time my tree has a fixed structure and in ReadGrid just fill or release the Data  (see original question) in my tree . Moreover, the blocks are always the same meaning :
level2Pointer->SetBlock(2,grid);    ( block 2 will always have the same grid  same points same connectivity , same fields, etc )

I also take in account that in case a  block is set   cannot be set until  the releseasedata was first caIled
Ie.    I  should not call
level2Pointer->SetBlock(2,grid);    twice in ReadGrid() without

{
gridPointer=vtkDataSet::SafeDownCast(level2Pointer->GetBlock(2));
 gridPointer->Releasedata();
}

In between

Thanks again


No there is no Other  pluings is just , the reader


-----Ursprüngliche Nachricht-----
Von: Utkarsh Ayachit [mailto:utkarsh.ayachit at kitware.com]
Gesendet: Thursday, 22. October 2015 16:51
An: RIVERA ROLDAN, Jorge Orlando
Cc: paraview-developers at paraview.org
Betreff: Re: [Paraview-developers] Release memory

Can you elaborate more? I cannot understand how  you're attempting to
call this code to release memory in a ParaView workflow? Is this being
done is the reader's RequestData method? Are there any filters
connected to the reader? Are you showing the output from the reader in
a view?

On Thu, Oct 22, 2015 at 5:36 AM, RIVERA ROLDAN, Jorge Orlando
<Orlando.RIVERA at mtu.de> wrote:
> Dear  Forums Members,
>
>
>
> I post this on VTK  , so I hope I am not  generating spam
>
>
>
> I  have  a question regarding releasing Memory.
>
>
>
> I have a vtkCompositeDataSet   or a vtkMultiBlockDataSet  up to 2 Levels.
> Level3 is a Structured or Unstructured  grid, like :
>
>
>
> --vtkMB   (root  )
>
> -----vtkMB
>
> ---------vtkStructured
>
> ---------vtkUnstructured
>
> -----vtkMB
>
>
>
> and I  want to release memory  without  destroying my tree structure
>
> I  get through  my tree (simplified code )
>
>
>
> for( i=0 ; i< root->GetNumberOfBlocks() ; ++i )
>
> {
>
>      vtkSmartPointer<vtkSmavtkMultiBlockDataSet>
> level2Pointer=vtkMultiBlockDataSet::SafeDownCast(Root->GetBlock(i));
>
>      for(k=0; k< level2Pointer->GetNumberOfBlocks(); k++)
>
>      {
>
>              If( load(cnt) )
>
>              {
>
>                       vtkSmartPointer<vtkDataSet>
> gridPointer=ReadGridFromFile(…..)
>
>                       level2Pointer->SetBlock(k, gridPointer):
>
>             }
>
> else
>
> {
>
>                        vtkSmartPointer<vtkDataSet>
> gridPointer=vtkDataSet::SafeDownCast(level2Pointer->GetBlock(k));
>
>                        gridPointer->ReleaseData();
>
>                        vtkSmartPointer<vtkDataSet> emptyGrid;
>
>                        level2Pointer->SetBlock(k, emptyGrid):
>
>            }
>
>            cnt++;
>
>      } //for k
>
>
>
> } //for i
>
>
>
>
>
> As you can see  I get the  Un/Structured grid  pointed with the gridPointer
> . I try to release the Memory  an in its place I set an empty grid
>
> All works  really nice, when I want to render a grid, I load it  in first IF
> ,  otherwise,  in else will be supposedly  released .  When I see it with
> top or mem inspector  the  memory is actually  increasing.
>
>
>
> So I assume I am doing something wrong  in the else part:
>
>
>
>     vtkSmartPointer<vtkDataSet>
> gridPointer=vtkDataSet::SafeDownCast(level2Pointer->GetBlock(k));
>
>     gridPointer->ReleaseData();
>
>     vtkSmartPointer<vtkDataSet> emptyGrid;
>
>     level2Pointer->SetBlock(k, emptyGrid):
>
>
>
> PS  I also tried :
>
>         gridPointer->Squeeze();
>
> and/or  commeting out these lines :
>
>        vtkSmartPointer<vtkDataSet> emptyGrid;
>
>        level2Pointer->SetBlock(k, emptyGrid):
>
>
>
>
>
> Any help will be appreciated
>
>
>
> Thanks !!
>
>
>
> --
> MTU Aero Engines AG
> Vorstand/Board of Management: Reiner Winkler, Vorsitzender/CEO; Dr. Rainer
> Martens, Michael Schreyoegg
> Vorsitzender des Aufsichtsrats/Chairman of the Supervisory Board: Klaus
> Eberhardt
> Sitz der Gesellschaft/Registered Office: Muenchen
> Handelsregister/Commercial Register: Muenchen HRB 157206
>
> Diese E-Mail sowie ihre Anhaenge enthalten MTU-eigene vertrauliche oder
> rechtlich geschuetzte Informationen.
> Wenn Sie nicht der beabsichtigte Empfaenger sind, informieren Sie bitte den
> Absender und loeschen Sie diese
> E-Mail sowie die Anhaenge. Das unbefugte Speichern, Kopieren oder
> Weiterleiten ist nicht gestattet.
>
> This e-mail and any attached documents are proprietary to MTU, confidential
> or protected by law.
> If you are not the intended recipient, please advise the sender and delete
> this message and its attachments.
> Any unauthorised storing, copying or distribution is prohibited.
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Search the list archives at:
> http://markmail.org/search/?q=Paraview-developers
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/paraview-developers
>
--
MTU Aero Engines AG
Vorstand/Board of Management: Reiner Winkler, Vorsitzender/CEO; Dr. Rainer Martens, Michael Schreyoegg
Vorsitzender des Aufsichtsrats/Chairman of the Supervisory Board: Klaus Eberhardt
Sitz der Gesellschaft/Registered Office: Muenchen
Handelsregister/Commercial Register: Muenchen HRB 157206

Diese E-Mail sowie ihre Anhaenge enthalten MTU-eigene vertrauliche oder rechtlich geschuetzte Informationen.
Wenn Sie nicht der beabsichtigte Empfaenger sind, informieren Sie bitte den Absender und loeschen Sie diese
E-Mail sowie die Anhaenge. Das unbefugte Speichern, Kopieren oder Weiterleiten ist nicht gestattet.

This e-mail and any attached documents are proprietary to MTU, confidential or protected by law.
If you are not the intended recipient, please advise the sender and delete this message and its attachments.
Any unauthorised storing, copying or distribution is prohibited.


More information about the Paraview-developers mailing list