Arcane  v3.14.11.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
Nouvelles fonctionnalités

Table des matières

Cette page contient les nouveautés de chaque version de Arcane v3.X.X.

Les nouveautés successives apportées par les versions de Arcane antérieures à la version 3 sont listées ici : Changelog Arcane v2.X.X


Arcane Version 3.14.* (novembre 2024)

Nouveautés/Améliorations

API Accélérateur

Changements

  • Dans le service ArcaneCaseMeshService, Initialise les variables spécifiées dans le jeu de données après application du partitionnement au lieu de le faire avant (PR #1751)
  • Utilise tous les rangs pour la lecture en parallèle des fichiers GMSH. Cela permet d'éviter d'avoir des partitions vides par la suite ce qui n'est pas supporté par ParMetis (PR #1735)
  • Rend obsolète NumArray::span() and NumArray::constSpan() PR #1723
  • Supprime la classe obsolète Filterer (PR #1708)
  • Rend explicite les constructeurs des variables qui prennent un VariableBuildInfo en argument (PR #1693)
  • Change le comportement par défaut de ILoadBalanceMng pour ne pas prendre en compte le nombre de variables allouées et ainsi avoir un partitionnement qui dépend uniquement du maillage (PR #1673)
  • Supprime le post-traitement au format EnsighHdf. Ce format était expérimental et n'est plus disponible dans les versions récentes de Ensight (PR #1668)
  • Écrit les arêtes et les connectivités associées dans MeshUtils::writeMeshConnectivity() (PR #1651)
  • Rend obsolète mesh::ItemFamily::infos() (PR #1647)
  • Lève une exception si on tente de lire un maillage déjà alloué (PR #1644)
  • Rend obsolete Item::internal() (PR #1627, PR #1642)
  • Rend obsolète IItemFamily::findOneItem() (PR #1623)
  • Lève une exception (au lieu d'un avertissement) si le partitionneur spécifiée par l'utilisateur n'est pas disponible (PR #1635)
  • Supprime possibilité de compiler avec mono (PR #1583)
  • Rend obsolète la version 1 de CartesianMeshCoarsening (PR #1580)

Corrections

  • Corrige erreur de compilation avec CRAY MPICH (PR #1778)
  • Corrige compilation avec les version 2.13+ de libxml2 (PR #1715)
  • Positionne correctement le communicateur de MessagePassing::MessagePassingMng associé à l'implémentation séquentielle SequentialParallelMng. Auparavant cela n'était fait que pour l'implémentation MPI (PR #1661)
  • Dans le lecteur VTK, conserve après la destruction du lecteur les variables lues dans le fichier (PR #1655)
  • Ne détruit en fin d'exécution pas l'instance utilisée dans ArcaneLauncher::setDefaultMainFactory(). Cette instance n'est pas forcément allouée via new (PR #1643)
  • Corrige mauvais comportement dans la gestion des sous-maillages avec les nouvelles connectivités (PR #1636)
  • Corrige non prise en compte de la variable d'environnemnt ARCANE_DOTNET_USE_LEGACY_DESTROY (PR #1570)
  • Ajoute appel manquant à ArcaneMain::arcaneFinalize() lorsqu'on utilise .Net (PR #1567)
  • Corrige mauvaise prise en compte des options pour l'outil arcane_partition_mesh (PR #1555)

Interne

  • Ajoute typedef AlephInt qui sert pour spécifier les index des lignes et colonnes des matrices et vecteurs. Pour l'instant ce type est int mais lorsque le support 64 bit sera actif il sera long int ou long long int (PR #1770)
  • Libère les buffers de sérialisation dès que possible lors de l'équilibrage de charge (PR #1744, PR #1756)
  • Ajout d'un service expérimental permettant de subdiviser un maillage lors de l'initialisation (PR #1606, PR #1728)
  • Rend publique les classes ItemBase et MutableItemBase PR #1740
  • Ajoute méthode interne de finalisation de l'API accélérateur. Cela permet d'afficher des statistiques et de libérer les ressoures associées (PR #1727
  • Ajoute tests pour l'utilisation de plusieurs critères avec le partitionnement avec plusieurs maillages (PR #1719, PR #1772)
  • Dans BitonicSort, n'alloue pas les tableaux des rangs et des index s'ils ne sont pas utilisés (PR #1680)
  • Utilise une nouvelle implémentation de table de hashage pour ItemInternalMap. Cette implémentation est active par défaut mais il est possible d'utiliser l'ancienne en positionant l'option ARCANE_USE_HASHTABLEMAP2_FOR_ITEMINTERNALMAP à OFF lors de la configuration (PR #1611, PR #1617, PR #1622, PR #1624, PR #1625, PR #1628, PR #1629, PR #1631, PR #1677, PR #1745)
  • Nettoyage et refonte du partitionnement avec ParMetis pour utiliser IParallelMng au lieu d'appeler MPI directement (PR #1662, PR #1665, PR #1667, PR #1671)
  • Ajoute support pour créér un sous-communicateur à la manière de MPI_Comm_Split (PR #1669, PR #1672)
  • Nettoyage et refactoring des classes gérant la numérotation des uniqueId() des arêtes (PR #1658)
  • Utilise un pointeur sur mesh::DynamicMeshKindInfos à la place d'une instance dans mesh::ItemFamily (PR #1646)
  • Ajoute dans ICaseMeshService la possibilité d'effectuer des opérations après le partitionnement (PR #1637)
  • Ajoute API interne pour IIncrementalItemConnectivity (PR #1615, PR #1618, PR #1626)
  • Ajoute point d'entrée de type build pour le service de test unitaire (PR #1613)
  • Ajoute possibilité dans IIncrementalItemConnectivity de notifier de l'ajout de plusieurs entités à la fois (PR #1610)
  • Ajoute méthode pour récupérer la pile d'appel via LLVM ou GDB. Cela permet notamment d'avoir les numéros de ligne dans la pile d'appel (PR #1572, PR #1597, PR #1616) TODO INDIQUER METHOD
  • Ajoute support expérimental pour KDI (PR #1594, PR #1595, PR #1599)
  • Optimisations diverses dans le service VtkHdfV2PostProcessor (PR #1575, PR #1600)
  • [EXPÉRIMENTAL] Ajoute nouvelle version de calcul des uniqueId() des faces basée sur les uniqueId() des noeuds qui la compose. Cela ne fonctionne qu'en séquentiel pour l'instant (PR #1550)
  • Ajoute fonction pour générer un uniqueId() à partir d'une liste de uniqueId() (PR #1549)
  • Optimise le calcul de la version 3 des mailles fantômes (PR #1547)

Compilation et Intégration Continue (CI)

  • Utilise un wrapper de dotnet pour la compilation. Ce wrapper s'assure qu'on ne va pas modifier le HOME de l'utilisateur ce qui pouvait poser des problèmes de verrou lorsque plusieurs instances de dotnet se lancent en même temps (PR #1789, PR #1791, PR #1792)
  • Ajoute possibilité d'ajouter des bibliothèques lors de l'édition de lien de arccore_message_passing_mpi. Cela permet de garantir que certaines bibliothèques seront bien ajoutées à l´édition de lien et est notamment utilisé pour le support du MPI 'GPU-Aware' avec CRAY MPICH (PR #1786)
  • Ajoute workflow 'ubuntu 22.04' pour les dockers IFPEN (PR #1781)
  • Ajoute variable CMake ARCCON_NO_TBB_CONFIG pour forcer à ne pas utiliser le fichier de configuration CMake pour les TBB (PR #1779)
  • Ajoute tests de protection/reprise pour le déraffinement (PR #1707)
  • Corrige erreur de compilation lorsque PETSc n'est pas compilé avec MUMPS (PR #1694)
  • Ajoute test du lecteur VTK avec des propriétés (PR #1656, PR #1659)
  • Ajoute support pour une somme de contrôle de la connectivité dans les tests de maillage (PR #1654)
  • Écrit les fichiers de sortie des tests dans le répertoire des tests pour permettre de les lancer en parallèle (PR #1541, PR #1653)
  • Mise à jour des images IFPEN 2021 (PR #1542, PR #1579, PR #1587, PR #1588, PR #1592, PR #1593, PR #1598)
  • Supprime version interne de hostfxr.h et coreclr_delegates.h. Ces fichiers sont maintenant dans le SDK dotnet (PR #1591)
  • Corrige détection et configuration de FlexLM (PR #1602, PR #1630)
  • Supprime les répertoires de sortie des tests après exécution pour réduire l'empreinte sur le stockage (PR #1581)
  • Lance les tests de CI en parallèle pour plusieurs workflow (PR #1553)
  • Refonte du système d'action du CI et des images pour le rendre plus souple (PR #1545)

Arccore

Axlstar

  • Remplace std::move() par std::forward() dans la génération de certaines méthodes (PR #1773)
  • Génère via l'interface spécifiée les méthodes pour récupérer les fonctions associées aux options des jeux de données (PR #1601)

Alien

  • Utilise un répertoire de sortie différent pour chaque test afin qu'on puisse les lancer en parallèle (PR #1775)
  • Corrige sorties listings pour certains tests (PR #1765)
  • Corrige sorties listings pour le backend IFPSolver (PR #1730)
  • Corrige erreur d'exécution lorsqu'on utilise l'implémentation séquentielle de IParallelMng (PR #1666)
  • Utilise un nom de fichier unique pour les fichiers de sortie des tests. Cela permet de les lancer en parallèle (PR #1663)
  • Récupère le communicateur MPI via MessagePassing::MessagePassingMng::communicator() (PR #1657)
  • Ajoute support accélérateur pour certaines parties (PR #1632, PR #1634)
  • Corrige initialisation avec les versions récentes (2.27+) de Hypre (PR #1603)
  • Ajoute support pour le solver SPAI via PETSc (PR #1578)
  • Ajoute support pour les sorties au format 'Matrix Market' avec PETSc (PR #1577)

Arcane Version 3.13.08 (19 juillet 2024)

Nouveautés/Améliorations

API Accélérateur

Changements

  • Supprime la composante gérant les expressions vectorielles sur les variables car elle n'est plus utilisée depuis longtemps (PR #1537)
  • Utilise clock_gettime() au lieu de clock() pour mesurer le temps CPU utilisé (PR #1532)
  • Utilise par défaut la version parallèle du lecteur MSH. Il est toujours possible d'utiliser la version séquentielle en positionnant la variable d'environnement ARCANE_USE_PARALLEL_MSH_READER à 0 (PR #1528).
  • Supprime le support de la compilation du C# avec mono. Il faut maintenant obligatoire utiliser dotnet (version 6 au minimum) (PR #1470).
  • Renomme ArrayIndex en MDIndex (PR #1397).
  • Ajoute possibilité de récupérer une ComponentCell à partir d'un ComponentItemVectorView (PR #1478)

Corrections

  • Corrige divers bugs dans la gestion des graphes du maillage (PR #1536, PR #1535)
  • Corrige situations de concurrence potentielles en mode multi-thread (PR #1467, PR #1534, PR #1533, PR #1529)
  • Ajoute support des maillages 1D dans le format VtkHdfV2 (PR #1519)
  • Ré-active l'envoi de signaux dans un handler de signal. Cela avait été implicitement désactivé lors de l'utilisation de sigaction au lieu de sigset pour positionner les signaux (PR #1518)
  • Corrige lecture des groupes dans le format MSH lorsqu'il y a plusieurs groupes par entité physique (PR #1507, PR #1509).
  • Ajoute tests de vérification dans l'utilisation des variables partielles (PR #1485)
  • Indique explicitement le type sous-jacent pour eDataType (PR #1418)
  • Corrige non-réutilisation de la mémoire allouée pour les réductions introduite lors de la création de la version 2 des réductions (PR #1439).
  • Corrige mauvais calcul potentiel du nombre d'entités à sérialiser ce qui pouvait se traduire par un débordement de tableau (PR #1423).
  • Ne conserve pas les propriétés de changement de comportement dans MeshMaterialModifier pour éviter des incohérences (PR #1453).

Interne

Compilation et Intégration Continue (CI)

  • Ajoute tests python dans certains workflows (PR #1448, PR #1526).
  • Mise à jour des images ubuntu (PR #1417, PR #1442, PR #1503).
  • Active ccache pour le workflow codecov (PR #1464).
  • Passage à la version vcpkg 2024.04 pour le workflow compile-all-vcpkg (PR #1450).
  • Utilise une variable CMake spécifique pour activer la couverture de test (PR #1444, PR #1445).
  • Mise à jour des CI pour ne plus utiliser les actions github obsolètes (PR #1416).
  • Mise à jour des CI pour les dockers IFPEN (PR #1402, PR #1409)
  • Ajoute possibilité d'utiliser des tests accélérateurs via googletest (PR #1401, PR #1403).
  • Utilise explicitement le service d'échange de message séquentiel pour les tests séquentiels (PR #1430).

Arccore

Axlstar

  • Amélioration de la documentation générée à partir des fichiers AXL (PR #1452)

Alien

Arcane Version 3.12.18 (02 mai 2024)

Note
Avec cette version, il est nécessaire d'activer le C++20 pour pouvoir utiliser l'API accélérateur. Pour cela, il faut positionner la variable CMake ARCCORE_CXX_STANDARD=20 lors de la configuration. Il faut alors au moins les versions GCC 11, Clang 16 ou Visual Studio 2022 ainsi que la version 3.26 de CMake.

Nouveautés/Améliorations

API Accélérateur

Changements

Corrections

  • Corrige fuite mémoire avec les commandes asynchrones lorsqu'on n'appelle pas RunQueue::barrier(). Cela ne devrait normalement pas arriver car il faut toujours appeler barrier() après une commande asynchrone. Maintenant, si des commandes sont actives lorsque la \arcanacc{RunQueue} est détruite une barrière implicite est effectuée (PR #995)
  • Corrige mauvais type de retour de \arcacc{MatItemVariableScalarOutViewT::operator[]()} qui ne permettait pas de modifier la valeur(PR #981).
  • Corrige mauvaise prise en compte des propriétés lors de la création de variables matériaux dans certains cas (PR #1012).
  • Corrige mauvaise valeur pour la dimension Z pour le dé-raffinement 3D (PR #1074)
  • Corrige numérotation des nouvelles entités des maillages cartésiens après dé-raffinement 2D (PR #1055).
  • Corrige divers problèmes dans la gestion de la classe AllCellToAllEnvCellAccessor (PR #1071, PR #1133, PR #1188)
  • S'assure lors de la construction d'une variable matériau que la variable globale associée est bien allouée (PR #1056)
  • Corrige mauvaise valeur de retour de ItemInternal.Cell() dans le wrapper C# (PR #1131)
  • Corrige la version 2 de la sérialisation lorsqu'on utilise MPI_ANY_SOURCE (PR #1116)
  • Corrige mise à jour des synchronisations manquante lorsqu'on dé-raffine mais qu'on ne raffine pas ensuite (PR #1266)
  • Corrige divers problèmes de compilation (PR #1044, PR #1047, PR #1280, PR #1309)
  • Corrige potentielle mauvaise mise à jour du padding SIMD dans la mise à jour des ItemGroup (PR #1165)
  • Utilise la variable CMake CMAKE_CUDA_HOST_COMPILER pour spécifier le compilateur hôte associé à CUDA au lieu d'imposer l'option -ccbin du compilateur NVIDIA (PR #1386)
  • Corrige compilation avec ROCM 6.0 (PR #1170)
  • Corrige compilation avec Swig 4.2 (PR #1098)
  • Corrige compilation avec les versions 2.12.0 et ultérieure de LibXml2 (PR #1019).

Interne

Compilation et Intégration Continue (CI)

  • Mise à jour de l'image U22_G12_C15_CU122 (PR #1031)
  • Supprime utilisation des cibles utilisant CUDA 11.8 ( PR #1078)
  • Mise à jour du worflow vcpkg avec la version 2023-12-12 (PR #1076)
  • Utilise le C++20 pour le workflow compile-all-vcpkg (PR #1048)
  • Positionne par défaut CMAKE_BUILD_TYPE à Release si cette variable n'est pas spécifiée lors de la configuration (PR #1149)
  • Ajoute macro ARCANE_HAS_ACCELERATOR si Arcane est compilé avec le support d'un accélérateur (PR #1123)
  • Ajoute support pour utiliser 'googletest' avec des cas MPI (PR #1092)
  • Supprime utilisation de Clang13 dans le CI (PR #1083)
  • Modifie le workflow IFPEN pour compiler directement tous les composants de framework (PR #1214, PR #1281)
  • Désactive les tests en cours si on publie une modification dans la branche liée au 'pull-request' (PR #1250)
  • Ajoute workflow pour IFPEN 2021 avec les versions 7, 8 et 9 de RHEL (PR #1255)
  • Met à jour certaines actions obsolètes (PR #1218,PR #1222)
  • Utilise le C++20 pour certains workflow (PR #1189)

Arccore

Axlstar

Alien

Arcane Version 3.11.15 (23 novembre 2023)

Nouveautés/Améliorations

API Accélérateur

  • Dans Reducer, utilise la mémoire HostPinned au lieu de la mémoire hôte classique pour conserver la valeur réduite. Cela permet d'accélérer la recopie mémoire entre GPU et GPU (PR #782)
  • Ajoute macro ARCCORE_HOST_DEVICE manquantes pour les méthodes de vérification de tailles de tableau (PR #785).
  • Ajoute méthode RunQueue::platformStream() pour récupérer un pointeur sur l'instance native associée (cudaStream ou hipStream par exemple) (PR #796).
  • Ajoute support accélérateur de la version 6 et la version 8 des synchronisations des matériaux (PR #855).
  • Ajoute support pour récupérer le nombre de milieux d'une maille (PR #860)
  • Ajoute vues sur la variable environnement (PR #904).
  • Ajoute support pour les alogithmes de Scan inclusifs et exclusifs via la classe Scanner (PR #921, PR #923).
  • Ajoute accès accélérateur à certaines méthodes de AllEnvCell et EnvCell (PR #925).
  • Ajoute support pour le filtrage de tableaux (PR #954, PR #955).
  • Ajoute méthode de copie asynchrone pour NumArray et les variables sur le maillage (PR #961, PR #962)
  • Ajoute méthode de remplissage asynchrone NumArrayBase::fill() (PR #963, PR #964).

Changements

Corrections

  • Dans le format MSH, corrige mauvaise lecture des groupes de noeuds lorsqu'il n'y a qu'un seul élément dans ce groupe (PR #784).
  • Corrige compilation de ArrayExtentsValue pour la dimension 2 avec les compilateurs Clang et NVCC (PR #786).
  • Corrige compilation des exemples en C# si l'environnement n'est pas disponible. Positionne aussi la variable d'environnement LD_LIBRARY_PATH si nécessaire (PR #811).
  • Corrige le mode d'optimisation eModificationFlags::OptimizeMultiMaterialPerEnvironment pour qu'il ait le même comportement que les autres modes d'optimisation de mise à jour des valeurs lors du passage d'une maille partielle à une maille pure. Le comportement attendu est de prendre la valeur partielle du matériau et on prenait la valeur partielle du milieu. Pour garder la compatibilité avec l'existant ce mode n'est pas actif par défaut. La méthode IMeshMaterialMng::setUseMaterialValueWhenRemovingPartialValue() permet de l'activer (PR #844, PR #957).
  • Corrige bug dans la synchronisation des DoF dans certaines conditions (PR #920).
  • Corrige fuite mémoire dans la gestion accélérateur de AllEnvCell (PR #931).
  • Corrige mauvaise prise en compte des maillages additionnels pour les options complexes avec occurences multiples (PR #941).

Interne

Compilation et Intégration Continue (CI)

  • Ajoute compilation des exemples dans le CI (PR #809).
  • Mise à jour des images docker dans le CI (PR #818)
  • Pour Arccore, compile avec l'option Z7 sous Windows et ajoute les symboles de débug. L'option Z7 permet d'utiliser l'outil ccache (PR #821)
  • Utilise 'GitHub actions' pour simplifier le CI. Cela permet d'avoir des actions composables de haut niveau plutôt que de dupliquer le code dans chaque workflow (PR #849).
  • Utilise une image docker pour le CI avec 'Circle-CI' et ajoute une exécution pour les plateformes ARM64 (PR #887).
  • Ajoute variable CMake ARCANEFRAMEWORK_BUILD_COMPONENTS permettant de spécifier les composants à compiler. Cette variable est une liste pouvant contenir Arcane et Alien. Par défaut on compile les deux composants (PR #877)
  • Supprime les artefacts après leur récupération pour gagner de la place disque (PR #915).
  • Supprime activation par défaut de la variable CMake ARCANE_ADD_RPATH_TO_LIBS. Cette variable est obsolète et sera supprimée ultérieurement (PR #919).
  • Supprime le répertoire de sortie des tests dans le CI pour gagner de la place sur le disque (PR #924).

Arccore

Axlstar

  • Améliore le support des vieilles versions de Doxygen (PR #823).

Arcane Version 3.10.11 (30 juin 2023)

A partir de cette version 3.10, des modifications internes de gestion des connectivités sont envisagées afin de diminuer la consommation mémoire pour la pour les maillages cartésiens ou structurés. La page Optimisations de la connectivité des entités décrit les évolutions envisagées et les éventuelles modifications à effectuer dans les codes utilisateurs de Arcane.

Eléments obsolètes

Nouveautés/Améliorations

  • Création d'une classe SmallArray pour gérer des tableaux de petite taille avec la mémoire allouée sur la pile (PR #615, PR #732).
  • Ajoute possibilité dans l'implémentation PETSc de Aleph de passer des arguments qui seront utilisés pour initialiser PETSc via l'appel à PetscInitialize() (PR #621).
  • Ajoute écrivain de post-traitement au format VTK HDF V2. Ce format permet de mettre dans le même fichier au format HDF5 plusieurs temps de dépouillement (PR #637, PR #638, PR #639).
  • Amélioration de la gestion mémoire des connectivités lors de la création du maillage. Les tableaux sont pré-alloués pour éviter des recopies successives lorsqu'on ajoute les entités une par une (PR #689, PR #763).
  • Ajoute méthode MDSpan::slice() pour retourner une vue sur une sous-partie de la vue initiale (PR #690).
  • Possibilité de calculer dynamiquement le nom du répertoire de sortie dans SimpleTableWriterHelper (PR #607).
  • Ajoute fonctions de calcul de hash SHA3 (PR #695, PR #697, PR #705).
  • Ajoute classe ItemGenericInfoListView pour rendre accessible sur accélérateur les informations génériques sur les entités (comme Item::owner(), Item::uniqueId(), ...) (PR #727).
  • Optimise ItemGroup::applyOperation() pour ne pas passer par des sous-groupes et pour directement utiliser le groupe de base si toutes les entités sont de même type. Ce mécanisme n'est pas actif par défaut. Il faut positionner la variable d'environnement ARCANE_APPLYOPERATION_VERSION à 2 pour l'utiliser (PR #728).
  • Ajoute opérateurs -=, *= et /= pour les vues (via DataSetter) {PR #733).
  • Ajoute classe Vector3 pour généraliser Real3 pour d'autres types (PR #750).
  • Ajoute évènements pour IMesh pour être notifié des appels à IMesh::prepareForDump() PR #771.

API Accélérateur

  • Support pour les copies mémoire avec index sur accélérateur (PR #617, PR #625, PR #658, PR #773)
  • Intégration partielle de CUPTI (CUDA Profiling Tools Interface) permettant de récupérer automatiquement des informations de profiling sur les cartes NVIDIA. Par exemple, cela permet de récupérer les informations sur les transferts mémoire entre le CPU et le GPU (PR #627, PR #632, PR #642).
  • Support en CUDA pour tracer les allocations/désallocations de la mémoire managée et pour allouer par blocs multiples de la taille de page (PR #641, PR #672, PR #685, PR #693).
  • Support des synchronisations avec le mode 'Accelerator Aware' de MPI. Cela permet de faire des synchronisations sans recopie mémoire entre le CPU et l'accélérateur. Ce mécanisme est aussi disponible en mode échange de message en mémoire partagé et en mode hybride (PR #631, PR #644, PR #645, PR #646, PR #654, PR #661, PR #680, PR #681, PR #765).
  • Support sur accélérateur pour savoir si une adresse mémoire donnée est accessible sur accélérateur ou sur le CPU ou les deux. Ajoute aussi deux macros ARCANE_CHECK_ACCESSIBLE_POINTER() et ARCANE_CHECK_ACCESSIBLE_POINTER_ALWAYS() pour vérifier qu'une zone mémoire pour être utilisée dans une RunQueue (PR #660).
  • Support sur accélérateur pour spécifier des informations sur l'allocation mémoire des variables (IVariable::setAllocationInfo()). Cela permet par exemple d'indiquer si une variable sera plutôt accédée sur accélérateur ou sur le CPU (PR #684).
  • Ajoute méthode MeshUtils::markMeshConnectivitiesAsMostlyReadOnly() pour indiquer que les variables gérant la connectivité ne seront pas modifiées fréquemment. Cela permet d'optimiser la gestion mémoire entre accélérateur et CPU pour éviter des recopies. Par défaut les groupes d'entités (ItemGroup) utilisent cet attribut (PR #691, PR #714).
  • Rend accessible sur accélérateur les informations conservées dans AllEnvCell (PR #742).
  • Ajoute dans l'API accélérateur des vues à partir des Span. Cela permet d'avoir des vues sur des conteneurs autres que ceux de Arcane (par exemple std::vector) à partir du moment où les données sont contigues en mémoire (PR #770).
  • Autorise la copie de NumArray depuis différentes zones mémoire (PR #651).
  • Support pour la nouvelle interface IMemoryAllocator3 dans les allocateurs pour accélérateur (PR #671, PR #674).

Changements

  • Autorise la copie d'instance de Runner en utilisant une sémantique par référence (PR #623).
  • Sur accélérateur, utilise par défaut un kernel spécifique sur toute la grille pour les réductions. Auparavant, on utilisait un kernel qui mélangeait opérations atomiques et calcul sur des blocs (PR #640).
  • Utilise la mémoire de l'accélérateur pour les opérations de réduction. Auparavant, on utilisait la mémoire managée (PR #643, PR #683).
  • Change la numérotation des nœuds des mailles hexagonales pour HoneyCombMeshGenerator (PR #657).
  • Regroupe dans le namespace MeshUtils les fonctions de mesh_utils et meshvisitor (PR #725).
  • Déplace les méthodes internes à Arcane de IMesh et IItemFamily dans une interface interne (PR #726, PR #738, PR #752, PR #768).
  • Dans les comparaisons bit à bit, ne considère pas qu'il y a des différences si les deux valeurs à comparer sont des NaN.
  • Ajoute affichage du temps passé dans l'initialisation MPI et du runtime accélérateur (PR #760).
  • Appelle automatiquement ICartesianMesh::computeDirections() après un appel à IMesh::prepareForDump(). Cela permet de garantir que les informations cartésiennes sont cohérentes après un éventuel compactage (PR #772).

Corrections

  • Gère correctement la destruction des instances singleton de StandaloneSubDomain. Avant l'instance était détruite dans les destructeurs globaux après la fin de main() ce qui pouvait poser un problème dans certains cas (PR #619).
  • Corrige erreurs dans le constructeur de recopie de NumArray (PR #717).
  • Dans FloatingPointExceptionSentry, positionne de manière inconditionnelle le flag de gestion des exceptions. Auparavant, on testait si les exceptions étaient actives et si ce n'était pas le cas, on ne faisait rien. Ce mécanisme de détection n'étant pas toujours fiable, il est supprimé (PR #720).
  • Sauvegarde dans les protections le timestamp de modification des maillages (IMesh::timestamp()) ainsi que l'attribut need-compact pour avoir le même comportement avec ou sans reprise. Notamment, need-compact était toujours mis à true lors d'une reprise ce qui faisait qu'on recompactait toujours au moins une après une reprise. Comme les entités étaient compactées cela ne changeait pas les résultats, mais pouvait provoquer des réallocations qui invalidaient les structures calculées telles que les informations de maillage cartésien (PR #739, PR #756)
  • Corrige utilisation de MeshReaderMng::setUseMeshUnit() qui n'était pas pris en compte lorsque la langue du jeu de donnée est en francais (PR #754).
  • Supprime réallocation inutile dans AbstractArray lorsque la nouvelle capacité est identique à l'ancienne (commit cac7fae3c471f6).

Interne

  • Débute support pour créer dynamiquement des services contenant des options du jeu de données (PR #613).
  • Supprime utilisation de ISubDomain dans certaines parties (PR #620).
  • Ajoute fonction pour récupérer les arguments de la ligne de commande (PR #624).
  • Supprime avertissements coverity (PR #626, PR #692).
  • Rend const certaines méthodes de Materials::IMeshComponent (PR #630).
  • Améliorations diverses de la gestion des accélérateurs (PR #647).
  • Corrige compilation avec PAPI 7.0 et PETSc 3.19 (PR #648).
  • Ajoute champ de type Int32 dans les différentes classes gérant les connectivités pour gérer un offset sur les localId(). Pour l'instant cela n'est pas utilisé et l'offset vaut toujours 0 (PR #649, PR #712, PR #723, PR #736, PR #737, PR #744)
  • Support pour utiliser un driver parallèle spécifique pour lancer les tests (PR #663).
  • Remplace l'utilisation de ENUMERATE_* pour accéder aux connectivités par des for-range (PR #666, PR #759).
  • Ajoute interface spécifique pour créer des maillages cartésiens. Cela permettra à terme de fournir des méthodes spécialisées pour ces maillages pour que la génération soit plus rapide et directement avec la bonne numérotation (PR #694, PR #749, PR #751).
  • Ajoute typedefs dans MDSpan pour récupérer le type de l'élément et du Layout (PR #699).
  • Ajoute support pour utiliser des hash communs dans BasicReaderWriter ce qui pourra être utilisé pour les comparaisons bit à bit et rend générique le mécanisme d'accès à cette base de hash (PR #698, PR #700, PR #701).
  • Ajoute adaptateur pour la base de donnée Redis {PR #702).
  • Refonte interne du mécanisme de synchronisation pour le rendre indépendant du type de données (PR #704, PR #708, PR #709, PR #711)
  • Utilise un seul buffer pour la synchronisation multiple de variables au lieu de passer par la sérialisation (PR #710).
  • Ajoute classe MeshKind pour gérer les propriétés sur la structure de maillage (cartésien, non-structuré, amr, ...) (PR #718).
  • Ajoute macro spécifique pour les méthodes obsolètes, mais qui ne seront pas supprimées immédiatement afin de pouvoir désactiver les avertissements de compilation pour ces méthodes. Cela permet au code utilisateur de supprimer les avertissements de compilation pour ces méthodes si la macro ARCANE_NO_DEPRECATED_LONG_TERM est définie lors de la compilation (PR #722).
  • Ajoute possibilité d'afficher l'affinité CPU de tous les rangs (PR #729).
  • Ajoute pour les formats VTK HDF les informations sur les Item::uniqueId() des noeuds et des mailles (PR #741).
  • Amélioration de l'intégration continue pour ne pas lancer les tests si seulement certains fichiers sont modifiés (par exemple uniquement les .md) et ajoute vérification de la date et de la licence (PR #743, PR #745).
  • Rend privé les méthodes de ItemInternalConnectivityList internes à Arcane et simplifie la gestion de la classe en regroupant les informations de connectivités dans une sous-structure (PR #640).
  • Déplace la classe ItemGroupImplPrivate dans son propre fichier (PR #730).
  • Rend constexpr la fonction Arcane::arcaneCheckAt() (PR #746).

Arccore (2.5.0)

  • Propage l'allocateur de la source dans le constructeur et l'opérateur de recopie de UniqueArray et UniqueArray2 (PR #635, PR #656).
  • Utilise Span au lieu de ConstArrayView pour certains arguments pour permettre des vues dont la taille dépasse 2Go (PR #635).
  • Évite la construction d'éléments par défaut qui seront ensuite écrasés dans AbstractArray::_resizeAndCopyView(). Cele permet aussi d'utiliser cette méthode avec des types de données qui n'ont pas de constructeur vide (PR #635).
  • Ne fais plus d'allocation minimale même si un allocateur autre que l'allocateur par défaut est utilisé. Auparavant, on allouait toujours au moins 4 éléments (PR #635).
  • Corrige double allocation inutile dans Array::operator=() si les deux tableaux n'ont pas le même allocateur (PR #655).
  • Permet d'afficher dans le constructeur de Exception le message de l'exception. Cela est utile pour débugger par exemple les exceptions en dehors de try{ ... } catch ou les exceptions qui lancent d'autres exceptions (PR #659).
  • Ajoute interface IMemoryAllocator3 qui enrichit IMemoryAllocator pour passer plus d'informations à l'allocateur. Cela permet d'ajouter par exemple la taille allouée ou le nom du tableau (PR #662, PR #673, PR #677, PR #713, PR #719).
  • Ajoute type Int8 et BFloat16 dans Arccore::eBasicDataType (PR #669)
  • Ajoute différentes fonctions de conversions entre les Span et std::array. Ajoute aussi les méthodes subPart et subPartInterval communes à ArrayView, ConstArrayView et Span (PR #670).
  • Supprime avertissements coverity (PR #675).
  • Support pour donner un nom aux tableaux Array. Cela est utilisé dans IMemoryAllocator3 pour afficher les informations d'allocation (PR #676, PR #682).
  • Déplace les opérateurs tels que '==', '!=', '<<' et '<' dans les classes correspondantes en tant que fonction friend (PR #703).
  • Rend obsolète les méthodes ArrayView::range(), Span::range() et AbstractArray::range(). Ces méthodes génèrent des objets temporaires ce qui peut poser un problème lorsqu'on les utilise dans des boucles for-range. On peut directement utiliser les méthodes begin() ou end() à la place (PR #757).

Axlstar (2.2.0)

  • Ajoute pour expérimentation la possibilité de spécifier plusieurs types (caseoption, subdomain, ...) pour les services (PR #715).

Arcane Version 3.9.5 (04 avril 2023)

Nouveautés/Améliorations

Changements

Corrections

  • Corrige récupération du groupe du jeu de données dans le cas de maillage multiple. On prenait toujours le maillage par défaut pour rechercher les groupes même si l'option était associée à un autre maillage (PR #604).
  • Corrige mauvaise dimension de la barre de recherche dans la documentation dans certains cas (PR #597).
  • Corrige mauvais usage du repartitionneur initial dans le cas où plusieurs maillages sont présents dans le jeu de données. Le partitionneur définissait les variables uniquement sur le premier maillage ce qui introduisait des incohérences (PR #592).
  • Corrige mauvaise détection des connectivités cartésiennes dans la direction Y en 3D (PR #590).
  • Corrige blocage en parallèle dans le lecteur VTK s'il n'y a que des connectivités dans le maillage (PR #589).
  • Corrige mauvais type de maillage lors de l'utilisation de sous-maillage allant d'un maillage 2D à un maillage 1D (PR #587).
  • Corrige ambiguité possible lors de la construction de classes dérivées de Arcane::Item (PR #579).

Interne

Arccore (version 2.2.0)

Arcane Version 3.8.15 (22 février 2023)

Nouveautés/Améliorations

Changements

  • Utilise toujours une classe à la place d'un entier pour spécifier les dimensions (extents) dans les classes Arcane::NumArray et Arcane::MDSpan. Cela permet de se rapprocher de l'implémentation prévue dans le norme C++23 et d'avoir des dimensions statiques (connues à la compilation) (PR #419, PR #425, PR #428).
  • Supprime les timers utilisant le temps CPU au lieu du temps écoulé. Le type Arcane::Timer::TimerVirtual existe toujours mais se comporte maintenant comme le type Arcane::Timer::TimerReal (PR #421).
  • Supprime paramètre template avec le rang du tableau dans les classes Arcane::DefaultLayout, Arcane::RightLayout et Arcane::LefLayout (PR #436).
  • Rend obsolète les méthodes de Arcane::ModuleBuildInfo qui utilisent Arcane::IMesh. Il faut utiliser les méthodes qui utilisent Arcane::MeshHandle. (PR #460).
  • Change le type de retour de Arcane::IMeshBase::handle() pour ne pas retourner de référence mais une valeur (PR #489).
  • Utilise des classes de base spécifiques par type de service lors de la génération des fichiers axl (PR #472).
  • Utilise une nouvelle classe Arcane::ItemConnectedListView (au lieu de Arcane::ItemVectorView) pour gérer les connectivités sur les entités. Les méthodes telles que Arcane::Cell::nodes() retournent maintenant un objet de ce type. Le but de cette nouvelle classe est de pouvoir proposer une structure de données spécique aux connectivités et une autre spécifique aux listes d'entités (telles que les groupes Arcane::ItemGroup). Des opérateurs de conversion ont été ajoutés afin de garantir la compatibilité avec le code source existant (PR #534,PR #535, PR #537, PR #539)
  • Nouveau service de dépouillement au format VTK HDF. Ce format est uniquement supporté par les versions 5.11+ de Paraview. L'implémentation actuelle est expérimentale (PR #510, PR #525, PR #527, PR #528 PR #554, PR #546).
  • Déplace les fichiers d'en-tête de la composante arcane_core et qui se trouvaient à la racine de arcane dans un sous-répertoire arcane/core. Afin de rester compatible avec l'existant des fichiers d'en-tête faisant références à ces nouveaux fichiers sont générés lors de l'installation.
  • Ajoute une composante arcane_hdf5 contenant les classes utilitaires (telles que Arcane::Hdf5::HFile, ...). Les fichiers d'en-te correspondants sont maintenant dans le répertoire arcane/hdf5 (PR #505).
  • Nettoyages des classes gérant HDF5: rend obsolète le constructeur de recopie des classes de Hdf5Utils.h et supprime le support des versions de HDF5 antérieures à la version 1.10 (PR #526).
  • Autorise la création d'instances nulle de Arcane::ItemGroup avant l'initialisation de Arcane. Cela permet par exemple d'avoir des variables globales de Arcane::ItemGroup ou des classess dérivées (PR #544).
  • Modifie le comportement de la macro ENUMERATE_COMPONENTITEM pour utiliser un type plutôt qu'une chaîne de caractères dans le nom de l'énumérateur. Cela permet de l'utiliser avec un paramètre template (PR #540).

Corrections

Interne

Arccore

  • Corrige bug si la méthode Arccore::MessagePassing::Mpi::MpiAdapter::waitSomeRequestsMPI() est appelée avec des requêtes déjà terminées (PR #423).
  • Ajoute dans Arccore::Span et Arccore::Span un paramètre template indiquant le nombre d'éléments de la vue. Cela permettra de gérer des vues avec un nombre d'éléments connus à la compilation comme cela est possible avec std::span (PR #424).
  • Ajoute fonctions Arccore::MessagePassing::mpLegacyProbe() dont la sémantique est similaire à MPI_Iprobe and MPI_Probe (PR #430).
  • Corrige détection de la requête vide (PR #427, PR #429).
  • Amélioration diverses du mécanisme d'intégration continue (PR #503, PR #511, PR #512, PR #513)

Axlstar

  • Add support for using a specific mesh in service instance (PR #451)
  • Remove support to build with mono (PR #465).
  • Remove support for 'DualNode' and 'Link' items (PR #524).
  • Various improvements in documentation (PR #530).
  • Add preliminary support for multi-dimension variables (PR #520).
  • Fix: Add support of Doxygen commands in AXL descriptions (PR #538)
  • Fix: error with complex options containing more than 30 suboptions (PR #533)

Arcane Version 3.7.23 (17 novembre 2022)

Nouveautés/Améliorations:

  • Refonte complète de la documentation afin qu'elle soit plus cohérente et visuellement plus agréable (PR #378, PR #380, PR #382, PR #384, PR #388, PR #390, PR #393, PR #396)
  • Ajoute un service de gestion de sorties au format CSV (voir Service SimpleCsvOutput) (PR #277, PR #362)
  • Ajoute possibilité de spécifier le mot clé Auto pour la variable CMake ARCANE_DEFAULT_PARTITIONER. Cela permet de choisir automatiquement lors de la configuration le partitionneur utilisé en fonction de ceux disponibles (PR #279).
  • Ajoute implémentation des synchronisations qui utilise la fonction MPI_Neighbor_alltoallv (PR #281).
  • Réduction de l'empreinte mémoire utilisée pour la gestion des connectivités suite aux différentes modifications internes
  • Optimisations lors de l'initialisation (PR #302):
    • Utilise std::unordered_set à la place de std::set pour les vérifications de duplication des uniqueId().
    • Lors de la création de maillage, ne vérifie la non-duplication des uniqueId() que en mode check.
  • Crée une classe Arcane::ItemInfoListView pour remplacer à terme Arcane::ItemInternalList et accéder aux informations des entités à partir de leur localId() (PR #305).
  • [accelerator] Ajoute le support des réductions Min/Max/Sum atomiques pour les types Int32, Int64 et double (PR #353).
  • [accelerator] Ajoute nouvel algorithme de réduction sans passer par des opérations atomiques. Cet algorithme n'est pas utilisé par défaut. Il faut l'activer en appelant Arcane::Accelerator::Runner::setDeviceReducePolicy() (PR #365, PR #379)
  • [accelerator] Ajoute possibilité de changer le nombre de threads par bloc lors du lancement d'une commande via Arcane::Accelerator::RunCommand::addNbThreadPerBlock() (PR #374)
  • [accelerator] Ajoute support pour le pre-chargement (prefetching) de conseils (advice) de zones mémoire (PR #381)
  • [accelerator] Ajoute support pour récupérer les informations sur les accélérateurs disponibles et associer un accélérateur à une instance de Arcane::Accelerator::Runner (PR #399).
  • Début des développements pour pouvoir voir une variable tableau sur les entités comme une variable multi-dimensionnelle (PR #335).
  • Ajoute un observable Arcane::MeshHandle::onDestroyObservable() pour pouvoir être notifié lors de la destruction d'une instance de maillage Arcane::IMesh (PR #336).
  • Ajoute méthode Arcane::mesh_utils::dumpSynchronizerTopologyJSON() pour sauver au format JSON la topologie de communication pour les synchronisation (PR #360).
  • Ajoute méthode Arcane::ICartesianMesh::refinePatch3D() pour raffiner un maillage 3D en plusieurs patchs AMR (PR #386).
  • Ajoute implémentation de lecture de compteurs hardware via l'API perf de Linux (PR #391).
  • Ajoute support pour le profiling automatiquement des commandes lancées via RUNCOMMAND_ENUMERATE (PR #392, PR #394, PR #395)

Changements:

  • Modifie les classes associées à Arcane::NumArray (Arcane::MDSpan, Arcane::ArrayBounds, ...) pour que le paramètre template gérant le rang soit une classe et pas un entier. Le but à terme est d'avoir les mêmes paramètres templates que les classes std::mdspan et std::mdarray prévues pour les normes 2023 et 2026 du C++. Il faut donc maintenant remplacer les dimensions en dur par les mots clés Arcane::MDDim1, Arcane::MDDim2, Arcane::MDDim3 ou Arcane::MDDim4 (PR #333)
  • La méthode Arcane::NumArray::resize() n'appelle plus le constructeur par défaut pour les éléments du tableau. C'était déjà le cas pour les types simples (Arcane::Real, Arcane::Real3, ...) mais maintenant c'est le cas aussi pour les types utilisateurs. Cela permet d'appeler cette méthode lorsque la mémoire est allouée sur l'accélérateur.
  • Ajoute classe Arcane::ItemTypeId pour gérer le type de l'entité (PR #294)
  • Le type de l'entité est maintenant conservé sur un Arcane::Int16 au lieu d'un Arcane::Int32 (PR #294)
  • Supprime méthodes obsolètes de Arcane::ItemVector, MathUtils.h, Arcane::IApplication, Arcane::Properties, Arcane::IItemFamily (PR #304).
  • Refonte des classes gérant l'énumération des entités (PR #308, PR #364, PR #366).
  • Refonte de la gestion du fichier de configuration ArcaneConfig.cmake géneré (PR #318):
    • N'exporte plus par défaut les packages externes dans ArcaneTargets.cmake. Le fichier ArcaneConfig.cmake fait maintenant des appels à la commande CMake find_dependency. La variable CMake FRAMEWORK_NO_EXPORT_PACKAGES n'est donc plus utilisé par défaut.
    • Ajoute dans ArcaneConfig.cmake la variable ARCANE_USE_CONFIGURATION_PATH pour permettre de charger les chemins des packages issus de la configuration de Arcane. Cette variable est positionnée à TRUE définie par défaut.
  • Modifie le prototype de certaines méthodes de classes implémentant Arcane::IItemFamily pour utiliser Arcane::Item à la place de Arcane::ItemInternal (PR #311)
  • Crée une classe Arcane::ItemFlags pour gérer les flags concernant les propriétés des objets qui étaient avant dans Arcane::ItemInternal (PR #312)
  • Rend obsolète l'opérateur operator-> pour la classe Arcane::Item et les classes dérivées (PR #313)
  • Change la valeur par défaut de la numérotation des faces dans le service de génération cartésien pour utiliser la numérotation cartésienne (PR #315)
  • Modification de la signature des méthodes de Arcane::IItemFamilyModifier et Arcane::mesh::OneMeshItemAdder pour utiliser Arcane::ItemTypeId au lieu de Arcane::ItemTypeInfo et Arcane::Item au lieu de Arcane::ItemInternal (PR #322)
  • Supprime méthodes Arcane::Item::activeFaces() et Arcane::Item::activeEdges() qui ne sont plus utilisées (PR #351).
  • [C#] Ajoute la possibilité en fin de calcul de détruire les instances des différents gestionnaires comme lorsque le support de .Net n'est pas activé. Auparavant ces gestionnaires n'étaient jamais détruit pour éviter des plantages potentiels lorsque le 'garbage collector' de l'environnement .Net se déclenche. Il est possible d'activer cette destruction en positionnant la variable d'environnement ARCANE_DOTNET_USE_LEGACY_DESTROY à la valeur 0. Cela n'est pas actif par défaut car il peut rester des problèmes avec certains services utilisateurs (PR #337).
  • [configuration] Il est maintenant nécessaire d'utiliser au moins la version 3.21 de CMake pour compiler ou utiliser Arcane (PR #367).
  • Ajoute constructeur par déplacement (std::move) pour Arcane::NumArray (PR #372).
  • [accelerator] Supprime les méthodes obsolètes de création de Arcane::Accelerator::RunQueue et Arcane::Accelerator::Runner (PR #397).
  • Rend obsolète la classe Arcane::AtomicInt32. Il faut utiliser la classe std::atomic<Int32> à la place (PR #408).

Corrections:

  • Corrige bug lors de la lecture des informations avec le service BasicReaderwriter lorsqu'une compression est active (PR #299)
  • Corrige bug introduit dans la version 3.6 qui changeait le nom du répertoire de sortie pour les comparaisons bit à bit avec le service ArcaneCeaVerifier (PR #300).
  • Corrige mauvais recalcul du nombre maximum d'entités connectées à une entité dans le cas des particules (PR #301)

Interne:

Arccon:

Utilise la version 1.5.0:

  • Add CMake functions to unify handling of packages arccon Arccon componentbuildBuild configuration (PR #342).

Arccore:

Utilise la version 2.0.12.0:

  • Remove some coverity warnings (PR #400)
  • Use a reference counter for IMessagePassingMng (PR #400)
  • Fix method asBytes() with non-const types (PR #400)
  • Add a method in AbstractArray to resize without initializing (PR #400)
  • Make class ThreadPrivateStorage deprecated (PR #400)

Arcane Version 3.6.13 (06 juillet 2022)

Nouveautés/Améliorations:

  • Ajout d'une interface Arcane::IRandomNumberGenerator pour un service de génération de nombre aléatoire (PR #266)
  • Ajoute support des variables matériaux dans les fichiers axl pour le générateur C# (PR #273)
  • Supprime allocation de la connectivité des noeuds dans les anciennes connectivités. Cela permet de réduire l'empreinte mémoire (PR #231).
  • Ajoute pour les classes Arccore::Span, Arccore::ArrayView, Arccore::ConstArrayView ainsi que les vues sur les variable l'opérateur 'operator()' qui se comporte comme l'opérateur 'operator[]'. Cela permet d'uniformiser les écritures entre les différents conteneurs et les vues associées (PR #223, PR #222, PR #205).
  • Ajoute dans Arcane::ICartesianMeshGenerationInfo les informations sur l'origine et la dimension du maillage cartésien (PR #221).
  • Ajoute en fin d'exécution des statistiques collectives sur les temps passés dans les opérations d'échange de message. Ces statistiques comprennent le temps minimal, maximal et moyen pour l'ensemble des rangs passés dans ces appels (PR #220)
  • Ajoute deux implémentations supplémentaires pour la synchronisation des matériaux. La version 7 permet de faire une seule allocation lors de cette synchronisation et la version 8 permet de conserver cette allocation d'une synchronisation à l'autre (PR #219).
  • Ajoute implémentation des synchronisations en plusieurs phases permettant d'utiliser des tableaux de taille fixe et/ou de faire sur une sous-partie des voisins (PR #214).
  • Ajoute accès pour les accélérateurs à certaines méthodes de Arcane::MDSpan (PR #217).
  • Ajoute accès aux connectivités aux arêtes dans Arcane::UnstructuredMeshConnectivityView (PR #216)
  • Ajoute interface accessible via 'Arcane::IMesh::indexedConnectivityMng()' permet de facilement ajouter de nouvelles connectivités (PR #201).
  • Ajout d'un nouvel algorithme de calcul des uniqueId() des arêtes (Edge) pour les maillages cartésiens
  • Ajoute support pour les classes de Arccore de l'opérateur operator[] avec arguments multiples (PR #241).
  • Possibilité de rendre thread-safe les appels à Arcane::Accelerator::makeQueue() en appelant la méthode Arcane::Accelerator::Runner::setConcurrentQueueCreation() (PR #242)

Changements:

  • Scinde en deux composantes les classes gérant les matériaux. Une partie est maintenant dans la composante arcane_core. Ce changement est normalement transparent pour les utilisateurs d'Arcane et il n'y a pas besoin de modifier les sources (PR #264,PR #270,PR #274)
  • Compacte les références après un appel à Arcane::IItemFamily::compactItems(). Cela permet d'éviter de faire grossir inutilement le tableau des contenant les informations internes des entités. Comme ce changement peut induire une différence sur l'ordre de certaines opérations, il est possible de le désactiver en positionnant la variable d'environnement ARCANE_USE_LEGACY_COMPACT_ITEMS à la valeur 1 (PR #225).
  • Les types gérant le localId() associés aux entités (Arcane::NodeLocalId, Arcane::CellLocalId, ...) sont maintenant des typedef d'une classe template Arcane::ItemLocalIdT.
  • Supprime dans les opérateurs d'accès aux variables (operator[]) les différentes surcharges. Il faut maintenant utiliser un 'Arcane::ItemLocalIdT' comme indexeur. Des opérateurs de conversion vers ce type ont été ajoutés pour que le code source reste compatible.
  • Désenregistre automatiquement les variables encores allouées lorsqu'on appelle Arcane::IVariableMng::removeAllVariables(). Cela permet d'éviter des plantages lorsque des références aux variables existaient encore après cet appel. Cela peut notamment être le cas avec les extensions C# car les services et modules associés sont gérés par un 'Garbage Collector' (PR #200).
  • Rend obsolète l'utilisation de Arcane::Timer::TimerVirtual. Les timers qui utilisent cette propriété se comportent comme s'ils avaient l'attribut Arcane::Timer::TimerReal.

Corrections:

Interne:

Passage version 2.0.3.0 de Axlstar:

Passage version 2.0.11.0 de Arccore:

  • Add function mpDelete() to destroy IMessagePassingMng instances (PR #258)
  • Optimizations in class String(PR #256,PR #247)
    • Add move constructor String(String&&) and move copy operator operator=(String&&)
    • Make String destructor inline
    • Make method String::utf16() deprecated (replaced by StringUtils::asUtf16BE())
    • Methods String::bytes() and String::format no longer throws exceptions
    • Add a namespace StringUtils to contains utilitarian functions.
  • Add support for multisubscript operator[] from C++23 (PR #241)
  • Add operator() to access values of ArrayView, ArrayView2, ArrayView3, ArrayView4, Span, Span2 and const versions of these views (PR #223).
  • Add SmallSpan2 implementation for 2D arrays whose size_type is an Int32 (PR #223).
  • Add SpanImpl::findFirst() method (PR #211)
  • Fix build on Ubuntu 22.04

Arcane Version 3.5.7 (07 avril 2022)

Nouveautés/Améliorations:

  • Ajoute classe Arcane::SimdReal3x3 et Arcane::SimdReal2x2 qui sont l'équivalent vectorielle des Arcane::Real3x3 et Arcane::Real2x2
  • Support de la version 4.2 des fichiers de maillage au format VTK
  • Ajoute une nouvelle implémentation des synchronisations qui utilise l'appel MPI_Sendrecv.
  • Ajoute possibilité d'utiliser des messages collectifs (MPI_AllToAllv) au lieu de messages point à point lors de l´échange des entités suite à un équilibrage de charge. Ce mécanisme est temporairement accessible en spécifiant la variable d'environnement ARCANE_MESH_EXCHANGE_USE_COLLECTIVE (PR #138,PR #154).
  • Dans la comparaison bit à bit, ajoute possibilité de ne faire la comparaison qu'à la fin de l'exécution au lieu de le faire à chaque pas de temps. Cela se fait en spécifiant la variable d'environnement STDENV_VERIF_ONLY_AT_EXIT.
  • Ajoute générateur de maillages en nid d'abeille en 3D (PR #149).
  • Ajoute support pour spécifier la disposition des éléments (layout) dans la classe Arcane::NumArray. Il existe actuellement deux dispositions implémentées: LeftLayout et RightLayout (PR #151)
  • Ajoute méthode Arcane::Accelerator::RunQueue::copyMemory() pour faire des copies mémoire asynchrones (PR #152).
  • Améliore le support ROCM/HIP. Le support des GPU AMD est maintenant fonctionnellement équivalent à celui des GPU NVIDIA via Cuda (PR #158, PR #159).
  • Ajoute support pour la mémoire punaisée (Host Pinned Memory) pour CUDA et ROCM (PR #147).
  • Ajoute classe 'Arcane::Accelerator::RunQueueEvent' pour supporter les évènements sur les 'Arcane::Accelerator::RunQueue' et permettre ainsi de synchroniser entre elle des files différentes (PR #161).

Changements:

  • Supprime les macros plus utilisées ARCANE_PROXY et ARCANE_TRACE (PR #145)

Corrections:

  • Corrige mauvaise détection de la version OneTBB 2021.5 suite à la suppression du fichier 'tbb_thread.h' (PR #146)
  • Corrige certaines informations cartésiennes manquantes lorsqu'il n'y a qu'une seule couche de maille en Y ou Z (PR #162).
  • Corrige implémentation manquante de 'Arccore::Span<T>::operator==' lorsque le type T n'est pas constant (PR #163).
  • Supprime quelques messages listings trop nombreux.

Interne:


Arcane Version 3.4.5 (10 février 2022)

Nouveautés/Améliorations:

  • Dans l'API accélérateur, support dans Arcane::NumArray pour allouer directement la mémoire sur l'accélérateur. Auparavant seule la mémoire unifiée était disponible. L'énumération Arcane::eMemoryRessource et le type Arcane::IMemoryRessourceMng permettent de gérer cela (PR #111, PR #113).
  • Amélioration mineures sur la documentation (PR #117) :
    • ajout des chemins relatifs pour les fichiers d'en-tête.
    • ajout des classes et type issus de Arccore
  • Ajoute nouvelle méthode de calcul des uniqueId() des faces dans le cas cartésien. Cette nouvelle méthode permet une numérotation cartésienne des faces qui est cohérente avec celles des noeuds et des mailles. Pour l'utiliser, il faut spécifier l'option <face-numbering-version>4</face-numbering-version> dans le jeu de données dans la balise du générateur de maillage (PR #104).
  • Ajoute option dans le post-processeur Arcane pour supprimer la sortie de dépouillement en fin de calcul.
  • Ajoute implémentation de Arcane::IParallelMng::gather() et Arcane::IParallelMng::gatherVariable() pour le mode mémoire partagée et le mode hybride
  • Ajoute dans Arcane::Materials::MeshMaterialInfo la liste des milieux dans lequels le matériau est présent
  • Support de la compilation avec le compilation NVIDIA HPC SDK.
  • Support (partiel) pour désallouer le maillage (Arcane::IPrimaryMesh::deallocate()) ce qui permet de le réallouer à nouveau par la suite.
  • Ajoute générateur de maillage 2D en nid d'abeille.

Changements:

  • Ajoute namespace 'Arcane::' aux cibles CMake fournit par Arcane. Par exemple, la cible 'arcane_core' devient 'Arcane::arcane_core'. Les anciens noms restent valides (PR #120).
  • Rend obsolète la conversion de Arcane::ItemEnumerator vers Arcane::ItemEnumeratorT. Cela permet d'éviter d'indexer par erreur une variable du maillage avec un énumérateur du mauvais type (par exemple indexer une variable aux mailles avec un énumérateur aux noeuds).

Corrections:

  • Corrige opérateur 'operator=' pour la classe 'Arcane::CellDirectionMng' (PR #109)
  • Corrige conversion inutile Int64 vers Int32 dans la construction des maillages cartésiens ce qui empêchait de dépasser 2^31 mailles (PR #98)
  • Corrige mauvais calcul des temps passés dans les synchronisations. Seul le temps de la dernière attente était utilisé au lieu du cumul (commit cf2cade961)
  • Corrige nom prise en compte de l'option 'MessagePassingService' en ligne de commande (commit 15670db4)

Interne:

  • Nettoyage de l'API Accélérateur

Passage version 2.0.8.1 de Arccore:

  • Improve doxygen documentation for types et classes in message_passing component.
  • Add functions in message_passing component to handle non blocking collectives (PR #116, PR #118)
  • Add some '#defines' to compile with hipSYCL.
  • Update '_clang-format' file for version 13 of LLVM/Clang.

Arcane Version 3.3.0 (16 décembre 2021)

Nouveautés/Améliorations:

  • Ajoute possibilité de spécifier le nombre maximum de messages en vol lors d'un équilibrage de charge. Pour l'instant cela se fait en spécifiant la variable d'environnement ARCANE_MESH_EXCHANGE_MAX_PENDING_MESSAGE.
  • Ajoute possibilité d'utiliser les Arcane::Real2x2 et Arcane::Real3x3 sur accélérateurs
  • Ajoute méthode Arcane::mesh_utils::printMeshGroupsMemoryUsage() pour afficher la consommation mémoire associée aux groupes et Arcane::mesh_utils::shrinkMeshGroups() pour redimensionner au plus juste la mémoire utilisée par les groupes
  • Support pour punaiser les threads (voir Lancement d'un calcul)

Changements:

Corrections:

Interne:

  • Nettoyage de la gestion des messages des synchronisations
  • Débute support accélérateurs pour la version ROCM/HIP (AMD)
  • Support pour la version 2.34 de la glibc qui ne contient plus les 'hooks' de gestion mémoire (ce mécanisme était obsolète depuis des années).
  • Ajoute possibilité de compiler avec le standard C++20.

Passage version 2.0.6.0 de Arccore:

  • Update Array views (PR #76)
  • Separate metadata from data in 'Arccore::AbstractArray' (PR #72)
  • Deprecate Arccore::Array::clone(), Arccore::Array2::clone() and make Arccore::Array2 constructors protected (PR #71)
  • Add support for compilation with AMD ROCM HIP (e5d008b1b79b59)
  • Add method Arccore::ITraceMng::fatalMessage() to throw a Arccore::FatalErrorException in a method marked [[noreturn]]
  • Add support to compile with C++20 with ARCCORE_CXX_STANDARD optional CMake variable (665292fce)
  • [INTERNAL] Add support to change return type of IMpiProfiling methods. These methods should return int instead of void
  • [INTERNAL] Add methods in MpiAdapter to send and receive messages without gathering statistics
  • [INTERNAL] Add methods in MpiAdapter to disable checking of requests. These checks are disabled by default if CMake variable ARCCORE_BUILD_MODE is Release

Arcane Version 3.2.0 (15 novembre 2021)

Nouveautés/Améliorations:

Changements:

  • Passage version CMake 3.18 sur les machines Unix et CMake 3.21 sous Windows.
  • Rend obsolète dans Arcane::ItemTypeMng la méthode singleton(). Les instances de cette classe sont attachées au maillage et peuvent être récupérées via Arcane::IMesh::itemTypeMng().
  • Déplace les classes gérant le maillage cartésian dans le répertoire arcane/cartesianmesh. Les anciens chemins dans arcane/cea restent valides.
  • Utilise par défaut la version 3 (au lieu de 2) du service de création des mailles fantômes. Cette version est plus efficace lorsqu'on utilise un grand nombre de sous-domaines car elle utilise des communications collectives.
  • Supprime la préallocation mémoire pour les anciennes connectivités.
  • Rend privé à Arcane les constructeurs de Arcane::ItemSharedInfo
  • Lance une exception fatale si on demande le support des tâches mais qu'aucune implémentation n'est disponible. Auparavant, il y avait juste un message d'avertissement.

Corrections:

  • Corrige plantage (SEGV) lorsqu'on utilise les tâches et sous-tâches en séquentiel.

Arcane Version 3.1.2 (21 octobre 2021)

Nouveautés/Améliorations:

  • Nouvelle implémentation des graphes de maillage utilisant les Arcane::DoF.
  • Ajoute possibilité de renuméroter (via la méthode Arcane::ICartesianMesh::renumberItemsUniqueId()) les entités dans les maillages AMR par patch pour avoir la même numérotation quel que soit le découpage.
  • Mise à jour de la documentation pour les accélérateurs

Changements:

  • Le lecteur de maillage au format GMSH est maintenant dans la bibliothèque arcane_std au lieu de arcane_ios. Il n'y a donc plus besoin de faire l'édition de lien avec cette dernière pour pouvoir lire les maillages de ce format.
  • Suppression des anciens types d'entités Link et DualNode et des énumérations et classes associées
  • Suppression de certaines classes associées aux anciennes connectivités
  • Supprime le support pour le système d'exploitation RedHat 6.

Corrections:

  • Corrige plantage lors de la mise à jour des matériaux si la variable globale associée à un matériau est désallouée (Arcane::IVariable::isUsed()==false)
  • Corrige exception flottante (FPE) avec les versions 2.9.9+ de libxml2. Cette bibliothèque fait explicitement des divisions par 0 lors de l'initialisation.

Arcane Version 3.0.5 (30 septembre 2021)

Nouveautés/Améliorations:

Changements:

Corrections:


Arcane Version 3.0.3 (Not released)

Nouveautés/Améliorations:

  • Support de l'AMR par patch en parallèle
  • Ajout d'une classe Arcane::SimpleSVGMeshExporter pour exporter au format SVG un ensemble de mailles
  • Support dans l'AMR par patch dans la classe Arcane::DirNode des mailles voisines par direction.
  • Lors de la synchronisation des groupes, s'assure que tous les sous-domaines ont les mêmes groupes et que la synchronisation se fait dans le même ordre.

Changements:

Corrections:

  • Dans l'AMR par patch, s'assure que les entités voisines par direction sont toujours dans le même niveau de patch.
  • Corrige quelques dépendances manquantes lors de la compilation qui pouvaient entrainer des erreurs de compilation dans certains cas.
  • Corrige erreurs de compilation des exemples en dehors du répertoire des sources.

Arcane Version 3.0.1 (27 mai 2021)

Cette version est la première version 'open source' de Arcane.

Nouveautés/Améliorations:

  • Nouvelle version du service de lecture/écriture Arcane::BasicReaderWriter pour générer moins de fichier et supporter la compression. Ce service peut être utilisé à la fois pour les protections/reprises et la comparaison bit à bit de variables. L'utilitaire C# de comparaison de variables a été mis à jour pour supporter cette nouvelle version.
  • Support des fichiers de maillage au format 'msh' version 4.1. Cette version permet de spécifier des groupes de faces ou de mailles dans le fichier de maillage.
  • En interne, utilise un seul exécutable pour l'ensemble des utilitaires C#.

Changements:

  • Ajoute possibilité lors de la compilation de Arcane de spécifier les packages requis et de ne pas chercher de packages par défaut.