Skip to content

Commit

Permalink
- replaced HpcOmTaskGraph.transposeTaskGraph with BackendDAEUtil.tran…
Browse files Browse the repository at this point in the history
…sposeMatrix

git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@21778 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
Volker Waurich committed Aug 6, 2014
1 parent 2f6a8ed commit d88b430
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 49 deletions.
12 changes: 6 additions & 6 deletions Compiler/BackEnd/HpcOmScheduler.mo
Expand Up @@ -95,7 +95,7 @@ protected
HpcOmSimCode.Schedule tmpSchedule;
algorithm
HpcOmTaskGraph.TASKGRAPHMETA(commCosts=commCosts) := iTaskGraphMeta;
taskGraphT := HpcOmTaskGraph.transposeTaskGraph(iTaskGraph);
taskGraphT := BackendDAEUtil.transposeMatrix(iTaskGraph,arrayLength(iTaskGraph));
rootNodes := HpcOmTaskGraph.getRootNodes(iTaskGraph);
allTasks := convertTaskGraphToTasks(taskGraphT,iTaskGraphMeta,convertNodeToTask);
nodeList_refCount := List.map1(rootNodes, getTaskByIndex, allTasks);
Expand Down Expand Up @@ -257,7 +257,7 @@ protected
list<String> lockIdc;
algorithm
HpcOmTaskGraph.TASKGRAPHMETA(commCosts=commCosts) := iTaskGraphMeta;
taskGraphT := HpcOmTaskGraph.transposeTaskGraph(iTaskGraph);
taskGraphT := BackendDAEUtil.transposeMatrix(iTaskGraph,arrayLength(iTaskGraph));
//() := HpcOmTaskGraph.printTaskGraph(taskGraphT);
commCostsT := HpcOmTaskGraph.transposeCommCosts(commCosts);
leaveNodes := HpcOmTaskGraph.getLeafNodes(iTaskGraph);
Expand Down Expand Up @@ -1715,7 +1715,7 @@ algorithm
oSchedule := matchcontinue(iTaskGraph,iTaskGraphMeta,iSccSimEqMapping)
case(_,HpcOmTaskGraph.TASKGRAPHMETA(inComps=inComps,nodeMark=nodeMark),_)
equation
taskGraphT = HpcOmTaskGraph.transposeTaskGraph(iTaskGraph);
taskGraphT = BackendDAEUtil.transposeMatrix(iTaskGraph,arrayLength(iTaskGraph));
((_,nodeLevelMap)) = Util.arrayFold3(taskGraphT, createNodeLevelMapping, nodeMark, inComps, iSccSimEqMapping, (1,{}));
nodeLevelMap = List.sort(nodeLevelMap, sortNodeLevelMapping);
filteredNodeLevelMap = List.map(nodeLevelMap, filterNodeLevelMapping);
Expand Down Expand Up @@ -1819,7 +1819,7 @@ algorithm
print("External scheduling info: " +& stringDelimitList(List.map(extInfo, intString), ",") +& "\n");
true = intEq(arrayLength(iTaskGraph),arrayLength(extInfoArr));

taskGraphT = HpcOmTaskGraph.transposeTaskGraph(iTaskGraph);
taskGraphT = BackendDAEUtil.transposeMatrix(iTaskGraph,arrayLength(iTaskGraph));
rootNodes = HpcOmTaskGraph.getRootNodes(iTaskGraph);
allTasks = convertTaskGraphToTasks(taskGraphT,iTaskGraphMeta,convertNodeToTask);
nodeList_refCount = List.map1(rootNodes, getTaskByIndex, allTasks);
Expand Down Expand Up @@ -1869,7 +1869,7 @@ algorithm
print("External scheduling info: " +& stringDelimitList(List.map(extInfo, intString), ",") +& "\n");
true = intEq(arrayLength(iTaskGraph),arrayLength(extInfoArr));

