From 2f65b85e09c97305320198e84720fafdf387f801 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com> Date: Wed, 9 Oct 2024 17:33:42 +0200 Subject: [PATCH] Few code clean-up --- src/mesh/ConnectivityDispatcher.cpp | 136 +++++++++++++++------------- src/utils/Partitioner.cpp | 3 +- 2 files changed, 73 insertions(+), 66 deletions(-) diff --git a/src/mesh/ConnectivityDispatcher.cpp b/src/mesh/ConnectivityDispatcher.cpp index 65326b56b..c78682184 100644 --- a/src/mesh/ConnectivityDispatcher.cpp +++ b/src/mesh/ConnectivityDispatcher.cpp @@ -28,17 +28,17 @@ ConnectivityDispatcher<Dimension>::_buildNewOwner() using ItemId = ItemIdT<item_type>; ItemValue<int, item_type> item_new_owner(m_connectivity); parallel_for( - item_new_owner.numberOfItems(), PUGS_LAMBDA(const ItemId& l) { - const auto& item_to_cell = item_to_cell_matrix[l]; - CellId Jmin = item_to_cell[0]; - - for (size_t j = 1; j < item_to_cell.size(); ++j) { - const CellId J = item_to_cell[j]; - if (cell_number[J] < cell_number[Jmin]) { - Jmin = J; + item_new_owner.numberOfItems(), PUGS_LAMBDA(const ItemId& item_id) { + const auto& item_to_cell = item_to_cell_matrix[item_id]; + CellId min_number_cell_id = item_to_cell[0]; + + for (size_t i_cell = 1; i_cell < item_to_cell.size(); ++i_cell) { + const CellId cell_id = item_to_cell[i_cell]; + if (cell_number[cell_id] < cell_number[min_number_cell_id]) { + min_number_cell_id = cell_id; } } - item_new_owner[l] = cell_new_owner[Jmin]; + item_new_owner[item_id] = cell_new_owner[min_number_cell_id]; }); synchronize(item_new_owner); @@ -72,22 +72,22 @@ ConnectivityDispatcher<Dimension>::_buildItemListToSend() std::vector<std::vector<CellId>> cell_vector_to_send_by_proc(parallel::size()); Array<bool> send_to_rank(parallel::size()); - for (CellId j = 0; j < m_connectivity.numberOfCells(); ++j) { + for (CellId cell_id = 0; cell_id < m_connectivity.numberOfCells(); ++cell_id) { send_to_rank.fill(false); - const auto& cell_to_node = cell_to_node_matrix[j]; - - for (size_t R = 0; R < cell_to_node.size(); ++R) { - const NodeId& r = cell_to_node[R]; - const auto& node_to_cell = node_to_cell_matrix[r]; - for (size_t K = 0; K < node_to_cell.size(); ++K) { - const CellId& k = node_to_cell[K]; - send_to_rank[cell_new_owner[k]] = true; + const auto& cell_to_node = cell_to_node_matrix[cell_id]; + + for (size_t i_node = 0; i_node < cell_to_node.size(); ++i_node) { + const NodeId& node_id = cell_to_node[i_node]; + const auto& node_to_cell = node_to_cell_matrix[node_id]; + for (size_t i_node_cell = 0; i_node_cell < node_to_cell.size(); ++i_node_cell) { + const CellId& node_cell_id = node_to_cell[i_node_cell]; + send_to_rank[cell_new_owner[node_cell_id]] = true; } } - for (size_t k = 0; k < send_to_rank.size(); ++k) { - if (send_to_rank[k]) { - cell_vector_to_send_by_proc[k].push_back(j); + for (size_t i_rank = 0; i_rank < send_to_rank.size(); ++i_rank) { + if (send_to_rank[i_rank]) { + cell_vector_to_send_by_proc[i_rank].push_back(cell_id); } } } @@ -110,11 +110,11 @@ ConnectivityDispatcher<Dimension>::_buildItemListToSend() Array<bool> tag(m_connectivity.template numberOf<item_type>()); tag.fill(false); std::vector<ItemId> item_id_vector; - for (size_t j = 0; j < cell_list_to_send_by_proc[i_rank].size(); ++j) { - const CellId& cell_id = cell_list_to_send_by_proc[i_rank][j]; + for (size_t i_cell = 0; i_cell < cell_list_to_send_by_proc[i_rank].size(); ++i_cell) { + const CellId& cell_id = cell_list_to_send_by_proc[i_rank][i_cell]; const auto& cell_sub_item_list = cell_to_sub_item_matrix[cell_id]; - for (size_t r = 0; r < cell_sub_item_list.size(); ++r) { - const ItemId& item_id = cell_sub_item_list[r]; + for (size_t i_item = 0; i_item < cell_sub_item_list.size(); ++i_item) { + const ItemId& item_id = cell_sub_item_list[i_item]; if (not tag[item_id]) { item_id_vector.push_back(item_id); tag[item_id] = true; @@ -155,9 +155,9 @@ ConnectivityDispatcher<Dimension>::_gatherFrom(const ItemValue<DataType, item_ty gathered_array = Array<std::remove_const_t<DataType>>(this->_dispatchedInfo<item_type>().m_number_to_id_map.size()); for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) { Assert(recv_id_correspondance_by_proc[i_rank].size() == recv_item_data_by_proc[i_rank].size()); - for (size_t r = 0; r < recv_id_correspondance_by_proc[i_rank].size(); ++r) { - const auto& item_id = recv_id_correspondance_by_proc[i_rank][r]; - gathered_array[item_id] = recv_item_data_by_proc[i_rank][r]; + for (size_t i_item = 0; i_item < recv_id_correspondance_by_proc[i_rank].size(); ++i_item) { + const auto& item_id = recv_id_correspondance_by_proc[i_rank][i_item]; + gathered_array[item_id] = recv_item_data_by_proc[i_rank][i_item]; } } } @@ -180,11 +180,11 @@ ConnectivityDispatcher<Dimension>::_gatherFrom( for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) { std::vector<MutableDataType> data_by_item_vector; - for (size_t j = 0; j < item_list_to_send_by_proc[i_rank].size(); ++j) { - const ItemId& item_id = item_list_to_send_by_proc[i_rank][j]; + for (size_t i_item = 0; i_item < item_list_to_send_by_proc[i_rank].size(); ++i_item) { + const ItemId& item_id = item_list_to_send_by_proc[i_rank][i_item]; const auto& item_data = data_to_gather.itemArray(item_id); - for (size_t l = 0; l < item_data.size(); ++l) { - data_by_item_vector.push_back(item_data[l]); + for (size_t i_data = 0; i_data < item_data.size(); ++i_data) { + data_by_item_vector.push_back(item_data[i_data]); } } data_to_send_by_proc[i_rank] = convert_to_array(data_by_item_vector); @@ -211,13 +211,13 @@ ConnectivityDispatcher<Dimension>::_gatherFrom( gathered_array = Array<std::remove_const_t<DataType>>(recv_array_size); { - size_t l = 0; + size_t i_value = 0; for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) { - for (size_t j = 0; j < recv_data_to_gather_by_proc[i_rank].size(); ++j) { - gathered_array[l++] = recv_data_to_gather_by_proc[i_rank][j]; + for (size_t i_rank_value = 0; i_rank_value < recv_data_to_gather_by_proc[i_rank].size(); ++i_rank_value) { + gathered_array[i_value++] = recv_data_to_gather_by_proc[i_rank][i_rank_value]; } } - Assert(gathered_array.size() == l); + Assert(gathered_array.size() == i_value); } } @@ -229,8 +229,8 @@ ConnectivityDispatcher<Dimension>::_buildCellNumberIdMap() auto& cell_number_id_map = this->_dispatchedInfo<ItemType::cell>().m_number_to_id_map; for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) { CellId cell_id = 0; - for (size_t i = 0; i < recv_cell_number_by_proc[i_rank].size(); ++i) { - const int cell_number = recv_cell_number_by_proc[i_rank][i]; + for (size_t i_rank_cell = 0; i_rank_cell < recv_cell_number_by_proc[i_rank].size(); ++i_rank_cell) { + const int cell_number = recv_cell_number_by_proc[i_rank][i_rank_cell]; auto [iterator, inserted] = cell_number_id_map.insert(std::make_pair(cell_number, cell_id)); if (inserted) ++cell_id; @@ -252,8 +252,9 @@ ConnectivityDispatcher<Dimension>::_buildSubItemNumberToIdMap() auto& sub_item_number_id_map = this->_dispatchedInfo<ItemOfItemT::sub_item_type>().m_number_to_id_map; for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) { int sub_item_id = 0; - for (size_t i = 0; i < cell_sub_item_number_to_recv_by_proc[i_rank].size(); ++i) { - int sub_item_number = cell_sub_item_number_to_recv_by_proc[i_rank][i]; + for (size_t i_rank_sub_item = 0; i_rank_sub_item < cell_sub_item_number_to_recv_by_proc[i_rank].size(); + ++i_rank_sub_item) { + int sub_item_number = cell_sub_item_number_to_recv_by_proc[i_rank][i_rank_sub_item]; auto [iterator, inserted] = sub_item_number_id_map.insert(std::make_pair(sub_item_number, sub_item_id)); if (inserted) sub_item_id++; @@ -273,8 +274,9 @@ ConnectivityDispatcher<Dimension>::_buildNumberOfSubItemPerItemToRecvByProc() using ItemId = ItemIdT<SubItemOfItemT::item_type>; parallel_for( - number_of_sub_item_per_item.numberOfItems(), - PUGS_LAMBDA(const ItemId& j) { number_of_sub_item_per_item[j] = item_to_sub_item_matrix[j].size(); }); + number_of_sub_item_per_item.numberOfItems(), PUGS_LAMBDA(const ItemId& item_id) { + number_of_sub_item_per_item[item_id] = item_to_sub_item_matrix[item_id].size(); + }); this->_dispatchedInfo<SubItemOfItemT>().m_number_of_sub_item_per_item_to_recv_by_proc = this->exchange(number_of_sub_item_per_item); @@ -299,11 +301,11 @@ ConnectivityDispatcher<Dimension>::_buildSubItemNumbersToRecvByProc() const auto& item_list_to_send_by_proc = this->_dispatchedInfo<SubItemOfItemT::item_type>().m_list_to_send_by_proc; std::vector<int> sub_item_numbers_by_item_vector; - for (size_t j = 0; j < item_list_to_send_by_proc[i_rank].size(); ++j) { - const ItemId& item_id = item_list_to_send_by_proc[i_rank][j]; + for (size_t i_rank_item = 0; i_rank_item < item_list_to_send_by_proc[i_rank].size(); ++i_rank_item) { + const ItemId& item_id = item_list_to_send_by_proc[i_rank][i_rank_item]; const auto& sub_item_list = item_to_sub_item_matrix[item_id]; - for (size_t r = 0; r < sub_item_list.size(); ++r) { - const SubItemId& sub_item_id = sub_item_list[r]; + for (size_t i_sub_item = 0; i_sub_item < sub_item_list.size(); ++i_sub_item) { + const SubItemId& sub_item_id = sub_item_list[i_sub_item]; sub_item_numbers_by_item_vector.push_back(sub_item_number[sub_item_id]); } } @@ -351,11 +353,14 @@ ConnectivityDispatcher<Dimension>::_buildItemToSubItemDescriptor() std::vector<std::vector<unsigned int>> item_to_subitem_legacy; size_t number_of_node_by_cell = 0; for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) { - int l = 0; - for (size_t i = 0; i < item_list_to_recv_size_by_proc[i_rank]; ++i) { + int i_sub_item = 0; + for (size_t i_rank_item = 0; i_rank_item < item_list_to_recv_size_by_proc[i_rank]; ++i_rank_item) { std::vector<unsigned int> sub_item_vector; - for (int k = 0; k < number_of_sub_item_per_item_to_recv_by_proc[i_rank][i]; ++k) { - const auto& searched_sub_item_id = sub_item_number_id_map.find(recv_item_of_item_numbers_by_proc[i_rank][l++]); + for (int i_rank_sub_item_per_item = 0; + i_rank_sub_item_per_item < number_of_sub_item_per_item_to_recv_by_proc[i_rank][i_rank_item]; + ++i_rank_sub_item_per_item) { + const auto& searched_sub_item_id = + sub_item_number_id_map.find(recv_item_of_item_numbers_by_proc[i_rank][i_sub_item++]); Assert(searched_sub_item_id != sub_item_number_id_map.end()); sub_item_vector.push_back(searched_sub_item_id->second); } @@ -371,14 +376,16 @@ ConnectivityDispatcher<Dimension>::_buildItemToSubItemDescriptor() item_to_subitem_list.fill(10000000); item_to_subitem_row_map[0] = 0; - for (size_t i = 0; i < item_to_subitem_legacy.size(); ++i) { - item_to_subitem_row_map[i + 1] = item_to_subitem_row_map[i] + item_to_subitem_legacy[i].size(); + for (size_t i_rank = 0; i_rank < item_to_subitem_legacy.size(); ++i_rank) { + item_to_subitem_row_map[i_rank + 1] = item_to_subitem_row_map[i_rank] + item_to_subitem_legacy[i_rank].size(); } - size_t l = 0; - for (size_t i = 0; i < item_to_subitem_legacy.size(); ++i) { - const auto& subitem_list = item_to_subitem_legacy[i]; - for (size_t j = 0; j < subitem_list.size(); ++j, ++l) { - item_to_subitem_list[l] = subitem_list[j]; + { + size_t i_sub_item = 0; + for (size_t i_rank = 0; i_rank < item_to_subitem_legacy.size(); ++i_rank) { + const auto& subitem_list = item_to_subitem_legacy[i_rank]; + for (size_t i_rank_sub_item = 0; i_rank_sub_item < subitem_list.size(); ++i_rank_sub_item, ++i_sub_item) { + item_to_subitem_list[i_sub_item] = subitem_list[i_rank_sub_item]; + } } } @@ -401,7 +408,8 @@ ConnectivityDispatcher<Dimension>::_buildRecvItemIdCorrespondanceByProc() Array<int> send_item_number(item_list_to_send_by_proc[i_rank].size()); const Array<const ItemId> send_item_id = item_list_to_send_by_proc[i_rank]; parallel_for( - send_item_number.size(), PUGS_LAMBDA(size_t j) { send_item_number[j] = item_number[send_item_id[j]]; }); + send_item_number.size(), + PUGS_LAMBDA(size_t i_item) { send_item_number[i_item] = item_number[send_item_id[i_item]]; }); send_item_number_by_proc[i_rank] = send_item_number; } @@ -415,11 +423,11 @@ ConnectivityDispatcher<Dimension>::_buildRecvItemIdCorrespondanceByProc() const auto& item_number_to_id_map = this->_dispatchedInfo<item_type>().m_number_to_id_map; for (size_t i_rank = 0; i_rank < item_list_to_recv_size_by_proc.size(); ++i_rank) { Array<ItemId> item_id_correspondance(item_list_to_recv_size_by_proc[i_rank]); - for (size_t l = 0; l < item_list_to_recv_size_by_proc[i_rank]; ++l) { - const int& recv_item_number = recv_item_number_by_proc[i_rank][l]; + for (size_t i_rank_item = 0; i_rank_item < item_list_to_recv_size_by_proc[i_rank]; ++i_rank_item) { + const int& recv_item_number = recv_item_number_by_proc[i_rank][i_rank_item]; const auto& searched_item_id = item_number_to_id_map.find(recv_item_number); Assert(searched_item_id != item_number_to_id_map.end()); - item_id_correspondance[l] = searched_item_id->second; + item_id_correspondance[i_rank_item] = searched_item_id->second; } recv_item_id_correspondance_by_proc[i_rank] = item_id_correspondance; } @@ -572,9 +580,9 @@ ConnectivityDispatcher<Dimension>::_buildItemReferenceList() this->_dispatchedInfo<item_type>().m_recv_id_correspondance_by_proc; std::vector<block_type> item_refs(m_new_descriptor.template itemNumberVector<item_type>().size()); for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) { - for (size_t r = 0; r < recv_item_refs_by_proc[i_rank].size(); ++r) { - const ItemId& item_id = recv_item_id_correspondance_by_proc[i_rank][r]; - item_refs[item_id] = recv_item_refs_by_proc[i_rank][r]; + for (size_t i_item = 0; i_item < recv_item_refs_by_proc[i_rank].size(); ++i_item) { + const ItemId& item_id = recv_item_id_correspondance_by_proc[i_rank][i_item]; + item_refs[item_id] = recv_item_refs_by_proc[i_rank][i_item]; } } diff --git a/src/utils/Partitioner.cpp b/src/utils/Partitioner.cpp index 85e13c22d..d86f798a3 100644 --- a/src/utils/Partitioner.cpp +++ b/src/utils/Partitioner.cpp @@ -72,10 +72,9 @@ Partitioner::partition(const CRSGraph& graph) throw UnexpectedError("Metis Error"); } // LCOV_EXCL_STOP - - MPI_Comm_free(&parmetis_comm); } + MPI_Comm_free(&parmetis_comm); MPI_Group_free(&mesh_group); return part; -- GitLab