Skip to content

Commit

Permalink
- a lot of typo fixes in CodegenCpp.tpl and CodegenCppHpcom.tpl
Browse files Browse the repository at this point in the history
- removed some unused functions in CodegenCpp.tpl to shrink the size of the file a litte bit
- splitted cpp code generation for the initialization of constant values (e.g. string parameter)
- improved memory optimization of hpcom
- added var to index mapping to the simCode-structure
- enums can now be handled in var to array index mapping
  • Loading branch information
Marcus Walther committed May 15, 2015
1 parent 97f744c commit 6303044
Show file tree
Hide file tree
Showing 9 changed files with 313 additions and 357 deletions.
5 changes: 3 additions & 2 deletions Compiler/BackEnd/BackendQSS.mo
Expand Up @@ -1018,6 +1018,7 @@ algorithm
list<BackendDAE.TimeEvent> timeEvents;
HpcOmSimCode.HpcOmData hpcomData;
HashTableCrIListArray.HashTable varToArrayIndexMapping;
HashTableCrILst.HashTable varToIndexMapping;
Option<SimCode.FmiModelStructure> modelStruct;
list<SimCodeVar.SimVar> mixedArrayVars;
Option<SimCode.BackendMapping> backendMapping;
Expand All @@ -1026,7 +1027,7 @@ algorithm
algebraicEquations,useSymbolicInitialization,useHomotopy,initialEquations,removedInitialEquations,startValueEquations,nominalValueEquations,minValueEquations,maxValueEquations,
parameterEquations,removedEquations,algorithmAndEquationAsserts,equationsForZeroCrossings,jacobianEquations,stateSets,constraints,classAttributes,zeroCrossings,relations,
timeEvents,whenClauses,discreteModelVars,extObjInfo,makefileParams,
delayedExps,jacobianMatrixes,simulationSettingsOpt,fileNamePrefix,hpcomData,varToArrayIndexMapping,crefToSimVarHT,backendMapping, modelStruct),_)
delayedExps,jacobianMatrixes,simulationSettingsOpt,fileNamePrefix,hpcomData,varToArrayIndexMapping,varToIndexMapping,crefToSimVarHT,backendMapping, modelStruct),_)
equation
{eqs} = odeEquations;
eqs = List.map1(eqs,replaceZC,zc_exps);
Expand All @@ -1035,7 +1036,7 @@ algorithm
initialEquations, removedInitialEquations, startValueEquations, nominalValueEquations, minValueEquations, maxValueEquations, parameterEquations,
removedEquations, algorithmAndEquationAsserts, equationsForZeroCrossings, jacobianEquations, stateSets, constraints, classAttributes,
zeroCrossings, relations, timeEvents, whenClauses, discreteModelVars, extObjInfo,
makefileParams, delayedExps, jacobianMatrixes, simulationSettingsOpt, fileNamePrefix, hpcomData, varToArrayIndexMapping, crefToSimVarHT,backendMapping, modelStruct);
makefileParams, delayedExps, jacobianMatrixes, simulationSettingsOpt, fileNamePrefix, hpcomData, varToArrayIndexMapping, varToIndexMapping, crefToSimVarHT,backendMapping, modelStruct);

end match;
end replaceDiscontsInOde;
Expand Down
113 changes: 72 additions & 41 deletions Compiler/BackEnd/HpcOmMemory.mo

Large diffs are not rendered by default.

