SWDEV-317925 - Fix for remove dependency issue

Change-Id: Ifbd3e9892f328d9c0d029c81d7bd08d9d444a318


[ROCm/clr commit: e34fd8abe1]
이 커밋은 다음에 포함됨:
Sarbojit Sarkar 작성하고 Sarbojit Sarkar가 2022-01-23 23:11:32 -05:00를 커밋함
1 부모 fe0a0d66a7
커밋 3c42e9cd0f
2 파일이 변경됨
+13 -3

검색과 일치하는 파일 없음

+3 -1
파일 보기
@@ -1177,7 +1177,9 @@ hipError_t hipGraphRemoveDependencies(hipGraph_t graph, const hipGraphNode_t* fr
HIP_RETURN(hipErrorInvalidValue);
}
for (size_t i = 0; i < numDependencies; i++) {
from[i]->RemoveEdge(to[i]);
if (from[i]->RemoveEdge(to[i]) == false) {
HIP_RETURN(hipErrorInvalidValue);
}
}
HIP_RETURN(hipSuccess);
}
+10 -2
파일 보기
@@ -163,8 +163,15 @@ struct hipGraphNode {
childNode->AddDependency(this);
}
/// Remove edge, update parent node outdegree, child node indegree, level and dependency
void RemoveEdge(const Node& childNode) {
edges_.erase(std::remove(edges_.begin(), edges_.end(), childNode), edges_.end());
bool RemoveEdge(const Node& childNode) {
// std::remove changes the end() hence saving it before hand for validation
auto currEdgeEnd = edges_.end();
auto it = std::remove(edges_.begin(), edges_.end(), childNode);
if (it == currEdgeEnd) {
// Should come here if childNode is not present in the edge list
return false;
}
edges_.erase(it, edges_.end());
outDegree_--;
childNode->SetInDegree(childNode->GetInDegree() - 1);
const std::vector<Node>& dependencies = childNode->GetDependencies();
@@ -176,6 +183,7 @@ struct hipGraphNode {
}
childNode->SetLevel(level);
childNode->RemoveDependency(this);
return true;
}
/// Get Runlist of the nodes embedded as part of the graphnode(e.g. ChildGraph)
virtual void GetRunList(std::vector<std::vector<Node>>& parallelList,