taskGraphT = HpcOmTaskGraph.transposeTaskGraph(iTaskGraph);
taskGraphT = BackendDAEUtil.transposeMatrix(iTaskGraph,arrayLength(iTaskGraph));
rootNodes = HpcOmTaskGraph.getRootNodes(iTaskGraph);
allTasks = convertTaskGraphToTasks(taskGraphT,iTaskGraphMeta,convertNodeToTask);
nodeList_refCount = List.map1(rootNodes, getTaskByIndex, allTasks);
Expand Down Expand Up @@ -1918,7 +1918,7 @@ algorithm
extInfoArr = listArray(extInfo);
true = intEq(arrayLength(iTaskGraph),arrayLength(extInfoArr));
//print("External scheduling info: " +& stringDelimitList(List.map(extInfo, intString), ",") +& "\n");
taskGraphT = HpcOmTaskGraph.transposeTaskGraph(iTaskGraph);
taskGraphT = BackendDAEUtil.transposeMatrix(iTaskGraph,arrayLength(iTaskGraph));
rootNodes = HpcOmTaskGraph.getRootNodes(iTaskGraph);
allTasks = convertTaskGraphToTasks(taskGraphT,iTaskGraphMeta,convertNodeToTask);
nodeList_refCount = List.map1(rootNodes, getTaskByIndex, allTasks);
Expand Down
45 changes: 2 additions & 43 deletions Compiler/BackEnd/HpcOmTaskGraph.mo
Expand Up @@ -3379,7 +3379,7 @@ protected
TaskGraph iGraphT;
list<list<Integer>> mergedNodes;
algorithm
iGraphT := transposeTaskGraph(iGraph);
iGraphT := BackendDAEUtil.transposeMatrix(iGraph,arrayLength(iGraph));
mergedNodes := mergeParentNodes0(iGraph, iGraphT, iGraphData, doNotMerge, 1, {});
(oGraph,oGraphData) := contractNodesInGraph(mergedNodes, iGraph, iGraphData);
oChanged := List.isNotEmpty(mergedNodes);
Expand Down Expand Up @@ -3566,7 +3566,7 @@ protected
TaskGraph graphTmp;
algorithm
//This function contracts all nodes into the startNode
graphInT := transposeTaskGraph(graphIn);
graphInT := BackendDAEUtil.transposeMatrix(graphIn,arrayLength(graphIn));
//print("HpcOmTaskGraph.contractNodesInGraph1 contractNodes: " +& stringDelimitList(List.map(contractNodes,intString),",") +& "\n");
//print("HpcOmTaskGraph.contractNodesInGraph1 startNode: " +& intString(List.last(contractNodes)) +& "\n");
startNode := List.last(contractNodes);
Expand Down Expand Up @@ -5232,47 +5232,6 @@ algorithm
end match;
end tupleToStringIntRealInt;

public function transposeTaskGraph "author: marcusw
Returns the given task graph as transposed version."
input TaskGraph iTaskGraph;
output TaskGraph oTaskGraphT;
protected
TaskGraph transposedGraph;
algorithm
transposedGraph := arrayCreate(arrayLength(iTaskGraph), {});
((transposedGraph,_)) := Util.arrayFold(iTaskGraph, transposeTaskGraph0, (transposedGraph,1));
oTaskGraphT := transposedGraph;
end transposeTaskGraph;

protected function transposeTaskGraph0 "author: marcusw
Helper function of transposeTaskGraph. Handles the parentlist of a child node."
input list<Integer> iParentNodes;
input tuple<TaskGraph,Integer> iGraph; //current graph and childIdx
output tuple<TaskGraph,Integer> oGraph;
protected
TaskGraph tmpGraph;
Integer index;
algorithm
(tmpGraph,index) := iGraph;
tmpGraph := List.fold1(iParentNodes, transposeTaskGraph1, index, tmpGraph);
oGraph := (tmpGraph,index+1);
end transposeTaskGraph0;

protected function transposeTaskGraph1 "author: marcusw
Helper function of transposeTaskGraph0. Adds the childIdx to the parent-array-entry."
input Integer iParentIdx;
input Integer iChildIdx;
input TaskGraph iTaskGraph;
output TaskGraph oTaskGraph;
protected
TaskGraph tmpGraph;
list<Integer> tmpList;
algorithm
tmpList := arrayGet(iTaskGraph,iParentIdx);
tmpList := iChildIdx::tmpList;
oTaskGraph := arrayUpdate(iTaskGraph,iParentIdx,tmpList);
end transposeTaskGraph1;

public function transposeCommCosts "author: marcusw
Returns the given communication costs as transposed version."
input array<list<tuple<Integer, Integer, Integer>>> iCommCosts;
Expand Down

0 comments on commit d88b430

Please sign in to comment.