[Paraview-developers] Release memory
RIVERA ROLDAN, Jorge Orlando
Orlando.RIVERA at mtu.de
Fri Oct 23 02:55:02 EDT 2015
Thanks and sorry for giving the information by pieces:
1) what triggers RequestData() is an UpdateProperty +Accpeted on the GUI. The GUI has an exact copy of the structure represented by a Qtree. UpdateProperty sends a flat index to the server (load[cnt]) , btw this->treeBuilt=false is set in the constructor.
2) your assumption is correct root is put into the port through a shallowCopy
I will try to reduce my reader to something small but usable
Cheers
Orlando
-----Ursprüngliche Nachricht-----
Von: Utkarsh Ayachit [mailto:utkarsh.ayachit at kitware.com]
Gesendet: Thursday, 22. October 2015 17:51
An: RIVERA ROLDAN, Jorge Orlando
Cc: paraview-developers at paraview.org
Betreff: Re: [Paraview-developers] Release memory
Hi,
Sorry, still wrapping my head around your use-case:
1. What would be a the cause of the RequestData() being called again?
Change in timestep?
2. Each time RequestData() is called, the output data (which is same
as root, I am assuming) will always be initialized, thus it won't have
any structure present. So I am not sure how your reader is working :).
If you have sample code + datafile that you can share, it may make
this easier. I am sure I am just missing something simple in your
workflow, that will help unravel it all :).
Utkarsh
On Thu, Oct 22, 2015 at 11:36 AM, RIVERA ROLDAN, Jorge Orlando
<Orlando.RIVERA at mtu.de> wrote:
> 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.
--
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