Skip to content

Commit

Permalink
- fixed generated code for level scheduling
Browse files Browse the repository at this point in the history
- cpp-codegeneration with enabled hpcom-flag is working again

git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@19664 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
Marcus Walther committed Mar 21, 2014
1 parent ee1a077 commit 5dfb5d0
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 48 deletions.
60 changes: 13 additions & 47 deletions Compiler/Template/CodegenC.tpl
Expand Up @@ -2311,7 +2311,7 @@ end functionXXX_system_HPCOM;

template functionXXX_system0_HPCOM_Level(list<SimEqSystem> derivativEquations, String name, list<Task> tasksOfLevel, String iType, String modelNamePrefixStr)
::=
let odeEqs = tasksOfLevel |> task => function_HPCOM_Task(derivativEquations,name,task,iType,modelNamePrefixStr); separator="\n"
let odeEqs = tasksOfLevel |> task => functionXXX_system0_HPCOM_Level0(derivativEquations,name,task,iType,modelNamePrefixStr); separator="\n"
<<
if (omp_get_dynamic())
omp_set_dynamic(0);
Expand All @@ -2322,6 +2322,16 @@ template functionXXX_system0_HPCOM_Level(list<SimEqSystem> derivativEquations, S
>>
end functionXXX_system0_HPCOM_Level;

template functionXXX_system0_HPCOM_Level0(list<SimEqSystem> derivativEquations, String name, Task iTask, String iType, String modelNamePrefixStr)
::=
<<
#pragma omp section
{
<%function_HPCOM_Task(derivativEquations,name,iTask,iType,modelNamePrefixStr)%>
}
>>
end functionXXX_system0_HPCOM_Level0;

template functionXXX_system0_HPCOM_Thread(list<SimEqSystem> derivativEquations, String name, list<list<Task>> threadTasks, String iType, String modelNamePrefixStr)
::=
let odeEqs = threadTasks |> tt => functionXXX_system0_HPCOM_Thread0(derivativEquations,name,tt,iType,modelNamePrefixStr); separator="\n"
Expand Down Expand Up @@ -2552,54 +2562,10 @@ else
// SIM_PROF_ACC_EQEXT(<%ix%>);
//#endif
//>>
end equationNamesHPCOM_Thread_;

template equationNamesHPCOM_(Integer idx, list<SimEqSystem> derivativEquations, Context context, String modelNamePrefixStr)
"Generates an equation.
This template should not be used for a SES_RESIDUAL.
Residual equations are handled differently."
::=
match context
case SIMULATION_CONTEXT(genDiscrete=true) then
match getSimCodeEqByIndex(derivativEquations, idx)
case e as SES_ALGORITHM(statements={})
then ""
else
let ix = equationIndex(getSimCodeEqByIndex(derivativEquations, idx))
<<
#pragma omp section
{
#ifdef _OMC_MEASURE_TIME
SIM_PROF_TICK_EQEXT(<%ix%>);
#endif
<%symbolName(modelNamePrefixStr,"eqFunction")%>_<%ix%>(data);
#ifdef _OMC_MEASURE_TIME
SIM_PROF_ACC_EQEXT(<%ix%>);
#endif
}
>>
else
match getSimCodeEqByIndex(derivativEquations, idx)
case e as SES_ALGORITHM(statements={})
then ""
else
let ix = equationIndex(getSimCodeEqByIndex(derivativEquations, idx))
<<
#pragma omp section
{
#ifdef _OMC_MEASURE_TIME
SIM_PROF_TICK_EQEXT(<%ix%>);
#endif
<%symbolName(modelNamePrefixStr,"eqFunction")%>_<%ix%>(data);
#ifdef _OMC_MEASURE_TIME
SIM_PROF_ACC_EQEXT(<%ix%>);
#endif
}
>>
end equationNamesHPCOM_;
end equationNamesHPCOM_Thread_;

//----------------------------------
// End: Modified functions for HpcOm
// End: Modified functions for HpcOm
//----------------------------------

template functionXXX_system(list<SimEqSystem> derivativEquations, String name, Integer n, String modelNamePrefixStr)
Expand Down
14 changes: 13 additions & 1 deletion Compiler/Template/CodegenCppHpcom.tpl
Expand Up @@ -30,6 +30,8 @@ template translateModel(SimCode simCode) ::=
let()= textFile(simulationInitCppFile(simCode),'OMCpp<%fileNamePrefix%>Initialize.cpp')
let()= textFile(simulationJacobianHeaderFile(simCode), 'OMCpp<%fileNamePrefix%>Jacobian.h')
let()= textFile(simulationJacobianCppFile(simCode),'OMCpp<%fileNamePrefix%>Jacobian.cpp')
let()= textFile(simulationStateSelectionCppFile(simCode), 'OMCpp<%fileNamePrefix%>StateSelection.cpp')
let()= textFile(simulationStateSelectionHeaderFile(simCode),'OMCpp<%fileNamePrefix%>StateSelection.h')
let()= textFile(simulationExtensionHeaderFile(simCode),'OMCpp<%fileNamePrefix%>Extension.h')
let()= textFile(simulationExtensionCppFile(simCode),'OMCpp<%fileNamePrefix%>Extension.cpp')
let()= textFile(simulationWriteOutputHeaderFile(simCode),'OMCpp<%fileNamePrefix%>WriteOutput.h')
Expand Down Expand Up @@ -438,7 +440,7 @@ end update2;
template functionXXX_system0_HPCOM_Level(list<SimEqSystem> allEquationsPlusWhen, list<Task> tasksOfLevel, String iType, Text &varDecls, SimCode simCode)
::=
let odeEqs = tasksOfLevel |> task => function_HPCOM_Task(allEquationsPlusWhen,task,iType, &varDecls, simCode); separator="\n"
let odeEqs = tasksOfLevel |> task => functionXXX_system0_HPCOM_Level0(allEquationsPlusWhen,task,iType, &varDecls, simCode); separator="\n"
<<
if (omp_get_dynamic())
omp_set_dynamic(0);
Expand All @@ -449,6 +451,16 @@ template functionXXX_system0_HPCOM_Level(list<SimEqSystem> allEquationsPlusWhen,
>>
end functionXXX_system0_HPCOM_Level;
template functionXXX_system0_HPCOM_Level0(list<SimEqSystem> allEquationsPlusWhen, Task iTask, String iType, Text &varDecls, SimCode simCode)
::=
<<
#pragma omp section
{
<%function_HPCOM_Task(allEquationsPlusWhen,iTask,iType, &varDecls, simCode)%>
}
>>
end functionXXX_system0_HPCOM_Level0;
template functionXXX_system0_HPCOM_TaskDep(list<tuple<Task,list<Integer>>> tasks, list<SimEqSystem> allEquationsPlusWhen, String iType, Text &varDecls, SimCode simCode)
::=
let odeEqs = tasks |> t => functionXXX_system0_HPCOM_TaskDep0(t,allEquationsPlusWhen, iType, &varDecls, simCode); separator="\n"
Expand Down

0 comments on commit 5dfb5d0

Please sign in to comment.