Changes between Initial Version and Version 1 of Ticket #3418


Ignore:
Timestamp:
2015-08-26T06:53:12Z (9 years ago)
Author:
Rüdiger Franke
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #3418

    • Property Cc Niklas Worschech Marcus Walther added
    • Property Summary Handle static arrays with more than one dimension (matrices)Bad performance of Spice3BenchmarkFourBitBinaryAdder dominating MSL 3.2.1 tests
  • Ticket #3418 – Description

    initial v1  
    1 It seems that in some cases such as:
    2 Modelica.Electrical.Spice3.Examples.Spice3BenchmarkFourBitBinaryAdder
    3 we do not detect that we have static arrays with several dimensions
    4 and we generate code to build them one row at a time during runtime.
    5 This was detected for C++ runtime but I guess is the same for the C runtime.
     1The one model `Modelica.Electrical.Spice3.Examples.Spice3BenchmarkFourBitBinaryAdder` dominates the time needed for testing MSL3.2.1 without producing good results.
     2
     3The C runtime takes 6m40s to simulate that model. Afterwards the verification of 46/47 signals fails. Looking at the results, it appears possible that the C runtime doesn't appropriately adapt to the extreme short `experiment(StopTime=1e-006, Interval=1e-009)`.
     4
     5The C++ code generation takes 4m3s in the Templates phase (opposed to 20s for C code generation). C++ generates code for 171 algebraic loops (two code files for each of them). Many of the loops have a dimension of 1. See:
     6{{{
     7$ grep _dimAEq OMCpp*FourBit*Algloop*.cpp
     8}}}
     9Many of those are linear (checked Algloop 825, 920, 938, ...).
     10
     11Shouldn't linear algebraic loops of dimension 1 be treated more efficiently?