// to _Recv as control dependency when creating GrapplerItem.
std::unordered_map<string, const NodeDef*> name_to_send;
for (const auto& node : graph.node()) {
- if (node.op() == "_Send") {
+ if (IsSend(node)) {
const auto& attr = node.attr();
name_to_send[attr.at("tensor_name").s()] = &node;
}
return node.op() == "ReciprocalGrad";
}
-bool IsRecv(const NodeDef& node) { return node.op() == "_Recv"; }
+bool IsRecv(const NodeDef& node) {
+ return node.op() == "_Recv" || node.op() == "_HostRecv";
+}
bool IsReduction(const NodeDef& node) {
const auto& op = node.op();
bool IsSeluGrad(const NodeDef& node) { return node.op() == "SeluGrad"; }
-bool IsSend(const NodeDef& node) { return node.op() == "_Send"; }
+bool IsSend(const NodeDef& node) {
+ return node.op() == "_Send" || node.op() == "_HostSend";
+}
bool IsShape(const NodeDef& node) { return node.op() == "Shape"; }