[root]/doc/performance/benchmarks/tests
Author | Changes | Lines of Code | Lines per Change |
---|---|---|---|
Totals | 58 (100.0%) | 105430 (100.0%) | 1817.7 |
adrpo | 32 (55.2%) | 105430 (100.0%) | 3294.6 |
perost | 26 (44.8%) | 0 (0.0%) | 0.0 |
- Moved the benchmark test models from doc/performance/benchmarks/tests to
testsuite/benchmarks.
- Added benchmark models from Marco Bonvini.
0 lines of code changed in 26 files:
- add new heuristic to Compiler/BackEnd/BackendDAEOptimize.mo
if two aliases have different start value choose the one more closer to the top of the instance hierarchy.
- add ComponentReference.crefDepth in Compiler/FrontEnd/ComponentReference.mo'
- fixed testsuite/mosfiles/nonConstantParam.mos output
- more paranoiac checks of arguments in CevalScript.buildModel function Compiler/Script/CevalScript.mo
- moved symbol table to a more sane place in output arguments of buildModel and return the simflags too
- use simflags when calling the generated system executable.
- fixed System.getUsesCardinality for bootstrapping as it should return the value because is not pass by reference.
- added comment that we should check the encoding in Util.escapeModelicaStringToXmlString, maybe
give an warning and force UTF-8 conversion.
- update models in doc/performance/benchmarks/tests/
Compiler/susan_codegen/SimCode/CodegenC.tpl
- minimize the .c file size for MetaModelica support.
- generate literals in the header not the c file
- rename all .targXX to .cXX as i have no idea from where the name "targ" comes and what it means!
".cXX" means component XX from the structure.
- got rid of spurious defines that make no sense
- got rid of some of the comments.
- use the tmpMeta array for the inputs/outputs in match(continue) expressions.
4 lines of code changed in 2 files:
- add scripts to test each CircuitLX.
- shuffled a bit the models in BigModel.mo
67 lines of code changed in 10 files:
- big model for tests from Peter Aronsson @ MathCore.
40 lines of code changed in 2 files:
- made them work in previous versions of OpenModelica.
4 lines of code changed in 2 files:
HUGE update to SVN with *a lot* of changes: DO MAKE CLEAN!
==========================================================
- The DAE.ExpType is *no more*
- The BackendDAE.Type is *no more*
Both got replaced by DAE.Type!
- The DAE.ExpVar is *no more*
It got replaced by DAE.Var!
Now we have *ONLY ONE* type in the compiler: DAE.Type!
Just to know why I got this done:
BEFORE, the model HumMod took 6m51 seconds to instantiate
adrpo@ida-liu050 ~/dev/OpenModelica/doc/performance/benchmarks/tests
$ time /c/OpenModelica1.8.0-r10584/bin/omc instHumMod.mos > trace.txt 2>&1
real 6m51.354s
user 0m0.000s
sys 0m0.015s
AFTER, the model HumMod takes 47 seconds to instantiate
adrpo@ida-liu050 ~/dev/OpenModelica/doc/performance/benchmarks/tests
$ time ../../../../build/bin/omc instHumMod.mos > mytrace.txt 2>&1
real 0m47.248s
user 0m0.000s
sys 0m0.000s
Is about 8,74468085106383 times faster now.
Basically, before, we were doing DAE.T_*
-> DAE.ET_* translation for 6 minutes!
I started this work on Friday after the OpenModelica 1.8.0
got released, so for 4+ days of work I think the result is
quite OK.
Crash course into the new types (actually old ones from DAE.Type):
==================================================================
1. DAE.Type is not a tuple anymore, instead the optional path
became DAE.TypeSource which is a list of paths and is now
part of *all* the records in DAE.Type.
The needed types from DAE.ExpType got merged into DAE.Type:
DAE.ET_METATYPE -> DAE.T_METATYPE
DAE.ET_FUNCTION_REFERENCE_VAR -> DAE.T_FUNCTION_REFERENCE_VAR
DAE.ET_FUNCTION_REFERENCE_FUNC -> DAE.T_FUNCTION_REFERENCE_FUNC
Some DAE.Type types got split:
DAE.T_COMPLEX split into DAE.T_COMPLEX for types not extending
basic types and DAE.T_SUBTYPE_BASIC is now used for types
extending basic types.
Some DAE.Type types changed name:
DAE.T_NOTYPE -> DAE.T_UNKNOWN
Renamed also the meta-types a bit to make them more homogeneous.
Some DAE.ExpType are gone:
DAE.ET_OTHER is gone, use DAE.T_UNKNOWN instead!
Some DAE.Type types changed structure (besides the DAE.TypeSource addition):
(DAE.T_ARRAY(dim, ty), optPath) -> DAE.T_ARRAY(ty, list<dim>, list<Path>)
so we now have similar structure for DAE.T_ARRAY and the previous DAE.ET_ARRAY.
2. In cases, when matching:
Instead of | Use now:
-------------------------------------------------------
DAE.ET_INT() | DAE.T_INTEGER(source = _)
DAE.ET_REAL() | DAE.T_REAL(source = _)
DAE.ET_BOOL() | DAE.T_BOOL(source = _)
DAE.ET_STRING() | DAE.T_STRING(source = _)
DAE.ET_ENUMERATION(...) | DAE.T_ENUMERATION(...)
DAE.ET_COMPLEX(...) | DAE.T_COMPLEX(...)
DAE.ET_OTHER(...) | DAE.T_UNKNOWN(source = _)
DAE.ET_ARRAY(...) | DAE.T_ARRAY(...)
-------------------------------------------------------
3. When constructing values, in the then part or in right
hand side in equations:
Instead of | Use now:
-------------------------------------------------------
DAE.ET_INT() | DAE.T_INTEGER_DEFAULT
DAE.ET_REAL() | DAE.T_REAL_DEFAULT
DAE.ET_BOOL() | DAE.T_BOOL_DEFAULT
DAE.ET_STRING() | DAE.T_STRING_DEFAULT
DAE.ET_ENUMERATION(...) | DAE.T_ENUMERATION(...)
DAE.ET_COMPLEX(...) | DAE.T_COMPLEX(...)
DAE.ET_OTHER(...) | DAE.T_UNKNOWN(source = _)
DAE.ET_ARRAY(...) | DAE.T_ARRAY(...)
-------------------------------------------------------
4. Types.elabType got renamed to Types.simplifyType
and does some type simplification (instead of the
previous DAE.T_* -> DAE.ET_* translation).
Feel free to ask me anything if something is unclear.
The code can be further improved (we need better handling
of DAE.T_ARRAY that has several dimensions instead of one)
by getting rid of Types.simplifyType/Types.expTypetoTypesType,
but for now is good enough. Also, functionality for the old
DAE.ET_* handling from Expression*.mo can be merged with the
DAE.T_ handling from Types so we can get rid of duplicate
code too.
52655 lines of code changed in 1 file:
- added Dymola style scripts for testing.
0 lines of code changed in 4 files:
- performance benchmarks.
52660 lines of code changed in 11 files: