Skip to content

Commit 23e44c1

Browse files
[arcane,std] Utilise toujours tous les rangs pour la lecture parallèle des fichiers 'GMSH'.
Si on n'utilise pas tous les rangs cela provoque des partitions vides et cela peut ensuite faire planter le partitionneur (par exemple ParMetis).
1 parent d6e3f7e commit 23e44c1

File tree

1 file changed

+4
-9
lines changed

1 file changed

+4
-9
lines changed

arcane/src/arcane/std/MshParallelMeshReader.cc

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,8 @@ _readNodesFromFileAscii()
522522
<< " total_nb_node=" << total_nb_node
523523
<< " min_tag=" << min_node_tag
524524
<< " max_tag=" << max_node_tag
525-
<< " read_nb_part=" << m_nb_part;
525+
<< " read_nb_part=" << m_nb_part
526+
<< " nb_rank=" << m_parallel_mng->commSize();
526527

527528
for (Integer i_entity = 0; i_entity < nb_entity; ++i_entity) {
528529
_readNodesOneEntity(i_entity);
@@ -968,6 +969,8 @@ _setNodesCoordinates()
968969
void MshParallelMeshReader::
969970
_allocateCells()
970971
{
972+
// TODO: Allouer par bloc de 100000 mailles pour éviter de faire
973+
// une trop grosse allocation
971974
IMesh* mesh = m_mesh;
972975
Integer nb_elements = m_mesh_info.cells_type.size();
973976
info() << "nb_of_elements=cells_type.size()=" << nb_elements;
@@ -1482,14 +1485,6 @@ readMeshFromMshFile(IMesh* mesh, const String& filename)
14821485

14831486
// Détermine les rangs qui vont conserver les données
14841487
m_nb_part = nb_rank;
1485-
if (nb_rank > 64)
1486-
m_nb_part = nb_rank / 2;
1487-
if (nb_rank > 128)
1488-
m_nb_part = nb_rank / 4;
1489-
if (nb_rank > 512)
1490-
m_nb_part = nb_rank / 8;
1491-
if (nb_rank > 2048)
1492-
m_nb_part = nb_rank / 16;
14931488
m_parts_rank.resize(m_nb_part);
14941489
for (Int32 i = 0; i < m_nb_part; ++i) {
14951490
m_parts_rank[i] = i % nb_rank;

0 commit comments

Comments
 (0)