You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently, when generating traces, we create 3 SharedEntityCommunication objects to exchange Vector, DenseMatrix, and SparseMatrix. All of them take "edge to true edge" table as input, and generate an entity (edge in this case) to proc table entity_proc_ within the object.
"entity_trueentity has more than one column per row!");
entity_proc_->AddConnection(entity, comm_rank_);
if (ete_offd_I_[entity + 1] - ete_offd_I_[entity] == 0)
{
int trueentity = ete_diag_J_[ete_diag_I_[entity]];
for (unsignedint i = 0; i < trueentity_proc.size(); ++i)
{
if (trueentity == trueentity_proc[i].first)
{
int proc = trueentity_proc[i].second;
entity_proc_->AddConnection(entity, proc);
}
}
}
if (ete_offd_I_[entity + 1] - ete_offd_I_[entity] == 1)
{
int col = ete_offd_J_[ete_offd_I_[entity]];
for (int recv = 0; recv < comm_pkg->num_recvs; ++recv)
{
int proc = comm_pkg->recv_procs[recv];
for (int k = comm_pkg->recv_vec_starts[recv];
k < comm_pkg->recv_vec_starts[recv + 1];
++k)
{
if (k == col)
{
entity_proc_->AddConnection(entity, proc);
}
}
}
}
}
entity_proc_->ShiftUpI();
entity_proc_->Finalize();
Is it right that entity_proc_ only needs to be generated once (i.e. it is independent of what type is being exchanged)? If so, can this class be modified to do that? One simple way may be to take the construction of entity_proc_ out of the class and take it as input instead of entity_trueentity. Otherwise, we can also split setup and the actual communication, and only template the communication part. Most likely the second approach will break template structure of the class.
If possible, it's always good to avoid redundant work. Nevertheless, I guess building entity_proc_ is not really that expensive, so if the modification is not easy to make, this issue can be ignored.
The text was updated successfully, but these errors were encountered:
Currently, when generating traces, we create 3
SharedEntityCommunication
objects to exchangeVector
,DenseMatrix
, andSparseMatrix
. All of them take "edge to true edge" table as input, and generate an entity (edge in this case) to proc tableentity_proc_
within the object.smoothG/src/sharedentitycommunication.hpp
Lines 345 to 440 in 0eca47e
Is it right that
entity_proc_
only needs to be generated once (i.e. it is independent of what type is being exchanged)? If so, can this class be modified to do that? One simple way may be to take the construction ofentity_proc_
out of the class and take it as input instead ofentity_trueentity
. Otherwise, we can also split setup and the actual communication, and only template the communication part. Most likely the second approach will break template structure of the class.If possible, it's always good to avoid redundant work. Nevertheless, I guess building
entity_proc_
is not really that expensive, so if the modification is not easy to make, this issue can be ignored.The text was updated successfully, but these errors were encountered: