Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "Google Summer of Code 2019 Ideas"
(Added extensions w.r.t APP4MC) |
|||
Line 34: | Line 34: | ||
Possible mentors: [mailto:somebody@somplace.com Somebody Mentor] | Possible mentors: [mailto:somebody@somplace.com Somebody Mentor] | ||
+ | |||
+ | = [https://www.eclipse.org/app4mc/ Eclipse APP4MC] = | ||
+ | |||
+ | Eclipse APP4MC is a platform for engineering embedded multi- and many-core software systems. The platform enables the creation and management of complex tool chains including simulation and validation. As an open platform, proven in the automotive sector by Bosch and their partners, it supports interoperability and extensibility and unifies data exchange in cross-organizational projects. APP4MC is one of the results of the ITEA3 [https://itea3.org/project/amalthea.html Amalthea] and [https://itea3.org/project/amalthea4public.html Amalthea4Public] research projects. | ||
+ | |||
+ | == What is APP4MC? == | ||
+ | |||
+ | [https://www.youtube.com/watch?v=dPDuy2lXJHc Click here] to get a quick overview of how APP4MC and Capra can help you manage timing, scheduling and traceability in a multi-core environment. | ||
+ | |||
+ | == Topics and how to apply == | ||
+ | |||
+ | If you are interested in one of the topics, please... | ||
+ | |||
+ | * Download and extract [https://www.eclipse.org/app4mc/downloads/ APP4MC] | ||
+ | * Open the Tools-Examples (File -> New -> Example -> APP4MC Tools Examples -> Java Example) | ||
+ | * Modify the file LoadModifySaveExample.java so it will output some information about the model, e.g. the number and name of tasks | ||
+ | * Create a GitHub account (in case you don't yet have one) and upload your results | ||
+ | * Contact us via the [https://accounts.eclipse.org/mailing-list/app4mc-dev APP4MC mailing list]. Don't forget to attach the Link to your GitHub repository. | ||
+ | |||
+ | If you have any questions, feel free to ask them on to the [https://accounts.eclipse.org/mailing-list/app4mc-dev APP4MC mailing list]. | ||
+ | |||
+ | === Topic 1: Code-Generator for Raspberry Pi === | ||
+ | |||
+ | Eclipse APP4MC integrates the Amalthea System Model that allows, among others, to describe the structure of software. In order to verify the timing behavior of software, your task is to generate code out of models that is compileable and executable on e.g. a Raspberry Pi. | ||
+ | |||
+ | ('''Skills required:''' Java, C/C++ beneficial) | ||
+ | |||
+ | Specific work that this could involve includes: | ||
+ | |||
+ | * create a C or C++ file based on the content of an AMALTHEA model | ||
+ | * generate C-functions out of tasks and runnables | ||
+ | * annotate these with waiting methods that delay execution according to their execution time | ||
+ | * implement inter-task communication | ||
+ | |||
+ | In case you have no access to a Raspberry Pi, we can provide you with SSH-Access to one located in our facilities. | ||
+ | |||
+ | '''Example:''' | ||
+ | |||
+ | Let us assume we have a model with one Task t1 and two Runnables r1 and r2. If Runnables r1 and r2 are executed as part of task t1, the generated C-Code could look similar to the following listing: | ||
+ | |||
+ | <span style="color:#004a43; ">#</span><span style="color:#004a43; ">include </span><span style="color:#800000; "><</span><span style="color:#40015a; ">stdio.h</span><span style="color:#800000; ">></span> | ||
+ | <span style="color:#800000; font-weight:bold; ">void</span> r1<span style="color:#808030; ">(</span><span style="color:#808030; ">)</span> <span style="color:#800080; ">{</span> | ||
+ | <span style="color:#603000; ">printf</span><span style="color:#808030; ">(</span><span style="color:#800000; ">"</span><span style="color:#0000e6; ">Executing r1</span><span style="color:#0f69ff; ">\n</span><span style="color:#800000; ">"</span><span style="color:#808030; ">)</span><span style="color:#800080; ">;</span> | ||
+ | <span style="color:#800080; ">}</span> | ||
+ | <span style="color:#800000; font-weight:bold; ">void</span> r2<span style="color:#808030; ">(</span><span style="color:#808030; ">)</span> <span style="color:#800080; ">{</span> | ||
+ | <span style="color:#603000; ">printf</span><span style="color:#808030; ">(</span><span style="color:#800000; ">"</span><span style="color:#0000e6; ">Executing r2</span><span style="color:#0f69ff; ">\n</span><span style="color:#800000; ">"</span><span style="color:#808030; ">)</span><span style="color:#800080; ">;</span> | ||
+ | <span style="color:#800080; ">}</span> | ||
+ | <span style="color:#800000; font-weight:bold; ">void</span> t1<span style="color:#808030; ">(</span><span style="color:#808030; ">)</span> <span style="color:#800080; ">{</span> | ||
+ | r1<span style="color:#808030; ">(</span><span style="color:#808030; ">)</span><span style="color:#800080; ">;</span> | ||
+ | r2<span style="color:#808030; ">(</span><span style="color:#808030; ">)</span><span style="color:#800080; ">;</span> | ||
+ | <span style="color:#800080; ">}</span> | ||
+ | <span style="color:#800000; font-weight:bold; ">int</span> <span style="color:#400000; ">main</span><span style="color:#808030; ">(</span><span style="color:#808030; ">)</span> <span style="color:#800080; ">{</span> | ||
+ | t1<span style="color:#808030; ">(</span><span style="color:#808030; ">)</span><span style="color:#800080; ">;</span> | ||
+ | <span style="color:#800000; font-weight:bold; ">return</span> <span style="color:#008c00; ">0</span><span style="color:#800080; ">;</span> | ||
+ | <span style="color:#800080; ">}</span> | ||
+ | |||
+ | '''Possible mentor:''' [mailto:lukas.krawczyk@fh-dortmund.de Lukas Krawczyk] | ||
+ | |||
+ | === Topic 2: Real-Time application on the Adapteva Parallella === | ||
+ | |||
+ | The [http://www.adapteva.com/parallella/ Adapteva Parallella] is a heterogeneous MPSoC with 18 cores. We want to execute real-time applications using e.g. FreeRTOS on this board and compare the results with APP4MC. Your task is to create such an application. | ||
+ | |||
+ | ('''Skills required:''' C/C++, FreeRTOS) | ||
+ | |||
+ | Specific work that this could involve includes: | ||
+ | |||
+ | * Get an understanding on how FreeRTOS works | ||
+ | * Create a simple application based on FreeRTOS on the Adapteva that utilizes all 16 Epiphany cores | ||
+ | * Extend the application to use both ARM cores | ||
+ | * Convert an industrial example to FreeRTOS on the Adapteva | ||
+ | * Compare the examples | ||
+ | |||
+ | '''Possible mentor:''' [mailto:lukas.krawczyk@fh-dortmund.de Lukas Krawczyk] | ||
+ | |||
+ | === Topic 3: Progress visualization === | ||
+ | |||
+ | The Amalthea platform tools in Eclipse APP4MC allow users to distribute data and tasks to the target hardware platforms, with the focus on optimization of timing and scheduling. Your task is to extend these tools with an visualization of the progress along with (preliminary) results. | ||
+ | |||
+ | ('''Skills required:''' Java) | ||
+ | |||
+ | Specific work that this could involve includes: | ||
+ | |||
+ | * Extract metrics from APP4MC, e.g. the number of tasks, runnables, min/avg/max communications per task/label/runnable, the best quality of the partitioning/mapping tool, ... | ||
+ | * Select a library that is suitable for visualizing these metrics e.g. Eclipse SWTChart | ||
+ | * Create an own extension for the APP4MC tools that implements the visualization of the current progress resp. the quality metrics. | ||
+ | |||
+ | '''Possible mentor:''' [mailto:lukas.krawczyk@fh-dortmund.de Lukas Krawczyk] | ||
+ | |||
+ | === Topic 4: Task Visualizer === | ||
+ | |||
+ | In order to simulate the execution of tasks on a specific hardware platform, APP4MC contains a [https://www.eclipse.org/app4mc/help/app4mc-0.8.3/index.html#section2.4.4 Task Visualizer]. Your task is to extend the Task Visualizer by communication dependencies. | ||
+ | |||
+ | ('''Skills required:''' Java, JavaFX) | ||
+ | |||
+ | Specific work that this could involve includes: | ||
+ | |||
+ | * Extract communications from APP4MC models | ||
+ | * Add communication dependencies to the Task Visualizers Gantt View | ||
+ | * Add support for large models (e.g. with +10000 communications) | ||
+ | |||
+ | '''Possible mentor:''' [mailto:lukas.krawczyk@fh-dortmund.de Lukas Krawczyk] | ||
= [http://eclipse.org/swtchart Eclipse SWTChart] = | = [http://eclipse.org/swtchart Eclipse SWTChart] = |
Revision as of 05:48, 12 February 2019
Please see our main Google Summer of Code page for participation information.
Any issue listed as helpwanted is a potential GSoC project idea.
Here are some of the most recently identified helpwanted issues:
- bug 543787 TreeMasterValidationInitiator deletes siblings of the notifier on remove
- bug 543663 Ctrl+E popup should use dialog font
- bug 543623 Correct indentation slow for very large files (> 10k lines)
- bug 543402 Use Objects.equals(...) and Objects.hashCode(...)
- bug 543360 "Finding differences" message should be on editor and not be a popup
- bug 543293 Deprecate org.eclipse.jface.util.Util#hashCode in favor of Objects.hashCode
- bug 543283 toCamelCase command
- bug 543263 Update API Tools icons to png files instead of Gifs
- bug 543217 Feature view - Allow to see all plug-ins included in a feature
- bug 542987 Replace 'http' with 'https' for all Eclipse links in code base
- bug 542790 Copy/Paste (CTRL+C/CTRL+V) on the tree does not match user expectation
- bug 542762 Use less margins in MANIFEST.MF editor
A complete list is available here.
Other ideas
Example Project idea
Description of the Example Project idea with links to more information, bugs, and other useful content.
Specific work that this could involve includes:
- Bullet list of specific
- objectives
Possible mentors: Somebody Mentor
Eclipse APP4MC
Eclipse APP4MC is a platform for engineering embedded multi- and many-core software systems. The platform enables the creation and management of complex tool chains including simulation and validation. As an open platform, proven in the automotive sector by Bosch and their partners, it supports interoperability and extensibility and unifies data exchange in cross-organizational projects. APP4MC is one of the results of the ITEA3 Amalthea and Amalthea4Public research projects.
What is APP4MC?
Click here to get a quick overview of how APP4MC and Capra can help you manage timing, scheduling and traceability in a multi-core environment.
Topics and how to apply
If you are interested in one of the topics, please...
- Download and extract APP4MC
- Open the Tools-Examples (File -> New -> Example -> APP4MC Tools Examples -> Java Example)
- Modify the file LoadModifySaveExample.java so it will output some information about the model, e.g. the number and name of tasks
- Create a GitHub account (in case you don't yet have one) and upload your results
- Contact us via the APP4MC mailing list. Don't forget to attach the Link to your GitHub repository.
If you have any questions, feel free to ask them on to the APP4MC mailing list.
Topic 1: Code-Generator for Raspberry Pi
Eclipse APP4MC integrates the Amalthea System Model that allows, among others, to describe the structure of software. In order to verify the timing behavior of software, your task is to generate code out of models that is compileable and executable on e.g. a Raspberry Pi.
(Skills required: Java, C/C++ beneficial)
Specific work that this could involve includes:
- create a C or C++ file based on the content of an AMALTHEA model
- generate C-functions out of tasks and runnables
- annotate these with waiting methods that delay execution according to their execution time
- implement inter-task communication
In case you have no access to a Raspberry Pi, we can provide you with SSH-Access to one located in our facilities.
Example:
Let us assume we have a model with one Task t1 and two Runnables r1 and r2. If Runnables r1 and r2 are executed as part of task t1, the generated C-Code could look similar to the following listing:
#include <stdio.h> void r1() { printf("Executing r1\n"); } void r2() { printf("Executing r2\n"); } void t1() { r1(); r2(); } int main() { t1(); return 0; }
Possible mentor: Lukas Krawczyk
Topic 2: Real-Time application on the Adapteva Parallella
The Adapteva Parallella is a heterogeneous MPSoC with 18 cores. We want to execute real-time applications using e.g. FreeRTOS on this board and compare the results with APP4MC. Your task is to create such an application.
(Skills required: C/C++, FreeRTOS)
Specific work that this could involve includes:
- Get an understanding on how FreeRTOS works
- Create a simple application based on FreeRTOS on the Adapteva that utilizes all 16 Epiphany cores
- Extend the application to use both ARM cores
- Convert an industrial example to FreeRTOS on the Adapteva
- Compare the examples
Possible mentor: Lukas Krawczyk
Topic 3: Progress visualization
The Amalthea platform tools in Eclipse APP4MC allow users to distribute data and tasks to the target hardware platforms, with the focus on optimization of timing and scheduling. Your task is to extend these tools with an visualization of the progress along with (preliminary) results.
(Skills required: Java)
Specific work that this could involve includes:
- Extract metrics from APP4MC, e.g. the number of tasks, runnables, min/avg/max communications per task/label/runnable, the best quality of the partitioning/mapping tool, ...
- Select a library that is suitable for visualizing these metrics e.g. Eclipse SWTChart
- Create an own extension for the APP4MC tools that implements the visualization of the current progress resp. the quality metrics.
Possible mentor: Lukas Krawczyk
Topic 4: Task Visualizer
In order to simulate the execution of tasks on a specific hardware platform, APP4MC contains a Task Visualizer. Your task is to extend the Task Visualizer by communication dependencies.
(Skills required: Java, JavaFX)
Specific work that this could involve includes:
- Extract communications from APP4MC models
- Add communication dependencies to the Task Visualizers Gantt View
- Add support for large models (e.g. with +10000 communications)
Possible mentor: Lukas Krawczyk
Eclipse SWTChart
SWTChart is a powerful library to create charts and display data using SWT. So, it can be easily used in Java desktop applications. Only a few lines of code are necessary to create interactive and feature rich charts:
public class MyChart extends MassSpectrumChart {
public MyChart(Composite parent) {
super(parent, SWT.NONE);
initialize();
}
private void initialize() {
IChartSettings chartSettings = getChartSettings();
chartSettings.setCreateMenu(true);
applySettings(chartSettings);
//
List<IBarSeriesData> barSeriesDataList = new ArrayList<IBarSeriesData>();
IBarSeriesData barSeriesData = new BarSeriesData(SeriesConverter.getSeriesXY(SeriesConverter.BAR_SERIES_1));
barSeriesDataList.add(barSeriesData);
//
addSeriesData(barSeriesDataList);
}
}
The source code is located here and can easily be cloned: https://github.com/eclipse/swtchart/
If you are interested in one of the topics you have to apply on the mailing list.
Topic 1: Extending the export options
Many export options are contained already, e.g. to bitmaps as well as to scripts. The R script option is really helpful, especially when preparing scientific charts for publication. As the data is stored in a generic way, many different export options can be implemented. The task of topic 1 would be to add/extend the options: *.svg, *.eps, *.pdf and to put a pre-configured LaTeX table into the clipboard.
Possible Mentor: Philip Wenig
Topic 2: Handling large data sets
SWTChart already contains a function to compress the data and reduce the time to plot the series. Compressing large data sets could be improved, e.g. to lazily load just the data that is needed, depending on the resolution of the screen. Even when handling large datasets, details should be displayed when zooming in.
Possible Mentor: Philip Wenig
Topic 3: Default charts
This topic contains to add default charts, which could be easily re-used, e.g. a PCA chart or others.
Possible Mentor: Philip Wenig