generators issueshttps://git.rwth-aachen.de/groups/monticore/EmbeddedMontiArc/generators/-/issues2019-03-28T18:05:51+01:00https://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/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/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/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/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/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/EMAM2Middleware/-/issues/20Automatic Clustering parameter search2019-02-16T13:47:12+01:00Alexander David HellwigAutomatic Clustering parameter searchE.g. try different values for sigma while using SpectralClusteringE.g. try different values for sigma while using SpectralClusteringhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/18Test flatten algorithm with a comparable Component2019-02-16T14:08:23+01:00Philipp GörickTest flatten algorithm with a comparable ComponentDo not just test the algorithm for the right amount of connectors and subcomponents.Do not just test the algorithm for the right amount of connectors and subcomponents.Philipp GörickPhilipp Görickhttps://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/CNNArch2Gluon/-/issues/1Move to Gluon backend2019-01-29T15:36:24+01:00Evgeny KusmenkoMove to Gluon backendSebastian NickelsNicola GattoSebastian Nickelshttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/17Flatten: only for a given number of subcomponent levels2019-01-17T12:26:51+01:00Alexander David HellwigFlatten: only for a given number of subcomponent levelsIdea: add new method with additional parameter: int level
Add to check for atomic component: level == 0Idea: add new method with additional parameter: int level
Add to check for atomic component: level == 0Philipp GörickPhilipp Görickhttps://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/14Simple name while resolving Port2019-01-10T14:43:34+01:00Alexander David HellwigSimple name while resolving PortPhilipp GörickPhilipp Görickhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/13Visualisierung2019-02-16T13:58:48+01:00Alexander David HellwigVisualisierungVisualisierung der ClusterVisualisierung der Clusterhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/CNNArch2Caffe2/-/issues/4icube problem2019-02-07T16:34:15+01:00Evgeny Kusmenkoicube problemwho changed cube to icube?
why?
can we roll it back?
is there another solution?who changed cube to icube?
why?
can we roll it back?
is there another solution?Carlos Alfredo Yeverino RodriguezCarlos Alfredo Yeverino Rodriguez2019-02-02https://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAMOpt2Cpp/-/issues/1Bug in addModuleDependency when second argument of CMakeFindModule is set to...2019-01-24T11:16:48+01:00Carlos Alfredo Yeverino RodriguezBug in addModuleDependency when second argument of CMakeFindModule is set to falseEMAMOpt2Cpp should be updated so it can get the bug fix from EMAM2Cpp in order to avoid situations like *find_package(CUDA OPTIONAL)* when the second argument of CMakeFindModule is set to false which leads to a cmake error. When it is fa...EMAMOpt2Cpp should be updated so it can get the bug fix from EMAM2Cpp in order to avoid situations like *find_package(CUDA OPTIONAL)* when the second argument of CMakeFindModule is set to false which leads to a cmake error. When it is false nothing should be added, i.e. *find_package(CUDA )*. This has been already fixed in EMAM2Cpp version `0.1.2-SNAPSHOT`, however, more dependencies have to be modified to update EMAMOpt2Cpp correctly.Alexander David HellwigAlexander David Hellwighttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/27Build FAILED because of Tests2018-12-27T13:49:59+01:00Carlos Alfredo Yeverino RodriguezBuild FAILED because of TestsI tried to "install" EMAM2Cpp but I got the following errors:
Results :
Tests in error:
TestsGenTest.testMySuperAwesomeComponent1:54 » ResolvedSeveralEntries 0xA4095 ...
GenerateCMakeTest.floatDivisionTest:127 » ResolvedSeveralEnt...I tried to "install" EMAM2Cpp but I got the following errors:
Results :
Tests in error:
TestsGenTest.testMySuperAwesomeComponent1:54 » ResolvedSeveralEntries 0xA4095 ...
GenerateCMakeTest.floatDivisionTest:127 » ResolvedSeveralEntries 0xA4095 Found...
GenerateCMakeTest.testCMakeStreamTestGenerationForBasicPortsMath:91 » ResolvedSeveralEntries
AutomaticStreamTestGenerationTest.testCLIExample:230->testGenCPPFilesAndExec:293 » IndexOutOfBounds
Tests run: 194, Failures: 0, Errors: 4, Skipped: 13
I installed first EmbeddedMontiArcMath and MontiMath before installing EMAM2Cpp.Alexander David HellwigAlexander David Hellwighttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/8Lab: Image based Calculator2020-10-29T16:21:37+01:00Evgeny KusmenkoLab: Image based CalculatorTo evaluate #7 the goal is to design a small EMADL model featuring several DL components as well as some math components. The input of this model are 3 MNIST pictures and 2 CIFAR10 pictures.
Each input picture is translated to its respe...To evaluate #7 the goal is to design a small EMADL model featuring several DL components as well as some math components. The input of this model are 3 MNIST pictures and 2 CIFAR10 pictures.
Each input picture is translated to its respective class number. These numbers are then fed forward to a math component which would compute a polynomial of the form y=a1*x1+a_21*x2^2 + a3, where the a's are coefficients given by the MNIST images and the x's are the variables provide by the cifar10 classes.
Please evaluate the individual test error for each component as well as the whole systems test error. Which loss function is suitable for this problem?Christopher Jan-Steffen BrixChristopher Jan-Steffen Brix2019-01-23https://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/EMADL2CPP/-/issues/6Fully automated compilation procedure2018-12-17T14:41:09+01:00Evgeny KusmenkoFully automated compilation proceduretraining should be done automatically. the user should need just one call to get the whole system compiled. Very important: if neither the network nor the data have the training should be skipped, i.e. the generator should detect whether...training should be done automatically. the user should need just one call to get the whole system compiled. Very important: if neither the network nor the data have the training should be skipped, i.e. the generator should detect whether training is required or not.
training data is to be fetched from a default location. Unless specified otherwise.
I don't like the idea of putting the path into the training file (as it would require to change this file whenever the location is changed). on the other hand, using a CLI parameter is not very user friendly. What do you think?Carlos Alfredo Yeverino RodriguezCarlos Alfredo Yeverino Rodriguez