5 changes: 3 additions & 2 deletions Compiler/BackEnd/HpcOmScheduler.mo
Expand Up @@ -3401,6 +3401,7 @@ protected
SimCode.Files files;
HpcOmSimCode.HpcOmData hpcomData;
HashTableCrIListArray.HashTable varToArrayIndexMapping;
HashTableCrILst.HashTable varToIndexMapping;
Option<SimCode.BackendMapping> backendMapping;
//modelinfo stuff
SimCode.ModelInfo modelInfo;
Expand All @@ -3417,7 +3418,7 @@ algorithm
SimCode.SIMCODE(modelInfo, literals, recordDecls, externalFunctionIncludes, allEquations, odeEquations, algebraicEquations, useSymbolicInitialization, useHomotopy,
initialEquations, removedInitialEquations, startValueEquations, nominalValueEquations, minValueEquations, maxValueEquations, parameterEquations, removedEquations,
algorithmAndEquationAsserts,equationsForZeroCrossings, jacobianEquations, stateSets, constraints, classAttributes, zeroCrossings, relations, timeEvents, whenClauses, discreteModelVars, extObjInfo,
makefileParams, delayedExps, jacobianMatrixes, simulationSettingsOpt, fileNamePrefix, hpcomData, varToArrayIndexMapping, crefToSimVarHT, backendMapping, modelStruct):=simCodeIn;
makefileParams, delayedExps, jacobianMatrixes, simulationSettingsOpt, fileNamePrefix, hpcomData, varToArrayIndexMapping, varToIndexMapping, crefToSimVarHT, backendMapping, modelStruct):=simCodeIn;
SimCode.MODELINFO(name=name,description=description,directory=directory,varInfo=varInfo,vars=vars,functions=functions,labels=labels) := modelInfo;
SimCode.VARINFO(numZeroCrossings=numZeroCrossings, numTimeEvents=numTimeEvents, numRelations=numRelations, numMathEventFunctions=numMathEventFunctions, numStateVars=numStateVars,
numAlgVars=numAlgVars, numDiscreteReal=numDiscreteReal, numIntAlgVars=numIntAlgVars, numBoolAlgVars=numBoolAlgVars, numAlgAliasVars=numAlgAliasVars, numIntAliasVars=numIntAliasVars,
Expand Down Expand Up @@ -3452,7 +3453,7 @@ algorithm
modelInfo := SimCode.MODELINFO(name,description,directory,varInfo,vars,functions,labels);
simCodeOut := SimCode.SIMCODE(modelInfo, literals, recordDecls, externalFunctionIncludes, allEquations, odeEquations, algebraicEquations, useSymbolicInitialization, useHomotopy, initialEquations, removedInitialEquations, startValueEquations, nominalValueEquations, minValueEquations, maxValueEquations,
parameterEquations, removedEquations, algorithmAndEquationAsserts, equationsForZeroCrossings, jacobianEquations, stateSets, constraints, classAttributes, zeroCrossings, relations, timeEvents, whenClauses,
discreteModelVars, extObjInfo, makefileParams, delayedExps, jacobianMatrixes, simulationSettingsOpt, fileNamePrefix, hpcomData, varToArrayIndexMapping, crefToSimVarHT,backendMapping, modelStruct);
discreteModelVars, extObjInfo, makefileParams, delayedExps, jacobianMatrixes, simulationSettingsOpt, fileNamePrefix, hpcomData, varToArrayIndexMapping, varToIndexMapping, crefToSimVarHT,backendMapping, modelStruct);
idxAssOut := ass;
end TDS_assignNewSimEqSysIdxs;

Expand Down
2 changes: 2 additions & 0 deletions Compiler/FrontEnd/DAEUtil.mo
Expand Up @@ -7008,6 +7008,8 @@ algorithm
oIndex := match(iSubscript)
case(DAE.INDEX(DAE.ICONST(integer=index)))
then index;
case(DAE.INDEX(DAE.ENUM_LITERAL(index=index)))
then index;
else
then -1;
end match;
Expand Down
16 changes: 6 additions & 10 deletions Compiler/SimCode/HpcOmSimCodeMain.mo
Expand Up @@ -181,9 +181,8 @@ algorithm
Option<SimCode.FmiModelStructure> modelStruct;
list<SimCodeVar.SimVar> mixedArrayVars;
HpcOmSimCode.HpcOmData hpcomData;
Option<HashTableCrIListArray.HashTable> optVarToArrayIndexMapping;
HashTableCrIListArray.HashTable varToArrayIndexMapping;

HashTableCrILst.HashTable varToIndexMapping;
case (BackendDAE.DAE(eqs=eqs), _, _, _, _,_, _, _, _, _, _, _, _) equation
//Initial System
//--------------
Expand All @@ -197,7 +196,7 @@ algorithm
(simCode,(lastEqMappingIdx,equationSccMapping)) = SimCodeUtil.createSimCode(inBackendDAE, inClassName, filenamePrefix, inString11, functions, externalFunctionIncludes, includeDirs, libs,libPaths, simSettingsOpt, recordDecls, literals, args);
SimCode.SIMCODE(modelInfo, simCodeLiterals, simCodeRecordDecls, simCodeExternalFunctionIncludes, allEquations, odeEquations, algebraicEquations, useSymbolicInitialization, useHomotopy, initialEquations, removedInitialEquations, startValueEquations, nominalValueEquations, minValueEquations, maxValueEquations,
parameterEquations, removedEquations, algorithmAndEquationAsserts, zeroCrossingsEquations, jacobianEquations, stateSets, constraints, classAttributes, zeroCrossings, relations, timeEvents, whenClauses,
discreteModelVars, extObjInfo, makefileParams, delayedExps, jacobianMatrixes, simulationSettingsOpt, fileNamePrefix, _, varToArrayIndexMapping, crefToSimVarHT, backendMapping) = simCode;
discreteModelVars, extObjInfo, makefileParams, delayedExps, jacobianMatrixes, simulationSettingsOpt, fileNamePrefix, _, varToArrayIndexMapping, varToIndexMapping, crefToSimVarHT, backendMapping) = simCode;

//print("Number of literals pre: " + intString(listLength(simCodeLiterals)) + "\n");

Expand Down Expand Up @@ -340,7 +339,7 @@ algorithm

SimCode.SIMCODE(modelInfo, simCodeLiterals, simCodeRecordDecls, simCodeExternalFunctionIncludes, allEquations, odeEquations, algebraicEquations, useSymbolicInitialization, useHomotopy, initialEquations, removedInitialEquations, startValueEquations, nominalValueEquations, minValueEquations, maxValueEquations,
parameterEquations, removedEquations, algorithmAndEquationAsserts, zeroCrossingsEquations, jacobianEquations, stateSets, constraints, classAttributes, zeroCrossings, relations, timeEvents, whenClauses,
discreteModelVars, extObjInfo, makefileParams, delayedExps, jacobianMatrixes, simulationSettingsOpt, fileNamePrefix, _, varToArrayIndexMapping, crefToSimVarHT, backendMapping, modelStruct) = simCode;
discreteModelVars, extObjInfo, makefileParams, delayedExps, jacobianMatrixes, simulationSettingsOpt, fileNamePrefix, _, varToArrayIndexMapping, varToIndexMapping, crefToSimVarHT, backendMapping, modelStruct) = simCode;

//(schedule,numProc) = repeatScheduleWithOtherNumProc(taskGraphSimplified,taskGraphDataSimplified,sccSimEqMapping,filenamePrefix,cpCostsWoC,schedule,numProc,numFixed);
numProc = Flags.getConfigInt(Flags.NUM_PROC);
Expand Down Expand Up @@ -368,18 +367,15 @@ algorithm

//Create Memory-Map and Sim-Code
//------------------------------
(optTmpMemoryMap,optVarToArrayIndexMapping) = HpcOmMemory.createMemoryMap(modelInfo, taskGraphOdeSimplified, BackendDAEUtil.transposeMatrix(taskGraphOdeSimplified,arrayLength(taskGraphOdeSimplified)), taskGraphDataOdeSimplified, eqs, filenamePrefix, schedulerInfo, scheduleOde, sccSimEqMapping, criticalPaths, criticalPathsWoC, criticalPathInfo, numProc, allComps);
if(Util.isSome(optVarToArrayIndexMapping)) then
SOME(varToArrayIndexMapping) = optVarToArrayIndexMapping;
//BaseHashTable.dumpHashTable(varToArrayIndexMapping);
end if;
(optTmpMemoryMap, varToArrayIndexMapping, varToIndexMapping) = HpcOmMemory.createMemoryMap(modelInfo, varToArrayIndexMapping, varToIndexMapping, taskGraphOdeSimplified, BackendDAEUtil.transposeMatrix(taskGraphOdeSimplified,arrayLength(taskGraphOdeSimplified)), taskGraphDataOdeSimplified, eqs, filenamePrefix, schedulerInfo, scheduleOde, sccSimEqMapping, criticalPaths, criticalPathsWoC, criticalPathInfo, numProc, allComps);
//BaseHashTable.dumpHashTable(varToArrayIndexMapping);

SimCodeUtil.execStat("hpcom create memory map");

hpcomData = HpcOmSimCode.HPCOMDATA(SOME(scheduleDae), SOME(scheduleOde), optTmpMemoryMap);
simCode = SimCode.SIMCODE(modelInfo, simCodeLiterals, simCodeRecordDecls, simCodeExternalFunctionIncludes, allEquations, odeEquations, algebraicEquations, useSymbolicInitialization, useHomotopy, initialEquations, removedInitialEquations, startValueEquations, nominalValueEquations, minValueEquations, maxValueEquations,
parameterEquations, removedEquations, algorithmAndEquationAsserts, zeroCrossingsEquations, jacobianEquations, stateSets, constraints, classAttributes, zeroCrossings, relations, timeEvents, whenClauses,
discreteModelVars, extObjInfo, makefileParams, delayedExps, jacobianMatrixes, simulationSettingsOpt, fileNamePrefix, hpcomData, varToArrayIndexMapping, crefToSimVarHT, backendMapping, modelStruct);
discreteModelVars, extObjInfo, makefileParams, delayedExps, jacobianMatrixes, simulationSettingsOpt, fileNamePrefix, hpcomData, varToArrayIndexMapping, varToIndexMapping, crefToSimVarHT, backendMapping, modelStruct);

//print("Number of literals post: " + intString(listLength(simCodeLiterals)) + "\n");

Expand Down
2 changes: 2 additions & 0 deletions Compiler/SimCode/SimCode.mo
Expand Up @@ -55,6 +55,7 @@ encapsulated package SimCode
public import Absyn;
public import BackendDAE;
public import DAE;
public import HashTableCrILst;
public import HashTableCrIListArray;
public import HpcOmSimCode;
public import SimCodeVar;
Expand Down Expand Up @@ -121,6 +122,7 @@ uniontype SimCode
//if the variable is not part of an array (if it is a scalar value), then the array has size 1
HashTableCrIListArray.HashTable varToArrayIndexMapping;
//*** a protected section *** not exported to SimCodeTV
HashTableCrILst.HashTable varToIndexMapping;
HashTableCrefToSimVar crefToSimVarHT "hidden from typeview - used by cref2simvar() for cref -> SIMVAR lookup available in templates.";
Option<BackendMapping> backendMapping;
//FMI 2.0 data for model structure
Expand Down

0 comments on commit 6303044

Please sign in to comment.