generators issueshttps://git.rwth-aachen.de/groups/monticore/EmbeddedMontiArc/generators/-/issues2019-05-24T13:42:35+02:00https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2mqtt/-/issues/3Install MQTT(Linux)2019-05-24T13:42:35+02:00Alexander David HellwigInstall MQTT(Linux)Install MQTT on a Linux System(e.g. Ubuntu 16.04) and add documentation to README.md(or link to existing)Install MQTT on a Linux System(e.g. Ubuntu 16.04) and add documentation to README.md(or link to existing)Georg VinogradovGeorg Vinogradovhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2mqtt/-/issues/2Add basic CI2019-05-24T13:42:30+02:00Alexander David HellwigAdd basic CIReference https://docs.gitlab.com/ee/ci/quick_start/ Compare with https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/.gitlab-ci.ymlReference https://docs.gitlab.com/ee/ci/quick_start/ Compare with https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/.gitlab-ci.ymlGeorg VinogradovGeorg Vinogradovhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/emam2mqtt/-/issues/1Add basic Maven project structure2019-05-24T13:42:24+02:00Alexander David HellwigAdd basic Maven project structureReference https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html Compare to https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/pom.xmlReference https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html Compare to https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2RosCpp/blob/master/pom.xmlGeorg VinogradovGeorg Vinogradovhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/30Execute with logging: Name collision2019-05-23T16:10:24+02:00Alexander David HellwigExecute with logging: Name collisionfunction arma::log(as in logarithm) has a name collision with log(as in write to log)function arma::log(as in logarithm) has a name collision with log(as in write to log)Alexander David HellwigAlexander David Hellwighttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/32Autotraining EMADL2CPP2019-05-15T11:33:43+02:00Nicola GattoAutotraining EMADL2CPPThe new version of EMADL2CPP supports the option to start the training of a CNN component automatically. For each CNN component, the training outputs two files: the symbol.json and the parameter file of the neural network. In order to us...The new version of EMADL2CPP supports the option to start the training of a CNN component automatically. For each CNN component, the training outputs two files: the symbol.json and the parameter file of the neural network. In order to use the autotraining function of EMADL2CPP in EMAM2Middleware generator, a cli option is needed to activate it. Furthermore, the compiled executable expects the two output files to be at the relative path "model/name.of.cnnarch.component/". This means, the generated compile.sh should ensure that these files are moved to the correct place.Evgeny KusmenkoEvgeny Kusmenkohttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/21ROS2: Message -> C++ generation2019-05-05T11:16:17+02:00Alexander David HellwigROS2: Message -> C++ generation.h files generated from .msg files can lead to compilation errors..h files generated from .msg files can lead to compilation errors.Alexander David HellwigAlexander David Hellwighttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/28Add automatic test execution for cmake build script2019-04-11T18:49:39+02:00Alexander David HellwigAdd automatic test execution for cmake build scriptBasic idea:
Add to CMakeLists.txt
add_custom_target(run_${component.name}_StreamTests ALL
COMMAND ${component.name}_StreamTests
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)Basic idea:
Add to CMakeLists.txt
add_custom_target(run_${component.name}_StreamTests ALL
COMMAND ${component.name}_StreamTests
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)Alexander David HellwigAlexander David Hellwighttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/31Split clustering code into own project2019-04-10T09:42:00+02:00Alexander David HellwigSplit clustering code into own projectAlexander David HellwigAlexander David Hellwighttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/30MonteCarlo plot starts at 0 instead of 12019-04-01T15:06:51+02:00Alexander David HellwigMonteCarlo plot starts at 0 instead of 1https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/29Use Silhouette index2019-03-28T18:06:02+01:00Alexander David HellwigUse Silhouette indexwith all number of clusters?with all number of clusters?Alexander David HellwigAlexander David Hellwig2019-03-14https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/26Eval: Why do we use the cluster numbers we use(min, max, same as auto?)2019-03-28T18:05:51+01:00Alexander David HellwigEval: Why do we use the cluster numbers we use(min, max, same as auto?)2019-03-14https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/15Vergleich der Clustering Algos mit zufälligem Clustering(Monte Carlo)2019-03-12T20:34:42+01:00Alexander David HellwigVergleich der Clustering Algos mit zufälligem Clustering(Monte Carlo)Dinh-An HoDinh-An Ho2019-03-14https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/28Spectral: Test on Diagonal Block matrix2019-03-12T12:31:29+01:00Alexander David HellwigSpectral: Test on Diagonal Block matrix```
0 1 ...
1 0 ...
... 0 1
... 1 0
``````
0 1 ...
1 0 ...
... 0 1
... 1 0
```Alexander David HellwigAlexander David Hellwighttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/27Use ROS values for Cost Heuristic2019-03-11T15:12:55+01:00Alexander David HellwigUse ROS values for Cost Heuristichttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/24Different values of heuristic for same (max) number of clusters2019-03-11T14:58:36+01:00Alexander David HellwigDifferent values of heuristic for same (max) number of clustersAlexander David HellwigAlexander David Hellwighttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/7Lab: DL Toolchain Automation2019-03-08T17:25:36+01:00Evgeny KusmenkoLab: DL Toolchain AutomationThe aim of this ticket is to make the EMADL2CPP compilation toolchain as user friendly and intuitive as possible.
**Current state:** EMADL2CPP is a code generator / compiler written to enable the compilation and training of EmbeddedMon...The aim of this ticket is to make the EMADL2CPP compilation toolchain as user friendly and intuitive as possible.
**Current state:** EMADL2CPP is a code generator / compiler written to enable the compilation and training of EmbeddedMontiArc models featuring Deep Learning based components, i.e. those having a CNNArch implementation. However, instead of doing the actual code generation itself, EMADL2CPP delegates the actual generation to the respective sub-generators: EMAM2CPP for architecture generation as well as MontiMath code generation and CNNArch2X for deep learning components (thereby X=MXNet or Caffe2). Thereby, the code is generated and the user has to make sure that the database containing the training and test data is put into the right location in the target directory structure, then train the network and compile the result to an executable file "manually".
**Goal:** Rework the EMADL2CPP compiler such that based on a given *configuration* it generates code , trains *all* the networks present in the EmbeddedMontiArc model, compiles the result to an executable in one shot (only one call allowed!).
Therefore, an additional configuration file is needed to set up the data paths for training for each DL component as well as some meta data concerning the database. A line of the configuration file might look like this (and we need a line per DL component):
`de.some.package.MyParentComponent.dlComponentToTrainInstanceName /path/to/data LMDB`
Thereby, the first argument is a fully qualified descriptor of the instance to be trained. The name of the instance is `dlComponentToTrainInstanceName`, it is instantiated in the component `MyParentComponent` residing in the package `de.some.package`.
The semantics of the line is to look up an LMDB database containing training and test data respectively in `/path/to/data`. Hence, EMADL2CPP should ask the backend compiler if it currently supports this kind of data base. If an unsopprted database type is required, an error needs to be thrown.
On the other hand, you do not want to retrain all the networks inside your model each time you change and regenerate a MontiMath component. Hence, you need to check whether training is necessary. Therfore, you might want to store an additional file containing the hash value of the data used for training in the target directory of each DL component. If neither the hash value of the training database nor the CNNArch component implementation has changed, a re-training can be omitted.
Of course, there might be scenarios where you want to force re-training and there are also scenario's where you want to omit checking the hash value as it might take a while for big databases. Therefore, please introduce two new CLI parameters for EMADL2CPP: `no-training` and `force-training`.
There is one more pitfall: sometimes you want to have several instances of the very same component, i.e. you want to allow for *weight sharing*. It should, hence, be possible to have several instances of the same DL component to share weights. On epossible solution would be to check, whether several instances mentionned in the configuration file have the same component type AND the same training data. Then the weights should be shared. As an additional alternative it makes sense to allow one to configure a component type with a database instead of a concrete instance. Then all instances of this type should share the same weight (with exceptions of concretely mentionned instances)
Feel free to ask questions, suggest improvements, and discuss new ideas.Christopher Jan-Steffen BrixChristopher Jan-Steffen Brix2019-01-31https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/23Independent subsystems in a Component do not work with standard clustering al...2019-03-04T20:43:19+01:00Alexander David HellwigIndependent subsystems in a Component do not work with standard clustering algorithmsConsider the component:
```ema
component A{
[...]
connect in1 -> sub1.subIn;
connect in2 -> sub2.subIn;
connect sub1.subOut -> out1;
connect sub2.subOut -> out2;
//No connections between sub1 and sub2
}
```
The resul...Consider the component:
```ema
component A{
[...]
connect in1 -> sub1.subIn;
connect in2 -> sub2.subIn;
connect sub1.subOut -> out1;
connect sub2.subOut -> out2;
//No connections between sub1 and sub2
}
```
The resulting graph has 2 unconnected vertices. Therefore the clustering algorithms can not create clusters.
This problem prevails even if the unconnected subsystems get bigger.https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/22Armadillo.h contains mingw specific imports2019-03-01T20:52:34+01:00Alexander David HellwigArmadillo.h contains mingw specific importsAlexander David HellwigAlexander David Hellwighttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/CNNArch2Gluon/-/issues/2Refactorings required2019-02-25T17:52:25+01:00Evgeny KusmenkoRefactorings requiredPlease make sure most of the code is inherited from the MxNet generator. For instance in the generator class.Please make sure most of the code is inherited from the MxNet generator. For instance in the generator class.Sebastian NickelsNicola GattoSebastian Nickelshttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/9Internal State may prevent multiple sequential executions2019-02-24T20:50:07+01:00Christopher Jan-Steffen BrixInternal State may prevent multiple sequential executionsThere seems to be some internal state which is stored across multiple executions of the `main` in the `EMADLGeneratorCli`.
This causes the following effect: Usually, the unit test `testMultipleInstances` passes without problems. However...There seems to be some internal state which is stored across multiple executions of the `main` in the `EMADLGeneratorCli`.
This causes the following effect: Usually, the unit test `testMultipleInstances` passes without problems. However, adding a [certain new test](https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/blob/oneclick_nn_training/src/test/java/de/monticore/lang/monticar/emadl/GenerationTest.java#L205) (which passes) causes it to fail. It now throws a NullPointerException.Evgeny KusmenkoEvgeny Kusmenko