generators issueshttps://git.rwth-aachen.de/groups/monticore/EmbeddedMontiArc/generators/-/issues2020-10-29T16:21:37+01:00https://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 Rodriguezhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/12New EMA Version2019-01-21T13:33:28+01:00Alexander David HellwigNew EMA VersionAlso check other projectsAlso check other projectsAlexander David HellwigAlexander David Hellwighttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/11Add 1 new Clustering Algorithm2019-01-06T13:15:12+01:00Alexander David HellwigAdd 1 new Clustering AlgorithmDinh-An HoMichael Günther BeyerDinh-An Hohttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/10Compare results of different clustering algorithms2019-02-04T14:18:47+01:00Alexander David HellwigCompare results of different clustering algorithmsUse Heuristic and sum all costs as resultUse Heuristic and sum all costs as resulthttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/9Add CLI option to DistributedGeneratorCLI for clustering and middleware tag g...2019-02-16T13:59:16+01:00Alexander David HellwigAdd CLI option to DistributedGeneratorCLI for clustering and middleware tag generationhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/8Create heuristic for middleware communication costs2019-01-17T12:24:39+01:00Alexander David HellwigCreate heuristic for middleware communication costse.g. Q = 2, Z = 1, Q^{3,3} = 9e.g. Q = 2, Z = 1, Q^{3,3} = 9Philipp GörickPhilipp Görickhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/7Add common interface for all clustering approches and add wrappers2018-11-14T14:57:38+01:00Alexander David HellwigAdd common interface for all clustering approches and add wrapperse.g. input double[][] and output int[] for labels, where label[i] is the cluster of the i-th componente.g. input double[][] and output int[] for labels, where label[i] is the cluster of the i-th componenthttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/5add translateToICube method2019-07-09T16:52:43+02:00Evgeny Kusmenkoadd translateToICube method- to generate ICubes for Z- to generate ICubes for ZSebastian NickelsSebastian Nickelshttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/6Middleware Tags -> .tag file generator (RosConnectionTags) + testcases2018-11-07T17:16:42+01:00Alexander David HellwigMiddleware Tags -> .tag file generator (RosConnectionTags) + testcaseshttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/5Create function cluster -> Middleware tags(here ROS, keep generic) + testcases2018-11-07T17:18:37+01:00Alexander David HellwigCreate function cluster -> Middleware tags(here ROS, keep generic) + testcaseshttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/4Add smile lib and create spectral clustering testcase2018-11-07T17:19:12+01:00Alexander David HellwigAdd smile lib and create spectral clustering testcasehttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/3Symbol Table -> Adjacency Matrix2018-11-07T17:22:12+01:00Alexander David HellwigSymbol Table -> Adjacency MatrixAllAllhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/26Invalid MontiMath functions do not throw an error2022-04-28T12:57:50+02:00Alexander David HellwigInvalid MontiMath functions do not throw an errore.g. `out1 = ... + rand()` generates, but cannot be compiled(as rand is not specific)e.g. `out1 = ... + rand()` generates, but cannot be compiled(as rand is not specific)Jan Philipp HallerJan Philipp Hallerhttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/2CMake generated from Cpp generator does not find Armadillo in installed in Ar...2018-10-25T12:09:13+02:00Alexander David HellwigCMake generated from Cpp generator does not find Armadillo in installed in Armadillo_HOMEAlexander David HellwigAlexander David Hellwighttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Middleware/-/issues/1Linux: Linked Armadillo does not work2018-10-25T12:09:27+02:00Alexander David HellwigLinux: Linked Armadillo does not workReplace with copied build installReplace with copied build installAlexander David HellwigAlexander David Hellwighttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMADL2CPP/-/issues/4Windows runner fails because of a newline issue2018-10-28T10:23:07+01:00Svetlana PavlitskayaWindows runner fails because of a newline issueTrace log excerpt:
`extraneous input '\r\n' expecting {'component', 'port', 'ports', 'instance', 'connect', 'autoconnect', 'autoinstantiate', 'implementation', '}'}`Trace log excerpt:
`extraneous input '\r\n' expecting {'component', 'port', 'ports', 'instance', 'connect', 'autoconnect', 'autoinstantiate', 'implementation', '}'}`Svetlana PavlitskayaSvetlana Pavlitskayahttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/25StreamTest matrix ports input value setting2018-08-16T17:39:48+02:00Sascha Niklas SchneidersStreamTest matrix ports input value settingThe "component.${portName} = ..." part was not generated correctly for matrices used in models like detection.ObjectDetector1The "component.${portName} = ..." part was not generated correctly for matrices used in models like detection.ObjectDetector1Sascha Niklas SchneidersSascha Niklas Schneidershttps://git.rwth-aachen.de/monticore/EmbeddedMontiArc/generators/EMAM2Cpp/-/issues/24StreamTest Matrix output generation check not working properly2018-08-16T17:39:40+02:00Sascha Niklas SchneidersStreamTest Matrix output generation check not working properlyThe "REQUIRE(..)" part was not generated correctly for matrices used in models like detection.ObjectDetector1The "REQUIRE(..)" part was not generated correctly for matrices used in models like detection.ObjectDetector1Sascha Niklas SchneidersSascha Niklas Schneiders