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
The GPU who is sending zeros bytes will push a ProxyTrigger with zero value fst.
Proxy's loop in proxy.cc will skip handle this trigger.
trigger = fifo.poll();
if (trigger.fst == 0 || trigger.snd == 0) { // TODO: this check is a potential pitfall for custom triggers
continue; // there is one in progress
}
trigger.snd ^= ((uint64_t)1 << (uint64_t)63); // this is where the last bit of snd is reverted.
ProxyHandlerResult result = handler(trigger); // SKIPPED!!!!!!!!!!!!!!!!!!!
When skip happened this GPU's counterpart will not be signaled. This is because Host2DeviceSemaphore::signal -> IBConnection::updateAndSync will not be called. The counterpart will hang at Host2DeviceSemaphoreDeviceHandle's wait
@FC-Li This is expected as we don't define behavior of put-ing zero bytes (which will make fst == 0). We may need to handle this in a better way, but do you have any use cases for put-ing zero bytes, which is a no-op by definition?
The GPU who is sending zeros bytes will push a
ProxyTrigger
with zero valuefst
.Proxy's loop in proxy.cc will skip handle this trigger.
When skip happened this GPU's counterpart will not be signaled. This is because Host2DeviceSemaphore::signal -> IBConnection::updateAndSync will not be called. The counterpart will hang at Host2DeviceSemaphoreDeviceHandle's wait
The text was updated successfully, but these errors were encountered: