Skip to content

Commit d498379

Browse files
sbstndbgouarin
authored andcommitted
fix: cleanup
1 parent eca9e85 commit d498379

File tree

1 file changed

+10
-22
lines changed

1 file changed

+10
-22
lines changed

include/samurai/mesh.hpp

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -23,33 +23,23 @@ namespace mpi = boost::mpi;
2323

2424
#ifdef SAMURAI_WITH_MPI
2525
// Résolution d'un bug : S'il y a trop de rangs MPI et un min_level trop faible, alors il est parfois
26-
// impossible de décomposer le problème. Il faut alors imposer un min_level limite
27-
bool check_size_min_level(std::size_t min_level)
26+
// impossible de décomposer le problème (--> segfault). Il faut alors imposer un min_level limite le temps d'un fix
27+
bool is_invalid_mpi_size(std::size_t min_level)
2828
{
2929
boost::mpi::communicator world;
30-
int size = world.size();
30+
int mpi_size = world.size();
3131

3232
// à vérifier :
3333
// - en 1d ?
34-
// - inférieur ou égal ? i.e. si min_level est à 0 alors j'ai une seule case ?
35-
// valable sur un domaine [0,1] mais quid sur [1, b] ?
36-
if (size <= pow(2, min_level))
37-
{
38-
return false;
39-
}
40-
else
41-
{
42-
return true;
43-
}
44-
return true;
34+
return (mpi_size > std::pow(2, min_level));
4535
}
4636

47-
void error_on_mpi_min_level(std::size_t min_level)
37+
void validate_mpi_min_level(std::size_t min_level)
4838
{
49-
auto error = check_size_min_level(min_level);
50-
if (error)
39+
if (is_invalid_mpi_size(min_level))
5140
{
52-
std::cout << "ERROR: Please reduce MPI Size or increase min_value according to the rule mpi_size <= 2^min_level." << std::endl;
41+
std::cerr << "ERROR: MPI size (" << boost::mpi::communicator().size() << ") is too large for min_level = " << min_level
42+
<< ". Please ensure that mpi_size <= 2^min_level." << std::endl;
5343
MPI_Abort(MPI_COMM_WORLD, 1);
5444
}
5545
}
@@ -280,9 +270,7 @@ namespace samurai
280270
#ifdef SAMURAI_WITH_MPI
281271
partition_mesh(start_level, b);
282272
// load_balancing();
283-
284-
// resolve MPI issue when too lot MPI rank for 2^min_level
285-
error_on_mpi_min_level(min_level);
273+
validate_mpi_min_level(min_level);
286274
#else
287275
this->m_cells[mesh_id_t::cells][start_level] = {start_level, b, approx_box_tol, scaling_factor_};
288276
#endif
@@ -315,7 +303,7 @@ namespace samurai
315303
partition_mesh(start_level, b);
316304
// load_balancing();
317305

318-
error_on_mpi_min_level(min_level);
306+
validate_mpi_min_level(min_level);
319307
#else
320308
this->m_cells[mesh_id_t::cells][start_level] = {start_level, b, approx_box_tol, scaling_factor_};
321309
#endif

0 commit comments

Comments
 (0)