Skip to content
Snippets Groups Projects
Commit 120899bb authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Continue debugging [ci-skip]

parent a5277ad4
No related branches found
No related tags found
1 merge request!204Remove m_cell_global_index from Connectivity
...@@ -6,6 +6,9 @@ ...@@ -6,6 +6,9 @@
#include <iostream> #include <iostream>
#warning remove
#include <utils/Demangle.hpp>
template <size_t Dimension> template <size_t Dimension>
template <ItemType item_type> template <ItemType item_type>
void void
...@@ -199,6 +202,8 @@ void ...@@ -199,6 +202,8 @@ void
ConnectivityDispatcher<Dimension>::_gatherFrom(const ItemValue<DataType, item_type, ConnectivityPtr>& data_to_gather, ConnectivityDispatcher<Dimension>::_gatherFrom(const ItemValue<DataType, item_type, ConnectivityPtr>& data_to_gather,
Array<std::remove_const_t<DataType>>& gathered_array) Array<std::remove_const_t<DataType>>& gathered_array)
{ {
std::cout << rang::style::underline << "-- _gatherFrom[" << itemName(item_type) << "][" << demangle<DataType>()
<< "] --" << rang::style::reset << "\n";
std::vector<Array<const DataType>> recv_item_data_by_proc = this->exchange(data_to_gather); std::vector<Array<const DataType>> recv_item_data_by_proc = this->exchange(data_to_gather);
if constexpr (not(std::is_same_v<std::decay_t<DataType>, CellType>)) { if constexpr (not(std::is_same_v<std::decay_t<DataType>, CellType>)) {
...@@ -218,12 +223,19 @@ ConnectivityDispatcher<Dimension>::_gatherFrom(const ItemValue<DataType, item_ty ...@@ -218,12 +223,19 @@ ConnectivityDispatcher<Dimension>::_gatherFrom(const ItemValue<DataType, item_ty
Assert(recv_id_correspondance_by_proc.size() == parallel::size()); Assert(recv_id_correspondance_by_proc.size() == parallel::size());
gathered_array = Array<std::remove_const_t<DataType>>(this->_dispatchedInfo<item_type>().m_number_to_id_map.size()); gathered_array = Array<std::remove_const_t<DataType>>(this->_dispatchedInfo<item_type>().m_number_to_id_map.size());
size_t shift = 0;
for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) { 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()); 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) { 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]; const auto& item_id = recv_id_correspondance_by_proc[i_rank][r];
gathered_array[item_id] = recv_item_data_by_proc[i_rank][r]; gathered_array[item_id + shift] = recv_item_data_by_proc[i_rank][r];
}
shift += recv_item_data_by_proc[i_rank].size();
} }
if constexpr (not(std::is_same_v<std::decay_t<DataType>, CellType>)) {
std::cout << rang::style::reversed << rang::fgB::yellow << "=> gathered_array = " << gathered_array
<< rang::style::reset << rang::fg::reset << "\n";
} }
} }
...@@ -453,9 +465,9 @@ ConnectivityDispatcher<Dimension>::_buildItemToSubItemDescriptor() ...@@ -453,9 +465,9 @@ ConnectivityDispatcher<Dimension>::_buildItemToSubItemDescriptor()
} }
if constexpr (print) { if constexpr (print) {
for (size_t i_rank = 0; i_rank < parallel::size(); ++i_rank) { for (size_t i = 0; i < item_to_subitem_legacy.size(); ++i) {
std::cout << rang::fgB::magenta << "item_to_subitem_legacy[" << i_rank std::cout << rang::fgB::magenta << "item_to_subitem_legacy[" << i
<< "] = " << convert_to_array(item_to_subitem_legacy[i_rank]) << rang::fg::reset << '\n'; << "] = " << convert_to_array(item_to_subitem_legacy[i]) << rang::fg::reset << '\n';
} }
} }
...@@ -505,17 +517,15 @@ ConnectivityDispatcher<Dimension>::_buildRecvItemIdCorrespondanceByProc() ...@@ -505,17 +517,15 @@ ConnectivityDispatcher<Dimension>::_buildRecvItemIdCorrespondanceByProc()
parallel::exchange(send_item_number_by_proc, recv_item_number_by_proc); parallel::exchange(send_item_number_by_proc, recv_item_number_by_proc);
const auto& item_number_to_id_map = this->_dispatchedInfo<item_type>().m_number_to_id_map; const auto& item_number_to_id_map = this->_dispatchedInfo<item_type>().m_number_to_id_map;
size_t first_new_item_id = 0;
for (size_t i_rank = 0; i_rank < item_list_to_recv_size_by_proc.size(); ++i_rank) { 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]); 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) { 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]; const int& recv_item_number = recv_item_number_by_proc[i_rank][l];
const auto& searched_item_id = item_number_to_id_map.find(recv_item_number); const auto& searched_item_id = item_number_to_id_map.find(recv_item_number);
Assert(searched_item_id != item_number_to_id_map.end()); Assert(searched_item_id != item_number_to_id_map.end());
item_id_correspondance[l] = searched_item_id->second + first_new_item_id; item_id_correspondance[l] = searched_item_id->second;
} }
recv_item_id_correspondance_by_proc[i_rank] = item_id_correspondance; recv_item_id_correspondance_by_proc[i_rank] = item_id_correspondance;
first_new_item_id += item_id_correspondance.size();
} }
this->_dispatchedInfo<item_type>().m_recv_id_correspondance_by_proc = recv_item_id_correspondance_by_proc; this->_dispatchedInfo<item_type>().m_recv_id_correspondance_by_proc = recv_item_id_correspondance_by_proc;
} }
...@@ -829,10 +839,16 @@ ConnectivityDispatcher<Dimension>::ConnectivityDispatcher(const ConnectivityType ...@@ -829,10 +839,16 @@ ConnectivityDispatcher<Dimension>::ConnectivityDispatcher(const ConnectivityType
} }
this->_buildNewOwner<ItemType::node>(); this->_buildNewOwner<ItemType::node>();
std::cout << rang::style::reversed << "--- cell to exchange ---" << rang::style::reset << '\n';
this->_buildItemToExchangeLists<ItemType::cell>(); this->_buildItemToExchangeLists<ItemType::cell>();
std::cout << rang::style::reversed << "--- number of node per cell ---" << rang::style::reset << '\n';
this->_buildNumberOfSubItemPerItemToRecvByProc<NodeOfCell>(); this->_buildNumberOfSubItemPerItemToRecvByProc<NodeOfCell>();
std::cout << rang::style::reversed << "--- node by cell to recv by proc ---" << rang::style::reset << '\n';
this->_buildSubItemNumbersToRecvByProc<NodeOfCell>(); this->_buildSubItemNumbersToRecvByProc<NodeOfCell>();
m_new_descriptor.setCellNumberVector([&] { m_new_descriptor.setCellNumberVector([&] {
...@@ -844,8 +860,12 @@ ConnectivityDispatcher<Dimension>::ConnectivityDispatcher(const ConnectivityType ...@@ -844,8 +860,12 @@ ConnectivityDispatcher<Dimension>::ConnectivityDispatcher(const ConnectivityType
std::cout << rang::fgB::green << "cell_number_vector = " << m_new_descriptor.cellNumberVector() << rang::fg::reset std::cout << rang::fgB::green << "cell_number_vector = " << m_new_descriptor.cellNumberVector() << rang::fg::reset
<< "\n"; << "\n";
std::cout << rang::style::reversed << "--- node of cell to id map ---" << rang::style::reset << '\n';
this->_buildSubItemNumberToIdMap<NodeOfCell>(); this->_buildSubItemNumberToIdMap<NodeOfCell>();
std::cout << rang::style::reversed << "--- node to exchange ---" << rang::style::reset << '\n';
this->_buildItemToExchangeLists<ItemType::node>(); this->_buildItemToExchangeLists<ItemType::node>();
m_new_descriptor.setCellTypeVector([&] { m_new_descriptor.setCellTypeVector([&] {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment