Implémentation de la classe ItemGroupImpl. Plus de détails...
#include <arcane/core/internal/ItemGroupInternal.h>
Graphe de collaboration de Arcane::ItemGroupInternal:Classes | |
| class | CheckNeedUpdateMutex |
| Mutex pour protéger les appels à ItemGroupImpl::_checkNeedUpdate(). Plus de détails... | |
Attributs publics | |
| ItemGroupImplInternal | m_internal_api |
| IMesh * | m_mesh = nullptr |
| Gestionnaire de groupe associé | |
| IItemFamily * | m_item_family = nullptr |
| Famille associée. | |
| ItemGroupImpl * | m_parent = nullptr |
| String | m_variable_name |
| Groupe parent (groupe null si aucun) | |
| String | m_full_name |
| Nom complet du groupe. | |
| bool | m_is_null = true |
| true si le groupe est nul | |
| eItemKind | m_kind = IK_Unknown |
| Genre des entités du groupe. | |
| String | m_name |
| Nom du groupe. | |
| bool | m_is_own = false |
| true si groupe contient uniquement les entités dont on est propriétaire. | |
| Int64 | m_simd_timestamp = -1 |
| Temps de la derniere modification pour le calcul des infos SIMD. | |
| ItemGroupImpl * | m_own_group = nullptr |
| Items owned by the subdomain. | |
| ItemGroupImpl * | m_ghost_group = nullptr |
| Items not owned by the subdomain. | |
| ItemGroupImpl * | m_interface_group = nullptr |
| Items on the boundary of two subdomains. | |
| ItemGroupImpl * | m_node_group = nullptr |
| Groupe des noeuds. | |
| ItemGroupImpl * | m_edge_group = nullptr |
| Groupe des arêtes. | |
| ItemGroupImpl * | m_face_group = nullptr |
| Groupe des faces. | |
| ItemGroupImpl * | m_cell_group = nullptr |
| Groupe des mailles. | |
| ItemGroupImpl * | m_inner_face_group = nullptr |
| Groupe des faces internes. | |
| ItemGroupImpl * | m_outer_face_group = nullptr |
| ItemGroupImpl * | m_active_cell_group = nullptr |
| AMR. | |
| ItemGroupImpl * | m_own_active_cell_group = nullptr |
| Groupe des mailles propres actives. | |
| ItemGroupImpl * | m_active_face_group = nullptr |
| Groupe des faces actives. | |
| ItemGroupImpl * | m_own_active_face_group = nullptr |
| Groupe des faces actives propres. | |
| ItemGroupImpl * | m_inner_active_face_group = nullptr |
| Groupe des faces internes actives. | |
| ItemGroupImpl * | m_outer_active_face_group = nullptr |
| Groupe des faces externes actives. | |
| std::map< Integer, ItemGroupImpl * > | m_level_cell_group |
| Groupe des mailles de niveau. | |
| std::map< Integer, ItemGroupImpl * > | m_own_level_cell_group |
| Groupe des mailles propres de niveau. | |
| std::map< String, AutoRefT< ItemGroupImpl > > | m_sub_groups |
| Ensemble de tous les sous-groupes. | |
| bool | m_need_recompute = false |
| Vrai si le groupe doit être recalculé | |
| bool | m_need_invalidate_on_recompute = false |
| Vrai si l'on doit activer les invalidate observers en cas de recalcul. | |
| bool | m_transaction_mode = false |
| Vrai si le groupe est en mode de transaction directe. | |
| bool | m_is_local_to_sub_domain = false |
| Vrai si le groupe est local au sous-domaine. | |
| IFunctor * | m_compute_functor = nullptr |
| Fonction de calcul du groupe. | |
| bool | m_is_all_items = false |
| Indique s'il s'agit du groupe de toutes les entités. | |
| bool | m_is_constituent_group = false |
| Indique si le groupe est associé à un constituant (IMeshComponent) | |
| SharedPtrT< GroupIndexTable > | m_group_index_table |
| Table de hachage du local id des items vers leur position en enumeration. | |
| Ref< IVariableSynchronizer > | m_synchronizer |
| Synchronizer du groupe. | |
| UniqueArray< Int32 > | m_items_index_in_all_group |
| std::map< const void *, IItemGroupObserver * > | m_observers |
| localids -> index (UNIQUEMENT ALLITEMS) | |
| bool | m_observer_need_info = false |
| Synthése de besoin de observers en informations de transition. | |
| UniqueArray< Int32 > | m_local_buffer { MemoryUtils::getAllocatorForMostlyReadOnlyData() } |
| Array< Int32 > * | m_items_local_id = &m_local_buffer |
| Liste des numéros locaux des entités de ce groupe. | |
| VariableArrayInt32 * | m_variable_items_local_id = nullptr |
| bool | m_is_contiguous = false |
| bool | m_is_check_simd_padding = true |
| Vrai si les localIds sont consécutifs. | |
| bool | m_is_print_check_simd_padding = false |
| bool | m_is_print_apply_simd_padding = false |
| bool | m_is_print_stack_apply_simd_padding = false |
| CheckNeedUpdateMutex | m_check_need_update_mutex |
| Mutex pour protéger la mise à jour. | |
| ItemGroupSubPartsByType | m_sub_parts_by_type |
| Sous-partie d'un groupe en fonction de son type. | |
Fonctions membres privées | |
| void | _notifyDirectRemoveItems (SmallSpan< const Int32 > removed_ids, Int32 nb_remaining) |
| void | _init () |
Attributs privés | |
| Int64 | m_timestamp = -1 |
| Temps de la derniere modification. | |
Amis | |
| class | ItemGroupImplInternal |
Implémentation de la classe ItemGroupImpl.
Le container contenant la liste des entités du groupe est soit une variable dans le cas d'une group standard, soit un tableau simple dans le cas d'un groupe ayant un parent. En effet, les groupes ayant des parents sont des groupes générés dynamiquement (par exemple le groupe des entités propres) et ne sont donc pas toujours présents sur tous les sous-domaines (une variable doit toujours exister sur tous les sous-domaines). De plus, leur valeur n'a pas besoin d'être sauvée lors d'une protection.
Définition à la ligne 136 du fichier ItemGroupInternal.h.
| Arcane::ItemGroupInternal::ItemGroupInternal | ( | ) |
Définition à la ligne 38 du fichier ItemGroupInternal.cc.
| Arcane::ItemGroupInternal::ItemGroupInternal | ( | IItemFamily * | family, |
| const String & | name ) |
Définition à la ligne 49 du fichier ItemGroupInternal.cc.
| Arcane::ItemGroupInternal::ItemGroupInternal | ( | IItemFamily * | family, |
| ItemGroupImpl * | parent, | ||
| const String & | name ) |
Définition à la ligne 66 du fichier ItemGroupInternal.cc.
| Arcane::ItemGroupInternal::~ItemGroupInternal | ( | ) |
Définition à la ligne 84 du fichier ItemGroupInternal.cc.
|
private |
Définition à la ligne 99 du fichier ItemGroupInternal.cc.
|
private |
Définition à la ligne 520 du fichier ItemGroupInternal.cc.
Définition à la ligne 355 du fichier ItemGroupInternal.cc.
| void Arcane::ItemGroupInternal::applySimdPadding | ( | ) |
Applique le padding pour la vectorisation.
Définition à la ligne 287 du fichier ItemGroupInternal.cc.
Références Arcane::platform::getStackTrace(), Arcane::ITraceMng::info(), m_item_family, et m_name.
Référencé par checkUpdateSimdPadding().
Voici le graphe d'appel pour cette fonction :
Voici le graphe des appelants de cette fonction :| void Arcane::ItemGroupInternal::checkIsContiguous | ( | ) |
Vérifie que les localIds() sont contigüs.
Définition à la ligne 262 du fichier ItemGroupInternal.cc.
Références Arcane::ConstArrayView< T >::empty(), et Arcane::ConstArrayView< T >::size().
Voici le graphe d'appel pour cette fonction :| void Arcane::ItemGroupInternal::checkUpdateSimdPadding | ( | ) |
Remplit les derniers éléments du groupe pour avoir un vecteur SIMD complet.
Pour que la vectorisation fonctionne il faut que le nombre d'éléments du groupe soit un multiple de la taille d'un vecteur SIMD. Si ce n'est pas le cas, on remplit les dernières valeurs du tableau des localId() avec le dernier élément.
Par exemple, on supporse une taille d'un vecteur SIMD de 8 (ce qui est le maximum actuellement avec l'AVX512) et un groupe grp de 13 éléments. Il faut donc remplit le groupe comme suit:
A noter que la taille du groupe reste effectivement de 13 éléments. Le padding supplémentaire n'est que pour les itérations via ENUMERATE_SIMD. Comme le tableau des localId() est alloué avec l'allocateur d'alignement il est garanti que la mémoire allouée est suffisante pour faire le padding.
Définition à la ligne 331 du fichier ItemGroupInternal.cc.
Références applySimdPadding(), Arcane::ITraceMng::info(), m_is_check_simd_padding, m_item_family, et m_simd_timestamp.
Voici le graphe d'appel pour cette fonction :| void Arcane::ItemGroupInternal::checkValid | ( | ) |
Définition à la ligne 444 du fichier ItemGroupInternal.cc.
|
inline |
Définition à la ligne 210 du fichier ItemGroupInternal.h.
|
inline |
Définition à la ligne 248 du fichier ItemGroupInternal.h.
|
inline |
Définition à la ligne 224 du fichier ItemGroupInternal.h.
|
inline |
Définition à la ligne 249 du fichier ItemGroupInternal.h.
| ItemInfoListView Arcane::ItemGroupInternal::itemInfoListView | ( | ) | const |
Définition à la ligne 155 du fichier ItemGroupInternal.cc.
| ItemInternalList Arcane::ItemGroupInternal::items | ( | ) | const |
Définition à la ligne 135 du fichier ItemGroupInternal.cc.
|
inline |
Définition à la ligne 218 du fichier ItemGroupInternal.h.
|
inline |
Définition à la ligne 219 du fichier ItemGroupInternal.h.
|
inline |
Définition à la ligne 213 du fichier ItemGroupInternal.h.
| Int32 Arcane::ItemGroupInternal::maxLocalId | ( | ) | const |
Définition à la ligne 146 du fichier ItemGroupInternal.cc.
|
inline |
Définition à la ligne 212 du fichier ItemGroupInternal.h.
|
inline |
Définition à la ligne 220 du fichier ItemGroupInternal.h.
|
inline |
Définition à la ligne 209 du fichier ItemGroupInternal.h.
|
inline |
Définition à la ligne 250 du fichier ItemGroupInternal.h.
| void Arcane::ItemGroupInternal::notifyCompactObservers | ( | const Int32ConstArrayView * | info | ) |
Définition à la ligne 226 du fichier ItemGroupInternal.cc.
| void Arcane::ItemGroupInternal::notifyExtendObservers | ( | const Int32ConstArrayView * | info | ) |
Définition à la ligne 196 du fichier ItemGroupInternal.cc.
| void Arcane::ItemGroupInternal::notifyInvalidateObservers | ( | ) |
Définition à la ligne 241 du fichier ItemGroupInternal.cc.
| void Arcane::ItemGroupInternal::notifyReduceObservers | ( | const Int32ConstArrayView * | info | ) |
Définition à la ligne 211 du fichier ItemGroupInternal.cc.
|
inline |
Définition à la ligne 211 du fichier ItemGroupInternal.h.
| void Arcane::ItemGroupInternal::resetSubGroups | ( | ) |
Définition à la ligne 166 du fichier ItemGroupInternal.cc.
|
inline |
Définition à la ligne 233 du fichier ItemGroupInternal.h.
|
inline |
Définition à la ligne 223 du fichier ItemGroupInternal.h.
|
inline |
Définition à la ligne 227 du fichier ItemGroupInternal.h.
|
inline |
Définition à la ligne 221 du fichier ItemGroupInternal.h.
|
friend |
Définition à la ligne 138 du fichier ItemGroupInternal.h.
| ItemGroupImpl* Arcane::ItemGroupInternal::m_active_cell_group = nullptr |
| ItemGroupImpl* Arcane::ItemGroupInternal::m_active_face_group = nullptr |
Groupe des faces actives.
Définition à la ligne 296 du fichier ItemGroupInternal.h.
| ItemGroupImpl* Arcane::ItemGroupInternal::m_cell_group = nullptr |
Groupe des mailles.
Définition à la ligne 288 du fichier ItemGroupInternal.h.
| CheckNeedUpdateMutex Arcane::ItemGroupInternal::m_check_need_update_mutex |
Mutex pour protéger la mise à jour.
Définition à la ligne 341 du fichier ItemGroupInternal.h.
| IFunctor* Arcane::ItemGroupInternal::m_compute_functor = nullptr |
Fonction de calcul du groupe.
Définition à la ligne 309 du fichier ItemGroupInternal.h.
| ItemGroupImpl* Arcane::ItemGroupInternal::m_edge_group = nullptr |
Groupe des arêtes.
Définition à la ligne 286 du fichier ItemGroupInternal.h.
| ItemGroupImpl* Arcane::ItemGroupInternal::m_face_group = nullptr |
Groupe des faces.
Définition à la ligne 287 du fichier ItemGroupInternal.h.
| String Arcane::ItemGroupInternal::m_full_name |
Nom complet du groupe.
Définition à la ligne 268 du fichier ItemGroupInternal.h.
| ItemGroupImpl* Arcane::ItemGroupInternal::m_ghost_group = nullptr |
Items not owned by the subdomain.
Définition à la ligne 283 du fichier ItemGroupInternal.h.
| SharedPtrT<GroupIndexTable> Arcane::ItemGroupInternal::m_group_index_table |
Table de hachage du local id des items vers leur position en enumeration.
Définition à la ligne 312 du fichier ItemGroupInternal.h.
| ItemGroupImpl* Arcane::ItemGroupInternal::m_inner_active_face_group = nullptr |
Groupe des faces internes actives.
Définition à la ligne 298 du fichier ItemGroupInternal.h.
| ItemGroupImpl* Arcane::ItemGroupInternal::m_inner_face_group = nullptr |
Groupe des faces internes.
Définition à la ligne 289 du fichier ItemGroupInternal.h.
| ItemGroupImpl* Arcane::ItemGroupInternal::m_interface_group = nullptr |
Items on the boundary of two subdomains.
Définition à la ligne 284 du fichier ItemGroupInternal.h.
| ItemGroupImplInternal Arcane::ItemGroupInternal::m_internal_api |
Définition à la ligne 263 du fichier ItemGroupInternal.h.
| bool Arcane::ItemGroupInternal::m_is_all_items = false |
Indique s'il s'agit du groupe de toutes les entités.
Définition à la ligne 310 du fichier ItemGroupInternal.h.
| bool Arcane::ItemGroupInternal::m_is_check_simd_padding = true |
Vrai si les localIds sont consécutifs.
Définition à la ligne 333 du fichier ItemGroupInternal.h.
Référencé par checkUpdateSimdPadding().
| bool Arcane::ItemGroupInternal::m_is_constituent_group = false |
Indique si le groupe est associé à un constituant (IMeshComponent)
Définition à la ligne 311 du fichier ItemGroupInternal.h.
| bool Arcane::ItemGroupInternal::m_is_contiguous = false |
Définition à la ligne 332 du fichier ItemGroupInternal.h.
| bool Arcane::ItemGroupInternal::m_is_local_to_sub_domain = false |
Vrai si le groupe est local au sous-domaine.
Définition à la ligne 308 du fichier ItemGroupInternal.h.
| bool Arcane::ItemGroupInternal::m_is_null = true |
true si le groupe est nul
Définition à la ligne 269 du fichier ItemGroupInternal.h.
| bool Arcane::ItemGroupInternal::m_is_own = false |
true si groupe contient uniquement les entités dont on est propriétaire.
Définition à la ligne 272 du fichier ItemGroupInternal.h.
| bool Arcane::ItemGroupInternal::m_is_print_apply_simd_padding = false |
Définition à la ligne 335 du fichier ItemGroupInternal.h.
| bool Arcane::ItemGroupInternal::m_is_print_check_simd_padding = false |
Définition à la ligne 334 du fichier ItemGroupInternal.h.
| bool Arcane::ItemGroupInternal::m_is_print_stack_apply_simd_padding = false |
Définition à la ligne 336 du fichier ItemGroupInternal.h.
| IItemFamily* Arcane::ItemGroupInternal::m_item_family = nullptr |
Famille associée.
Définition à la ligne 265 du fichier ItemGroupInternal.h.
Référencé par applySimdPadding(), et checkUpdateSimdPadding().
| UniqueArray<Int32> Arcane::ItemGroupInternal::m_items_index_in_all_group |
Définition à la ligne 316 du fichier ItemGroupInternal.h.
Liste des numéros locaux des entités de ce groupe.
Définition à la ligne 330 du fichier ItemGroupInternal.h.
| eItemKind Arcane::ItemGroupInternal::m_kind = IK_Unknown |
Genre des entités du groupe.
Définition à la ligne 270 du fichier ItemGroupInternal.h.
| std::map<Integer, ItemGroupImpl*> Arcane::ItemGroupInternal::m_level_cell_group |
Groupe des mailles de niveau.
Définition à la ligne 300 du fichier ItemGroupInternal.h.
| UniqueArray<Int32> Arcane::ItemGroupInternal::m_local_buffer { MemoryUtils::getAllocatorForMostlyReadOnlyData() } |
Définition à la ligne 329 du fichier ItemGroupInternal.h.
| IMesh* Arcane::ItemGroupInternal::m_mesh = nullptr |
Gestionnaire de groupe associé
Définition à la ligne 264 du fichier ItemGroupInternal.h.
| String Arcane::ItemGroupInternal::m_name |
Nom du groupe.
Définition à la ligne 271 du fichier ItemGroupInternal.h.
Référencé par applySimdPadding().
| bool Arcane::ItemGroupInternal::m_need_invalidate_on_recompute = false |
Vrai si l'on doit activer les invalidate observers en cas de recalcul.
Définition à la ligne 306 du fichier ItemGroupInternal.h.
| bool Arcane::ItemGroupInternal::m_need_recompute = false |
Vrai si le groupe doit être recalculé
Définition à la ligne 305 du fichier ItemGroupInternal.h.
| ItemGroupImpl* Arcane::ItemGroupInternal::m_node_group = nullptr |
Groupe des noeuds.
Définition à la ligne 285 du fichier ItemGroupInternal.h.
| bool Arcane::ItemGroupInternal::m_observer_need_info = false |
Synthése de besoin de observers en informations de transition.
Définition à la ligne 319 du fichier ItemGroupInternal.h.
| std::map<const void*, IItemGroupObserver*> Arcane::ItemGroupInternal::m_observers |
localids -> index (UNIQUEMENT ALLITEMS)
Observers du groupe
Définition à la ligne 318 du fichier ItemGroupInternal.h.
| ItemGroupImpl* Arcane::ItemGroupInternal::m_outer_active_face_group = nullptr |
Groupe des faces externes actives.
Définition à la ligne 299 du fichier ItemGroupInternal.h.
| ItemGroupImpl* Arcane::ItemGroupInternal::m_outer_face_group = nullptr |
Groupe des faces externes
Définition à la ligne 290 du fichier ItemGroupInternal.h.
| ItemGroupImpl* Arcane::ItemGroupInternal::m_own_active_cell_group = nullptr |
Groupe des mailles propres actives.
Définition à la ligne 295 du fichier ItemGroupInternal.h.
| ItemGroupImpl* Arcane::ItemGroupInternal::m_own_active_face_group = nullptr |
Groupe des faces actives propres.
Définition à la ligne 297 du fichier ItemGroupInternal.h.
| ItemGroupImpl* Arcane::ItemGroupInternal::m_own_group = nullptr |
Items owned by the subdomain.
Définition à la ligne 282 du fichier ItemGroupInternal.h.
| std::map<Integer, ItemGroupImpl*> Arcane::ItemGroupInternal::m_own_level_cell_group |
Groupe des mailles propres de niveau.
Définition à la ligne 301 du fichier ItemGroupInternal.h.
| ItemGroupImpl* Arcane::ItemGroupInternal::m_parent = nullptr |
Définition à la ligne 266 du fichier ItemGroupInternal.h.
| Int64 Arcane::ItemGroupInternal::m_simd_timestamp = -1 |
Temps de la derniere modification pour le calcul des infos SIMD.
Définition à la ligne 280 du fichier ItemGroupInternal.h.
Référencé par checkUpdateSimdPadding().
| std::map<String, AutoRefT<ItemGroupImpl> > Arcane::ItemGroupInternal::m_sub_groups |
Ensemble de tous les sous-groupes.
Définition à la ligne 304 du fichier ItemGroupInternal.h.
| ItemGroupSubPartsByType Arcane::ItemGroupInternal::m_sub_parts_by_type |
Sous-partie d'un groupe en fonction de son type.
Définition à la ligne 346 du fichier ItemGroupInternal.h.
| Ref<IVariableSynchronizer> Arcane::ItemGroupInternal::m_synchronizer |
Synchronizer du groupe.
Définition à la ligne 313 du fichier ItemGroupInternal.h.
|
private |
Temps de la derniere modification.
Définition à la ligne 276 du fichier ItemGroupInternal.h.
| bool Arcane::ItemGroupInternal::m_transaction_mode = false |
Vrai si le groupe est en mode de transaction directe.
Définition à la ligne 307 du fichier ItemGroupInternal.h.
| VariableArrayInt32* Arcane::ItemGroupInternal::m_variable_items_local_id = nullptr |
Définition à la ligne 331 du fichier ItemGroupInternal.h.
| String Arcane::ItemGroupInternal::m_variable_name |
Groupe parent (groupe null si aucun)
Nom de la variable contenant les indices des éléments du groupe
Définition à la ligne 267 du fichier ItemGroupInternal.h.