Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Works for one cfg #271

Merged
merged 8 commits into from
Feb 1, 2024
Merged

Works for one cfg #271

merged 8 commits into from
Feb 1, 2024

Conversation

HaiwangYu
Copy link
Member

@HaiwangYu HaiwangYu requested a review from brettviren January 23, 2024 06:10
input_queues iqs(isize);
for (size_t ind=0; ind<isize; ++ind) {
iqs[ind] = boost::any_cast<input_queue>(anyinqs[ind]);
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We may don't need to change this. Will test later.

Copy link
Member

@brettviren brettviren left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @HaiwangYu

This looks fine. Really just one comment which may be more an issue of my understanding than with the code changes.

Comment on lines 60 to 74
// push eos
for (size_t ind=0; ind<nin; ++ind) {
auto& iq = iqs[ind];
if (iq.empty()) {
continue;
}
auto frame = iq.front();
if (!frame) {
std::get<0>(oqs).push_back(nullptr); // forward EOS
iq.pop_front();
return (*this)(iqs, oqs);
}
}

/// FIXEME: check all empty
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This might be correct but I'm having trouble following if it is.

The "EOS sync" mechanism here is meant to cause an EOS nullptr to sit on each input queue until all input queues have nullptr at their fronts. That is, when neos equals the number of input queues. Then a single nullptr is sent out the output queue.

get<1>(oqs).push_back(std::make_shared<EmptyFrame>(ds->ident()));
}
else {
log->debug("DeposOrBust: forward deposet");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This log message would be more useful if it included some unique info. Eg, the number of depos in the set.

@HaiwangYu
Copy link
Member Author

Hi @brettviren, I checked HydraCat and some other *Cat, read the tbb/README.org and some other documents. For me, it seems in wct, once a tbb message is sent, there is no mechanism to check if it is rejected and then modify it.

I noticed the Drifter uses a local buffer for the queuing. So I tried similar trick for the FrameSync. Seems it works. Could you double check? A log is here.

@brettviren brettviren merged commit 0feb986 into WireCell:hydra-skip Feb 1, 2024
@HaiwangYu
Copy link
Member Author

Add some notes for documentation.

wire-cell-meeting.pdf

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants