Salome HOME
PR: debug SMDS memimp
[modules/smesh.git] / src / SMDS / Notes
1 Problemes en cours
2 ==================
3
4 - visualisation de groupe (type d'element): on voit tout le maillage, mais le groupe est OK
5 - inversion d'un volume (tetra): exception
6 - script de creation de noeuds et d'elements: OK, mais pas compatible avec version precedente (numerotation noeuds differente)
7 - affichage numeros noeuds: numeros en trop sur O (enlever dans vtkUnstructuredGrid)    
8
9 A tester, non pris en compte
10 ============================
11 - engine standalone
12 - polyedres (attendre vtk)
13
14
15 =============================== Hypothese de refonte de l'API de SMDS
16
17 n'utiliser que vtkUnstructuredGrid, ne pas avor d'objets SMDS_MeshElement mais seulement des index de vtkUnstructuredGrid.
18 2987 usages de SMDS_MeshNodes
19 810            SMDS_MeshElement
20 ...
21 ==> en dernier ressort, lourd
22 ================================================================================
23
24 Essai a API SMDS a peu pres constante
25 =====================================
26
27 SMDS_Mesh
28   static vector<SMDS_Mesh*> _meshList;     --> retrouver un SMDS_Mesh
29   vtkUnstructuredGrid*      myGrid;
30
31   vector<SMDS_MeshNode *>   myNodes;       --> meme index que dans le pointSet de myGrid
32   vector<SMDS_MeshCell *>   myCells;       --> index = ID client, pas le meme index que dans le cellTypes de myGrid (ID vtk)
33
34
35
36 SMDS_MeshElement
37   int myID;                                --> index dans la structure geree par SMDS_Mesh
38   int myMeshId;                            --> pour retrouver SMDS_Mesh* dans _meshList
39   int myShapeId;                           --> pour retrouver la subShape
40                                                          
41
42 SMDS_MeshNode: SMDS_MeshElement
43   SMDS_PositionPtr myPosition;             -->  A REVOIR : objet position dans la shape geom
44   ##vector<int> myInverseElements;         -->  SUPPRIME : pour retrouver les elements, vtkCellLinks
45
46
47 SMDS_MeshCell: SMDS_MeshElement            --> generique pour tous les elements (cells)
48   int myVtkID                              --> A SUPPRIMER
49
50 SMDS_MeshVolume: SMDS_MeshCell
51
52 SMDS_VolumeOfNodes: SMDS_MeshVolume        --> Garder temporairement, utilisation dans StdMesher et SMDS_VolumeTool
53   const SMDS_MeshNode **myNodes;           --> Couteux
54   int                 myNbNodes;           -->  ""
55
56 SMDS_VolumeVtkNodes: SMDS_MeshVolume       --> Utiliser systematiquement dans SMDS,
57                                            --> IMPLEMENTER.
58
59
60 SMDS_MeshElementIDFactory: SMDS_MeshNodeIDFactory
61   vector<int> myIDElements; // index = ID client, value = ID vtk  --> A SUPPRIMER, ne sert que dans SMDS_MeshElementIDFactory
62   vector<int> myVtkIndex;   // index = ID vtk, value = ID client  --> A REPORTER dans SMDS_Mesh
63
64
65
66
67 ========= TODO ============
68
69 enlever vtkId de SMDS_MeshCell, utiliser SMDS_MeshElementIDFactory.
70
71 ajouter ID dans SMDS_Mesh::createTriangle 
72 verifier ID dans SMDS_Mesh::Find*OrCreate
73
74 ===================================================
75 occupation memoire cube 100*100*100 sans affichage
76 NOTES:
77 - sur Debian Sarge 64 bits, les mesures malloc_stat() semblent coherentes
78   avec une mesure externe globale(recherche du passage en swap du process).
79 - sur Ubuntu 9.10 64 bits, les mesures malloc_stat() donnent des resultats bizarres (surestimation ?),
80   mais la mesure avec l'outil KDE de surveillance systeme est OK avec la recherche du swap.
81
82
83 Reference : V513 Debian Sarge 64 bits: --> 463 - 33 = 430 Mo
84 -------------------------------------
85 Total (incl. mmap):
86 system bytes     =   43757568
87 in use bytes     =   32909584 = 33M
88 max mmap regions =         41
89 max mmap bytes   =   16371712
90 ----
91 Total (incl. mmap):
92 system bytes     =  464670720
93 in use bytes     =  463105120 = 463M
94 max mmap regions =         47
95 max mmap bytes   =   28188672
96
97 Debian Sarge 64 bits, vtkUnstructuredGrid nodes et hexa, 4 janvier 2010 --> 512 - 41 = 471M
98 -----------------------------------
99
100 Total (incl. mmap):
101 system bytes     =   52133888
102 in use bytes     =   41340320 : 41M
103 max mmap regions =         72
104 max mmap bytes   =   24625152
105 ----
106 Total (incl. mmap):
107 system bytes     =  520560640
108 in use bytes     =  518735584 : 512M
109 max mmap regions =         88
110 max mmap bytes   =  198385664
111
112 idem avec pool SMDS_MeshNodes --> 483 -33 = 450M
113 -----------------------------
114 Total (incl. mmap):
115 system bytes     =   43696128
116 in use bytes     =   32915184 : 33M 
117 max mmap regions =         41
118 max mmap bytes   =   16371712
119 ----
120 Total (incl. mmap):
121 system bytes     =  484806656
122 in use bytes     =  482980992 : 483M
123 max mmap regions =         58
124 max mmap bytes   =  184557568
125
126 idem ci-dessus + pool SMDS_VolumeVtkNodes --> 475 -33 = 442M (git: add ObjectPool.hxx)
127 -----------------------------------------
128
129 Total (incl. mmap):
130 system bytes     =   43200512
131 in use bytes     =   32908576 : 33M
132 max mmap regions =         41
133 max mmap bytes   =   16371712
134 ----
135 Total (incl. mmap):
136 system bytes     =  478068736
137 in use bytes     =  475144400 : 475M
138 max mmap regions =         59
139 max mmap bytes   =  184692736
140
141 remplacement SMDS_PositionPtr: (boost::shared_ptr<SMDS_Position> --> SMDS_Position*) --> 436 - 35 = 401M (git SMDS_Position)
142 ------------------------------------------------------------------------------------
143 Total (incl. mmap):
144 system bytes     =   45408256
145 in use bytes     =   35097680 : 35M
146 max mmap regions =         47
147 max mmap bytes   =   18116608
148 ----
149 Total (incl. mmap):
150 system bytes     =  438935552
151 in use bytes     =  436116560 : 436M
152 max mmap regions =         65
153 max mmap bytes   =  186437632
154
155 simplification SMDS_SpacePosition (pas de double[3]) --> 418 -33 = 385M (git SMDS_SpacePosition)
156 ----------------------------------------------------
157 Total (incl. mmap):
158 system bytes     =   42582016
159 in use bytes     =   32883552 : 33M
160 max mmap regions =         41
161 max mmap bytes   =   16371712
162 ----
163 Total (incl. mmap):
164 system bytes     =  421728256
165 in use bytes     =  418378000 : 418M
166 max mmap regions =         58
167 max mmap bytes   =  183640064
168
169 sizeof(SMDS_MeshElement) 16
170 sizeof(SMDS_MeshNode) 24
171 sizeof(SMDS_MeshCell) 24
172 sizeof(SMDS_VolumeVtkNodes) 24
173 sizeof(SMDS_Position) 16
174 sizeof(SMDS_SpacePosition) 16
175
176 impact d'un int en plus dans SMDS_MeshElement --> 426 - 33 = 393M
177 ---------------------------------------------
178
179 sizeof(SMDS_MeshElement) 24
180 sizeof(SMDS_MeshNode) 32       --> on retrouve bien les 8M
181 sizeof(SMDS_MeshCell) 24
182 sizeof(SMDS_VolumeVtkNodes) 24
183 sizeof(SMDS_Position) 16
184 sizeof(SMDS_SpacePosition) 16
185
186 Total (incl. mmap):
187 system bytes     =   43192320
188 in use bytes     =   32681088 : 33M
189 max mmap regions =         41
190 max mmap bytes   =   16371712
191 ----
192 Total (incl. mmap):
193 system bytes     =  429334528
194 in use bytes     =  426424576 : 426M
195 max mmap regions =         59
196 max mmap bytes   =  184692736
197
198 remplacement std::set par std::vector dans SMESHDS_SubMesh --> 347 - 35 = 312M
199 ----------------------------------------------------------
200 sizeof(SMDS_MeshElement) 24
201 sizeof(SMDS_MeshNode) 32
202 sizeof(SMDS_MeshCell) 24
203 sizeof(SMDS_VolumeVtkNodes) 24
204 sizeof(SMDS_Position) 16
205 sizeof(SMDS_SpacePosition) 16
206
207 Total (incl. mmap):
208 system bytes     =   45404160
209 in use bytes     =   35132160 --> 35M
210 max mmap regions =         49
211 max mmap bytes   =   17723392
212 ----
213 Total (incl. mmap):
214 system bytes     =  349831168
215 in use bytes     =  346885424 --> 347M
216 max mmap regions =         73
217 max mmap bytes   =  204148736
218
219 Ce resultat est coherent avec une recherche de swap sur une machine a 8Go de memoire:
220 Cube a 270**3 mailles (~20M mailles) --> 6.2 Go (idem Debian Sarge et Ubuntu 9.10, 64 bits)
221 Le meme avec V5.1.3 --> 14 Go (swap)
222