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
- Ajoute mécanisme pour supprimer les mailles fantômes des mailles raffinées (PR #1716, PR #1785)
- Ajoute méthodes ICartesianMesh::coarseZone2D() et ICartesianMesh::coarseZone3D() pour déraffiner un bloc d'un patch AMR (PR #1697)
- Ajoute support dans l'AMR par patch pour déraffiner le maillage initial (PR #1678, PR #1774)
- Ajoute possibilité de choisir la version de numérotation des faces dans le jeu de données (PR #1674)
- Ajoute une nouvelle implémentation de tableau associatif impl::HashTableMap2. Cette implémentation est pour l'instant interne à Arcane. La nouvelle implémentation est plus rapide, consomme moins de mémoire que l'ancienne (HashTableMapT). Elle a aussi une API compatible avec
std::unordered_map
(PR #1638, PR #1639, PR #1640, PR #1650)
- Ajoute support de l'écriture MPI/IO par bloc dans l'écrivain
VtkHdfV2PostProcessor
(PR #1648, PR #1649)
- Ajoute support des maillage polyédriques (PR #1619, PR #1620, PR #1496, PR #1746, PR #1747, PR #1748, PR #1761, PR #1762)
- Ajoute méthode utilitaire MeshUtils::computeNodeNodeViaEdgeConnectivity() pour créer les connectivités noeud-noeud via les arêtes (PR #1614)
- Ajoute mécanisme permettant de vérifier que tous les rangs synchronisent bien la même variable. Cela se fait en positionnant la variable d'environnement
ARCANE_CHECK_SYNCHRONIZE_COHERENCE
(PR #1604)
- Ajoute support pour positionner le nom de débug pour NumArray (PR #1590)
- Ajoute possibilité d'afficher la pile d'appel via le debugger lorsqu'un signal (SIGSEGV, SIGBUS, ...) est recu (PR #1573)
- Ajoute nouvelle version du déraffinement initial qui conserve la numérotation initiale et garanti la même numérotation quel que soit le découpage (PR #1557)
- Ajoute implémetation de IParallelMng::scan() pour le mode mémoire partagé et hybride (PR #1548)
API Accélérateur
- Interdit d'utiliser deux fois une même instance de RunCommand. Il est temporairement possible d'autoriser cela en positionnant la variable d'environnement
ARCANE_ACCELERATOR_ALLOW_REUSE_COMMAND
à 1
(PR #1790)
- Ajoute classe RegisterRuntimeInfo pour passer des arguments pour l'initialisation du runtime accélérateur (PR #1766)
- Ajoute méthodes pour récupérer de manière propre l'implémentation native correspondante à RunQueue et rend obsolète RunQueue::platformStream() (PR #1763)
- Ajoute fichiers d'en-ête pour les algorithmes avancés dont le nom est identique à celui de la classe (PR #1757)
- Ajoute implémetation de RUNCOMMAND_MAT_ENUMERATE() pour AllEnvCell (PR #1754)
- Ajoute méthodes IAcceleratorMng::runner() et IAcceleratorMng::queue() qui retournent des instances au lieu de pointeurs sur Runner et RunQueue (PR #1752)
- Rend privées les méthodes de construction de RunQueue et RunCommand. Il faut passer par makeQueue ou makeCommand pour créer des instances de ces classes (PR #1752)
- Optimisations diverses dans la mise à jour des constituants (MeshMaterialModifier) (PR #1559, PR #1562, PR #1679, PR #1681, PR #1682, PR #1683, PR #1687, PR #1689, PR #1690, PR #1691, PR #1704, PR #1720, PR #1729, PR #1731, PR #1733, PR #1738, PR #1739, PR #1741, PR #1742)
- Ajoute classe ProfileRegion pour spécifier une région pour le profilage sur accélérateur (PR #1695, PR #1734, PR #1768)
- Ajoute une classe interne impl::MemoryPool pour conserver une liste de blocs alloués. Ce mécanisme ne fonctionne actuellement qu'avec l'implémentation CUDA. Il n'est pas actif par défaut (voir Pool de mémoire) (PR #1684, PR #1685, PR #1686, PR #1699, PR #1703, PR #1724, PR #1725, PR #1726, PR #1776)
- Ajoute algorithme de partitionnement GenericPartitioner (PR #1713, PR #1717, PR #1718, PR #1721, PR #1722)
- Uniformise les constructeurs des algorithmes accélérateurs pour prendre une RunQueue en argument (PR #1714
- Utilise l'API accélérateur pour la création des EnvCellVector et MatCellVector (PR #1710, PR #1711)
- Alloue la mémoire des ItemVector via l'UVM. Cela permet de rendre accessible sur accélérateurs les éléments de cette classe (PR #1709)
- Ajoute algorithme de tri GenericSorter (PR #1705, PR #1706)
- Ajoute possibilité d'utiliser la mémoire hôte pour la valeur de retour de GenericFilterer (PR #1701)
- Ajoute synchronisation explicite pour DualUniqueArray (PR #1688)
- Ajoute possibilité de récupérer sur accélérateur la
backCell()
et frontCell()
d'une face (PR #1607)
- Ajoute implémentation sur accélérateur de IMeshMaterialMng::synchronizeMaterialsInCells(). Cette implémentation est activée si la variable d'environnement
ARCANE_ACC_MAT_SYNCHRONIZER
est positionnée à 1
(PR #1584)
- Ajoute possibilité d'utiliser le mécanisme ATS avec CUDA pour l'allocation (PR #1576)
- S'assure que les messages affichés par l'intégration avec CUPTI ne sont pas découpés en multi-thread (PR #1571)
- Ajoute possiblité d'afficher et d'interompre le profilage (PR #1561, PR #1569)
- Ajoute macro RUNCOMMAND_SINGLE() pour effectuer une commande accélérateur sur une seule itération (PR #1565)
- Alloue par défaut la mémoire managée (UVM) sur un multiple de la taille d'une page système (PR #1564)
- Ajoute détection et affichage des 'Page Faults' dans l'intégration CUPTI (PR #1563)
- Choisit automatiquement le device associé à un rang MPI sur un noeud selon un mécanisme round-robin (PR #1558)
- Ajoute support pour compiler pour CUDA avec le compilateur Clang (PR #1552)
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
- Ajoute support expérimental pour créer une variable du maillage sans référence. Il faut pour cela l'initialiser avec une instance de NullVariableBuildInfo (PR #1510).
- Ajoute support pour l'équilibrage de charge dynamique avec plusieurs maillages (PR #1505, PR #1515).
- Ajoute support pour les synchronisations sur un sous-ensemble des entités fantômes (PR #1468, PR #1484, PR #1486).
- Amélioration et passage en anglais du README (PR #1466).
- Ajoute support expérimental de l'AMR par patch (PR #1413).
- Débute le support pour intégrer du code python lors de l'exécution. Ce support est considéré comme expérimental (PR #1447, PR #1449, PR #1454, PR #1456,PR #1461, PR #1462, PR #1471, PR #1479, PR #1493, PR #1494, PR #1499, PR #1501, PR #1502, PR #1513, PR #1522, PR #1525).
API Accélérateur
- Ajoute accès accélérateur à certaines méthodes (PR #1539)
- Optimise les noyaux de calcul pour la gestion des mise à jour des matériaux (PR #1421, PR #1422, PR #1424, PR #1426, PR #1431, PR #1432, PR #1434, PR #1437, PR #1440, PR #1441, PR #1443, PR #1458, PR #1472, PR #1473, PR #1474, PR #1488, PR #1489)
- Mise à jour de la documentation (PR #1483, PR #1492, PR #1508)
- Ajoute arguments templates pour spécifier la taille des entiers utilisés pour l'indexation (
Int32
ou Int64
) (PR #1398).
- Ajoute support pour les réductions version 2 dans RUNCOMMAND_MAT_ENUMERATE() (PR #1390).
- Continue travail de portage SYCL (PR #1389, PR #1391, PR #1393, PR #1396).
- Améliore la gestion du padding SIMD pour ItemGroup pour ne le faire qu'à la demande et le faire sur accélérateur si possible (PR #1405, PR #1523, PR #1524).
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
- Utilise une seule instance de DofManager (PR #1538)
- Supprime plusieurs utilisation de la Glib (PR #1531)
- Supprime certaines utilisations obsolètes de ItemInternal dans le wrapper C# (PR #1517, PR #1520)
- Améliore la gestion de la compilation C# et des dépendances SWIG en utilisant un seul projet et corrige divers problèmes de dépendance dans la gestion CMake (PR #1433, PR #1407, PR #1410, PR #1411, PR #1412, PR #1414, PR #1425, PR #1427, PR #1428, PR #1429, PR #1455, PR #1480, PR #1487, PR #1495, PR #1497, PR #1498)
- Améliorations diverses dans la gestion des maillages polyédriques (PR #1435, PR #1436, PR #1438, PR #1463)
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
- Ajoute possibilité de trier par uniqueId() croissant les faces et arêtes connectées aux noeuds (PR #990). Cela n'est pas actif par défaut pour compatibilité avec l'existant. Le tri permet d'avoir toujours le même ordre de parcours pour les faces et les arêtes des noeuds ce qui peut aider pour avoir des calculs répétables. Pour l'activer, il faut positionner la variable d'environnement
ARCANE_SORT_FACE_AND_EDGE_OF_NODE
à 1
ou utiliser le code suivant:
virtual Properties * properties()=0
Propriétés associées à cette famille.
virtual IItemFamily * nodeFamily()=0
Retourne la famille des noeuds.
virtual void endUpdate()=0
Notifie l'instance de la fin de la modification du maillage.
virtual IMeshModifier * modifier()=0
Interface de modification associée.
void setBool(const String &name, bool value)
Positionne une propriété de type bool de nom name et de valeur value.
- Permet de modifier le numéro du patch parent lors de la re-numérotation via CartesianMeshRenumberingInfo::setParentPatch() (PR #986).
- Ajoute support pour le calcul incrémental des fonctions de hash (PR #983, PR #984).
- Ajoute implémentation de l'algorithme de hash
SHA1
(PR #982).
- Ajoute polique d'initialisation des données pour avoir le même comportement que les versions de Arcane antérieures à la version 3 (PR #1017).
- Ajoute classes Vector2 et Vector3 pour gérer des couples et triplets de types quelconques (PR #1066, PR #1075)
- Ajoute classe FixedArray pour les tableaux de taille fixe. Cette classe est similaire à
std::array
mais initialise par défaut ses valeurs et permet la détection de débordement de tableau (PR #1063)
- Ajoute support pour le dé-raffinement 3D et la renumérotation des entités du maillage lors du raffinement ultérieur (PR #1061, PR #1062)
- Ajoute conversion de ComponentCell vers MatCell, EnvCell et AllEnvCell (PR #1051).
- Ajoute support pour sauvegarder des 'hash' des variables pour comparer rapidement si les valeurs sont différentes (PR #1142, PR #1143, PR #1145, PR #1147, PR #1150, PR #1152, PR #1155, PR #1156, PR #1158, PR #1159, PR #1160)
- Ajoute lecture parallèle des fichiers au format MSH (PR #1126, PR #1136, PR #1137, PR #1138, PR #1139)
- Refonte de la gestion de ITimeHistoryMng pour pouvoir facilement gérer plusieurs maillages (PR #1203, PR #1249, PR #1256, PR #1260, PR #1369)
- Ajoute support expérimental pour l'AMR cartésien par patch en dupliquant les noeuds et les faces (PR #1167, PR #1337, PR #1350, PR #1351, PR #1353)
- Ajoute nouvelle méthode (méthode 4) de renumérotation des patchs AMR pour avoir la même numérotation entre un maillage raffiné et un maillage dé-raffiné puis à nouveau raffiné (PR #1108, PR #1109)
- Active la fusion des noeuds en 3D (PR #1361)
- Ajoute support pour l'indentation des fichiers XML via LibXml2 lors des sorties (PR #1379)
API Accélérateur
- Rend nécessaire le C++20 pour l'API accélérateur (PR #1020, PR #1026, PR #1030, PR #1050).
- INCOMPATIBILITÉ: Ajoute argument template dans ExtentsV, ArrayIndex permettant de spécifier le type de l'index. Pour l'instant seul
Int32
est supporté mais par la suite Int64
et Int16
seront disponibles. Cette modification empêche de compiler du code utilisant l'ancienne valeur de la classe ExtentsV. Cette classe étant normalement interne à Arcane cela ne devrait pas concerner beaucoup d'usages (PR #1383)
- Ajoute méthode
fill()
asynchrone pour les variables du maillage (ItemVariableArrayRefT et ItemVariableScalarRefT) (PR #991)
- Ajoute classe RunQueue::ScopedAsync pour rendre temporairement asynchrone une file d'exécution (PR #978).
- Optimise la gestion mémoire de la classe Filterer et ajoute des surchages (PR #1022, PR #1023, PR #1034, PR #1043, PR #1210, PR #1225, PR #1271)
- Ajoute support des opérations atomiques (PR #1028, PR #1032, PR #1033)
- Ajoute support dans Aleph des versions de Hypre compilées avec le support des accélérateurs (PR #1125)
- Ajoute support expérimental pour le pre-fetching automatique des valeurs des vues (PR #1179, PR #1180, PR #1304)
- Ajoute algorithme de réduction directe via la classe GenericReducer (PR #1306, PR #1307)
- Ajoute algorithme de partitionnement de liste via la classe GenericPartitioner (PR #1217)
- Rend accessible sur accélérateurs certaines opérations mathématiques (PR #1294)
- Ajoute surcharges pour l'algorithme
PrefixSum
( PR #1253, PR #1254)
- Ajoute vues sur les variables partielles (PR #1299, PR #1308, PR #1311, PR #1313)
- Utilise l'API accélérateur lors de la mise à jour des matériaux via MeshMaterialModifier (PR #1182, PR #1183, PR #1185, PR #1186, PR #1196, PR #1204, PR #1205,PR #1211, PR #1219, PR #1223, PR #1224, PR #1226, PR #1227, PR #1230, PR #1233, PR #1235, PR #1238, PR #1239, PR #1241, PR #1243, PR #1247, PR #1257, PR #1258, PR #1263, PR #1268, PR #1283, PR #1284, PR #1285, PR #1287, PR #1292, PR #1295, PR #1312, PR #1347)
- Utilise l'API accélérateur pour l'ajout et la suppression d'entités dans un ItemGroup (PR #1288,PR #1289, PR #1293).
- Ajoute constructeur par défaut pour RunQueue. Dans ce cas l'instance n'est pas utilisable tant qu'elle n'a pas été assignée (PR #1282)
- Ajoute possibilité de copier les RunQueue avec une sémantique par référence (PR #1221)
- Ajoute support pour choisir une ressource mémoire par défaut pour une RunQueue (PR #1278)
- Ajoute mécanismes pour faciliter la gestion mémoire (PR #1273, PR #1274)
- Ajoute possibilité de créér une vue sur des données en spécifiant une instance de RunQueue (PR #1269).
- Ajoute méthodes de conversion de NumArray et MDSpan vers SmallSpan (PR #1262)
- Ajoute support pour récupérer l'index de l'itérateur pour RUNCOMMAND_ENUMERATE() et RUNCOMMAND_MAT_ENUMERATE() (PR #1270, PR #1272)
- Ajoute support dans RUNCOMMAND_MAT_ENUMERATE() pour MatCell (PR #1184)
- Ajoute fonction VariableUtils::markVariableAsMostlyReadOnly() pour marquer les varibles comme étant principalement en lecture (PR #1206)
- Autorise l'utilisation de la mémoire eMemoryRessource::HostPinned lorsque le runtime accélérateur n'est pas défini. Dans ce cas on utilise eMemoryRessource::Host (PR #1315)
- Ajoute méthode MemoryUtils::getDeviceOrHostAllocator() pour récupérer un allocateur sur l'accélérateur si un runtime accélérateur est disponible et sur l'hôte sinon (PR #1364)
- Débute support pour un backend avec l'API SYCL. Ce backend n'est pas encore fonctionnel et n'est disponible que pour des tests internes (PR #1318, PR #1319, PR #1320, PR #1323, PR #1324, PR #1330,PR #1334, PR #1345, PR #1355, PR #1363, PR #1365, PR #1373, PR #1374, PR #1380, PR #1381)
- Débute nouvelle implémentation des réductions qui permettent de supporter l'API SYCL (PR #1366, PR #1368, PR #1371, PR #1372, PR #1377)
Changements
- INCOMPATIBILITÉ: Supprime dans le fichier
StdHeader.h
la plupart des using
sur les fonctions mathématiques (PR #1370, PR #1384).
- Supprime classe interne
ComponentItemInternal
qui est remplacée par ComponentItemBase
(PR #1039, PR #1053, PR #1059, PR #1172, PR #1181, PR #1187,PR #1190, PR #1191, PR #1192, PR #1193, PR #1194, PR #1195,PR #1197, PR #1199, PR #1200, PR #1335)
- Active toujours les connectivités incrémentales (PR #1166)
- Rend obsolète NumArray::s(). Il faut utiliser à la place
operator()
ou operator[]
(PR #1035)
- N'initialise pas le runtime MPI si le service d'échange de message (
MessagePassingService
) est Sequential
(PR #1029).
- Ne positionne pas par défaut la variable CMake
ARCANE_BUILD_TYPE
lors de la configuration (PR #1004).
- Ne filtre plus les assembly signées lors du chargement des plug-ins en C# (PR #1114)
- Utilise String au lieu de
const String&
pour les valeurs de retour de IVariable et VariableRef (PR #1134)
- Utilise par défaut la nouvelle version de la gestion des listes de message de sérialisation (PR #1113)
- Utilise Int16 au lieu de Int8 pour l'identifiant des accélérateurs (DeviceId) (PR #1276)
- Utilise par défaut la version 2 de la gestion des listes d'entités par type dans les groupes (ItemGroup. Cela est utilisé par exemple dans ItemGroup::applyOperation(). La nouvelle version n'utilise plus des sous-groupes mais uniquement des listes et ne duplique par la mémoire si toutes les entités du groupe sont de même type (PR #1174)
- Dans les vues, remplace ViewSetter par DataViewSetter et ViewGetterSetter par DataViewGetterSetter (PR #1040)
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
- Utilise un compteur de référérence pour
RunQueueImpl
(PR #996)
- Ajoute support expérimental pour changer des valeurs dans le jeu de donnée à partir de la ligne de commande (PR #1038).
- Ajoute nouveau mécanisme de calcul de hash pour les implémentation de IData (PR #1036).
- Utilise nouveau mécanisme de Hash pour la détection de la validité des valeurs des variables lors d'une reprise (PR #1037).
- Simplifie l'implémentation de MDSpan via l'utilisation du C++20 (PR #1027)
- Déplace les fichiers d'implémentation de Aleph dans le code source au lieu de l'avoir dans les fichiers d'en-tête et corrige le système de build si on utilise Trilinos (PR #1002, PR #1003)
- Ajoute classes pour spécifier des arguments supplémentaires pour les méthodes IMeshModifier::addCells() et IMeshModifier::addFaces() (PR #1077)
- Supprime ancienne implémentation du générateur de maillage cartésien (PR #1069)
- Utilise les classes Int64x2, Int64x3, Int32x2 et Int32x3 au lieu de
std::array
pour gérer les informations de construction des maillages cartésiens (PR #1067)
- Supprime avertissements coverity (PR #1060, PR #1065, PR #1333, PR #1336, PR #1378)
- Refonte du mécanisme interne de gestion des informations des entités matériaux pour rendre les propriétés accessibles sur accélérateur (PR #1057, PR #1058, PR #1086)
- Ajoute support pour le format JSON pour VariableDataInfo (PR #1148)
- Utilise ReferenceCounterImpl pour l'implémentation de IThreadImplementation et IParallelDispatchT (PR #1132, PR #1127)
- Corrige divers avertissements de compilation (PR #1130, PR #1163, PR #1164, PR #1042, PR #1118, PR #1346)
- Améliore le portage Windows (PR #1154, PR #1157, PR #1246)
- Ajoute méthode IMesh::computeSynchronizeInfos() pour forcer le recalcul des informations de synchronisation (PR #1124)
- Désactive les exceptions flottantes en fin de calcul. Cela permet d'éviter des exceptions flottantes (FPE) dues aux exécutions spéculatives (PR #1232)
- Ajoute classe expérimentatle DualUniqueArray pour gérer une vue double sur CPU et accélérateur (PR #1215)
- Utilise la bonne valeur de la taille de page pour l'allocateur interne lié à CUDA (PR #1198)
- Ajoute détection du mode GPU Aware de MPI pour ROCM (PR #1209)
- Ajoute méthode ITimeStats::resetStats() pour remettre à zéro les statistiques temporelles de l'instance (PR #1122, PR #1128)
- Ajoute implémentation de IThreadImplementation et de AtomicInt32 en utilisant la bibliothèque standard du C++ (PR #1339, PR #1340, PR #1342, PR #1343)
- Corrige possible duplication des uniqueId() dans le test de fusion des frontières (PR #1362)
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
- Ajoute support pour des destructeurs particuliers dans ReferenceCounterImpl (PR #1068)
- Ajoute nouvelle implémentation de ReferenceCounterImpl qui n'appelle pas directement l'opérateur
operator delete
. Cela permet de détruire l'instance de manière externe (PR #989, PR #1080, PR #1081, PR #1120, PR #1161, PR #1162).
- Autorise l'utilisation de ReferenceCounterImpl sans avoir besoin d'une classe interface (PR #1121)
- Utilise
std::atomic_flag
au lieu de la glib
pour la classe SpinLock (PR #1110)
- Début support pour les types Float16, Float32 et BFloat16 (PR #1087, PR #1088, PR #1089, PR #1095, PR #1099, PR #1101, PR #1102, PR #1106)
- Rend privé la classe
StringImpl
(PR #1096, PR #1097)
- Améliorations diverses dans ISerializer (PR #1090, PR #1093, PR #1112)
- Rend publique la méthode Array::resizeNoInit() (PR #1220, PR #1297)
- Ajoute argument template dans Span, SmallSpan et SpanImpl pour indiquer la valeur minimale de l'index (
0
par défaut) (PR #1296).
- Ajoute conversions implicites et explicites entre Array et SmallSpan (PR #1277, PR #1279)
- Corrige pour String des conversions multiples entre UTF-8 et UTF-16 (PR #1251).
- Ajoute fonction utilitaire pour remplir un Span avec des valeurs aléatoires (PR #1103)
- Ajoute méthode arccoreCheckRange() pour vérifier si une valeur est dans un intervalle (PR #1091).
- Ajoute classe BuiltInDataTypeContainer pour généraliser les opérations sur les types de données de base PR #1105
- Ajoute possibilité de récupérer le communicateur MPI dans MessagePassing::IMessagePassingMng (PR #1248)
- Début ré-organisation interne pour rendre l'utilisation de la 'Glib' optionnelle (PR #1328).
Axlstar
Alien
Arcane Version 3.11.15 (23 novembre 2023)
Nouveautés/Améliorations
- Réorganisation interne des synchronisations pour utiliser un seul buffer mémoire pour toutes les synchronisations d'un même maillage (PR #861, PR #862, PR #863, PR #866, PR #867, PR #871, PR #872, PR #873, PR #874, PR #878, PR #880)
- Ajoute interface IVariableSynchronizerMng pour gérer toutes les instances de IVariableSynchronizer pour un maillage donné (PR #869, PR #879).
- Ajoute mode automatique pour vérifier si une synchronisation a eu un effet. Ce mode est activé si la variable d'environnement
ARCANE_AUTO_COMPARE_SYNCHRONIZE
est positionnée. Lorsque ce mode est actif, des statistiques en fin de calcul permettent de connaitre le nombre de synchronisations pour lesquelles les mailles fantômes ont été modifiées. La page Comparaison des synchronisations indique comment utiliser ce mécanisme (PR #897, PR #898, PR #900, PR #902, PR #910, PR #926).
- Ajoute deux classes expérimentales CartesianMeshCoarsening et CartesianMeshCoarsening2 pour dé-raffiner le maillage cartésien initial. Cela fonctionne pour l'instant uniquement en 2D (PR #912, PR #913, PR #917, PR #918, PR #937, PR #942, PR #944, PR #945).
- Ajoute itérateur (ICartesianMesh::patches()) sur les patchs des maillages cartésiens (PR #948).
- Ajoute classe CartesianPatch pour encapsuler les ICartesianMeshPatch (PR #971).
- Ajoute pour les statistiques d'échange de messages les valeurs cumulées sur toutes les exécutions (PR #852, PR #853).
- Ajoute support en C# des fonctions du jeu de données (PR #797, PR #800, PR #801, PR #803, PR #804).
- Ajoute dans la composante PETSc de Aleph le support des préconditionneurs ILU et IC en parallèle (PR #789, PR #799).
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
- Début support des maillages cartésian avec patchs bloc structuré (PR #946).
- Début refonte de la gestion de la connectivité des matériaux. Cette refonte a pour objectif d'optimiser cette gestion des connectivité afin d'éviter d'avoir à appeler IMeshMaterialMng::forceRecompute() après une modification. Ces mécanismes ne sont pas actifs par défaut (PR #783, PR #787, PR #792, PR #794, PR #795, PR #825, PR #826, PR #828, PR #829, PR #831, PR #832, PR #835, PR #836, PR #838, PR #839, PR #840, PR #841, PR #842, PR #843, PR #847).
- Nettoyage et réorganisations internes (PR #781, PR #810, PR #813, PR #822, PR #830, PR #834, PR #846, PR #856, PR #857, PR #868, PR #908, PR #914, PR #952)
- Ajoute en test un service pour se connecter à une base Redis pour le service BasicReaderWriter (PR #780)
- Ajoute sauvegarde au format JSON des meta-données pour les protections/reprises. Ce format n'est pas utilisé pour l'instant mais il remplacera à terme le format XML (PR #779, PR #865).
- Créé deux classes VariableIOReaderMng et VariableIOWriterMng pour gérer la partie entrées/sorties de VariableMng (PR #777).
- Ajoute méthode JSON::value() pour retourner une String (PR #778)
- Ajoute nouveau module de test pour les matériaux (MaterialHeatModule). Ce module permet de mieux tester les méthodes d'ajout et de suppression de mailles matériaux (PR #788, PR #790, PR #824, PR #848).
- Améliore l'usage de IProfilingService (PR #791)
- Intègre les sources de Alien dans le même dépôt que Arcane (le dépôt framework) (PR #798, PR #812, PR #816, PR #817, PR #819, PR #820, PR #883, PR #890, PR #891, PR #892).
- Intègre le gestionnaire de maillage Neo dans le dépôt (PR #802, PR #805, PR #807, PR #808, PR #814, PR #815, PR #854, PR #881, PR #882, PR #888).
- Sépare l'interface IIncrementalItemConnectivity en deux interfaces IIncrementalItemSourceConnectivity et IIncrementalItemTargetConnectivity pour permettre d'avoir des connectivités qui n'ont pas de cibles (PR #846).
- Ajoute tests pour la version 3 de FaceUniqueidBuilder (PR #850)
- Débute portage MacOS (PR #884, PR #885)
- Optimise les sorties au format EnsightGold lorsque le nombre de types de maille est très grand (maillages polyédriques) (PR #911).
- Ajoute API interne à Arcane pour ICartesianMesh (PR #943).
- Créé les MeshHandle des maillages additionnels avant l'appel aux points d'entrée
Build
(PR #947).
- Utilise
std::atomic_ref
au lieu de std::atomic
pour la gestion des réductions sur accélérateur (PR #1352)
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
- Support pour spécifier en ligne de commandes les valeurs par défaut de Arcane::ParallelLoopOptions en mode multi-thread (PR #420).
- Support des fichiers Lima, des fichiers MED et des fichiers au format
msh
avec les services de maillage (PR #435, PR #439, PR #449).
- Ajoute fonction Arcane::NumArrayUtils::readFromText() pour remplir une instance de Arcane::NumArray à partir d'un fichier au format ASCII (PR #444).
- Support de la lecture des parallèle des fichiers au format MED (PR #449).
- Support pour la lecture des groupes de noeuds (Arcane::NodeGroup) dans les maillages au format MSH (PR #475).
- Support pour la renumérotation des maillages AMR en 3D. Cela permet d'avoir la même numérotation en 3D quel que soit le découpage (PR #495, PR #514, PR #523).
- Ajoute accès à Arcane::IMeshMng dans Arcane::ICaseMng et Arcane::IPhysicalUnitSystem (PR #461).
- Support des accélérateurs pour les classes gérant le maillage cartésien (Arcane::CellDirectionMng, Arcane::FaceDirectionMng et Arcane::NodeDirectionMng) (PR #474)
- Ajoute classe Arcane::impl::MutableItemBase pour remplacer l'utilisation de Arcane::ItemInternal (PR #499).
- Ajoute possibilité d'indexer les composantes de Arcane::Real2, Arcane::Real3, Arcane::Real2x2 et Arcane::Real3x3 par l'opérateur
operator()
(PR #485).
- Développements préliminaires pour les variables du maillage à plusieurs dimensions (PR #459, PR #463, PR #464, PR #466, PR #471).
- Ajoute interface Arcane::IDoFFamily pour gérer les Arcane::DoF. Auparavant il fallait utiliser directement l'implémentation Arcane::mesh::DoFFamily (PR #480)
- Support dans Aleph des variables qui n'ont pas de familles par défaut (comme les Arcane::DoF par exemple) (PR #468).
- Support pour compresser les données Arcane::IData via une instance de Arcane::IDataCompressor. Ce mécanisme est disponible pour les matériaux en appelant la méthode Arcane::Materials::IMeshMaterialMng::setDataCompressorServiceName(). Il est utilisé lors des appels à Arcane::Materials::IMeshMaterialMng::forceRecompute() ou de l'utilisation de la classe Arcane::Materials::MeshMaterialBackup (PR #531, PR #532).
- Support des maillages multiples dans les options du jeu de données(PR #453, PR #548).
- Ajoute classe Arcane::MeshHandleOrMesh pour faciliter la transition entre Arcane::IMesh et Arcane::MeshHandle lors de l'initialisation (PR #549).
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
- Supprime classes internes obsolètes Arcane::IAllocator, Arcane::DefaultAllocator, Arcane::DataVector1D, Arcane::DataVectorCommond1D et Arcane::Dictionary. Ces classes ne sont plus utilisées depuis longtemps (PR #422).
- Ajoute classe Arcane::TestLogger pour comparer les résultats des tests par rapport à un fichier listing de référence (PR #418).
- Ajoute possibilité de conserver les instances de Arcane::ItemSharedInfo' dans Arcane::ItemInternalConnectivityList'. Cela permettra de supprimer une indirection lors des accès aux connectivités. Cette option est pour l'instant uniquement utilisée en phase de test (PR #371)
- Ajoute support pour l'appel Arccore::MessagePassing::mpLegacyProbe() pour les différents modes d'échange de message disponibles (PR #431)
- Refactorisation des classes Arcane::NumArray, Arcane::MDSpan, Arcane::ArrayExtents et Arcane::ArrayBounds pour unifier le code et supporter des dimensions à la fois statiques et dynamiques. La page Utilisation de la classe NumArray explique l'utilisation de ces classes (PR #426, PR #428, PR #433, PR #437, PR #440).
- Utilise par défaut la Version 2 des synchronisations avec MPI. Cette version est la même que la version 1 utilisée auparavant mais sans le support des types dérivés (PR #434).
- [accelerator] Unifie le lancement des noyaux de calcul créés par les macros RUNCOMMAND_LOOP et RUNCOMMAND_ENUMERATE (PR #438).
- Unifie l'API de profiling entre les commandes (Arcane::Accelerator::RunCommand) et les énumérateurs classiques (via Arcane::IItemEnumeratorTracer). En fin de calcul l'affichage est trié par ordre décroissant du temps passé dans chaque boucle (PR #442, PR #443).
- Commence le développement des classes Arcane::NumVector and Arcane::NumMatrix pour généraliser les types Arcane::Real2, Arcane::Real3, Arcane::Real2x2 et Arcane::Real3x3. Ces classes sont pour l'instant à usage interne de Arcane (PR #441).
- Diverses optimisations dans les classes internes gérant la connectivités et les itérateurs pour réduire leur taille (PR #479, PR #482, PR #483, PR #484)
- Supprime utilisation de Arcane::ItemInternalList dans Arcane::ItemVector et Arcane::ItemVectorView (PR #486, PR #487).
- Supprime utilisation de Arcane::ItemInternalVectorView (PR #498)
- Supprime utilisation de Arcane::ItemInternal dans de nombreuses classes internes (PR #488, PR #492, PR #500, PR #501, PR #502)
- Supprime dans Arcane::MDSpan et Arcane::NumArray les indexeurs supplémentaires pour les classes Arcane::Real2, Arcane::Real3, Arcane::Real2x2 et Arcane::Real3x3. Ces indexeurs avaient été ajoutés à des fin de test mais n'étaient pas utilisés (PR #490).
- Autorise de copier les instances de Arcane::StandaloneAcceleratorMng et utilise une sémantique par référence (PR #509).
- Autorise des instance de Arcane::NumVector et Arcane::NumMatrix avec des valeurs quelconques (auparant seules les valeurs 2 ou 3 étaient autorisées) (PR #521)
- Déplace l'implémentation des classes liées à Aleph dans les fichiers sources au lieu des fichiers d'en-tête (PR #504).
- Fournit une implémentation vide pour les méthodes utilisant Arcane::IMultiArray2Data. Cette interface n'est plus utilisée et cela permettra au code utilisateur de supprimer les visiteurs associés à ce type (PR #529).
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:
- Simplifie l'implémentation des synchronisations fournissant un mécanisme indépendant du type de la donnée (PR #282).
- Utilise des variables pour gérer certaines données sur les entités telles que Arcane::Item::owner(), Arcane::Item::itemTypeId(). Cela permettra à terme de rendre ces informations accessibles sur accélérateurs (PR #284, PR #285, PR #292, PR #295)
- Ajout d'une classe Arcane::ItemBase servant de classe de base pour Arcane::Item et Arcane::ItemInternal (PR #298, PR #363).
- Suppression d'une indirection lorsqu'on accède aux informations des connectivités à partir d'une entité (par exemple Arcane::Cell::node()) (PR #298).
- Simplification de la gestion des informations communes aux entités dans une famille pour qu'il n'y ait maintenant plus qu'une seule instance commune de Arcane::ItemSharedInfo (PR #290, PR #292, PR #297).
- Supprime certains usages de Arcane::ISubDomain (PR #327)
- Optimise les structures gérant le maillage cartésien pour ne plus avoir à conserver les instances de Arcane::ItemInternal*. Cela permet de réduire la consommation mémoire et potentiellement d'améliorer les performances (PR #345).
- Utilise des vues au lieu de Arccore::SharedArray pour les classes gérant les directions cartésiennes (Arcane::CellDirectionMng, Arcane::FaceDirectionMng et Arcane::NodeDirectionMng) (PR #347).
- Utilise un compteur de référence pour gérer Arccore::Ref<Arcane::ICaseFunction> (PR #329, PR #356).
- Ajoute constructeur pour la classe Arcane::Item et ses classes dérivées à partir d'un localId() et d'un Arcane::ItemSharedInfo (PR #357).
- Mise à jour des références des projets C# pour utiliser les dernières version des packages (PR #359).
- Nettoyage des classes Arcane::Real2, Arcane::Real3, Arcane::Real2x2 et Arcane::Real3x3 et ajoute constructeurs à partir d'un Arcane::Real (PR #370, PR #373).
- Refonte partiel de la gestion de la concurrence pour mutualiser certaines fonctionnalités (PR #389).
- Utilise un Arccore::UniqueArray pour conteneur de Arcane::ListImplT. Auparavant le conteneur était un simple tableau C (PR #407).
- Dans Arcane::ItemGroupImpl, utilise Arcane::AutoRefT pour conserver des référence aux sous-groupes à la place d'un simple pointeur. Cela permet de garantir que les sous-groupes ne seront pas détruits tant que le parent associé existe.
- Corrige divers avertissements signalés par coverity (PR #402, PR #403, PR #405, PR #409, PR #410 )
- [C#] Indique qu'il faut au moins la version 8.0 du langage.
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:
- Corrige l'opérateur de recopie lorsqu'on utilise deux vues du même type. Comme l'opérateur de recopie n'était pas surchargé, seule la référence était modifiée et pas la valeur. Cela se produisait dans le cas suivant:
auto v1 = viewInOut(var1);
auto v2 = viewInOut(var2);
v2[icell] = v1[icell];
}
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
- Corrige erreur de compilation dans le constructeur Span<const T> à partir d'un 'ConstArrayView'.
- [arccore] Corrige envoi de message manquant lors de l'appel à Arccore::MessagePassing::PointToPointSerializerMng::waitMessages(). Il manquait l'appel à Arccore::MessagePassing::PointToPointSerializerMng::processPendingMessages(). A cause de ce bug, la classe Arcane::TransferValuesParallelOperation ne fonctionnait pas et par conséquent la méthode Arcane::IItemFamily::reduceFromGhostItems() non plus.
- [config] Supporte le cas où plusieurs versions du SDK pour 'dotnet' sont installées. Dans ce cas la version la plus récente est utilisée.
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.