Mittwoch, 21. September 2011

The SRG / .NET Multicore Group active in teaching

Dear followers and students,

because of the superb feedback I got from the .NET-lecture in July, I will offer a practical course this winter semester. The course website is available here.

The goal will be to learn how to develop software in a planned and organized manner. We'll get into discussing the different steps of a software development process. We'll divide the students in teams of 4 and practise an adapted version of the waterfall model. It consist of 4 seperate phases and each one needs one student in charge.

So, the main goal of this event is to practically learn the advantages of a development process model. And the disadvantages too. Familiarization is the catch-word. Now, although it's all about the model, I think it's also important to deal with an interesting piece of software. In contrast to former events of this kind in our faculty, I'd like to change the course a little and devote the first weeks to a dedicated brainstorming phase. Each team is supposed to freely develop an idea of what could be developed in this course.

Be creative - develop your own idea!

Watch out, here comes a KIT-disclaimer:
To all students: Please go to WebInScribe and select "PSE-Praktikum". Make your selection before October, 20th!




Dienstag, 9. August 2011

Shared Research Group officially launched!

Hello everybody,

Since early 2011 I have egerly been working on a research group proposal as a fund raiser for our research group. Today, I would like to share some very pleasant information with all of you:

After having initiated the .NET-Multicore Group in late 2010, our research group keeps on evolving: With Siemens Corporate Technology (CT) we got a global player in research to support our parallelization activities!
I'm happy to announce the Shared Research Group: Pattern-driven application parallelization (SRG).
It is the first research group of its kind at the Department of Informatics and Computer Science here at the KIT. Under the shared patronage of the KIT represented by Prof. Walter F. Tichy and Siemens CT, this construct supports research activities for a group of three scentific researchers over a period of 4 years. Both Siemens and the KIT take confidence in the research goals defined by us and their implementation.

As a first step, Prof. Tichy and I will start to look for two additional researchers. When this is achieved, I'll get back to you.
Greetings,
K!

Donnerstag, 14. Juli 2011

Evaluation of the .NET-lecture

Hello everybody,

as I wrote in this post, I held a lecture on modern programming concepts using the example of .NET. I have organized the practical courses for a freshman lecture but this has been the first time fully in charge of a lecture. At the end of each semester, our faculty conducts an evaluation of all its lectures and practical courses and today I got my results.

I'd like to share them with you and I must say that I'm overwhelmed and very happy to receive this kind of feedback! With a quality index of 100 it simply can't get any better!

So this goes out to all of my students: Thank you for your collaboration and for making this lecture such a success!

Link: Lecture evaluation (german)

K!     

Mittwoch, 13. April 2011

The .NET Multicore Group to offer a lecture on modern development concepts

For many years, our chair offers several lectures on software design, design patterns and modern programming concepts. The base lectures for freshman students all base on Java because this has become a common standard across different software engineering chairs here in the faculty for Informatics and Computer Science.

For students majoring in software engineering we also offer .NET where we teach modern concepts of programming environments. This semester, I will offer this lecture, enriching the existing material with results from our research and practical courses.

Apart from theoretical aspects like the CLR, CTS or MSIL, I'd like to support a profound knowledge about these conepts via practical courses. If you want, take at look at our material. I'll publish all lecture slides and courses on the lecture site.

Greetings,
K!

Mittwoch, 6. April 2011

Loop field types - Loop exterior fields

On iteration exterior fields.

When trying to investigate the parallelization potential of fields used in loops, I suggest the differentiation between iteration interior and iteration exterior fields, as depicted here.

Today, I want to say something about the latter field type.

From the perspective of a single iteration of a loop, there are only two different kinds of fields: The ones that are declared within the loop itself and the ones that are not. So, from this perspective, fields can either have a local character (declared within the loop iteration) or a global character (declared 'outside'). Fields, that are declared beyond the scope of a single loop iteration can either be
- method fields declared within the scope of the method containing the loop,
- object fields declared within the scope of the class instance containing the method or
- class fields declared within the scope of the class.


Knowing this we can define patterns that tell us how to turn this into parallel code.We curently develop a tool called "AutoAnalyzer" that automatically detects the different field profiles for a given application. Based on this information, we want to be able to suggest a suitable parallelization for a given method of loop.

Freitag, 25. März 2011

SRG student to win the RSA award 2012!

Hey folks,

just a short note to let you all know that the KIT awarded one of our student positions for their excellence in research! The Research Student Award (RSA) honors student involvements that have very close influence to current research.

I feel very flattered :c)

K!

Mittwoch, 12. Januar 2011

AutoProfiler - Master/Worker identification

Welcome back,

today I'd quickly like to share some results we got from AutoProfiler concerning the pattern extraction from runtime profiles. As test benchmark we used Parallel Programming Samples offered by Microsoft, and a Desktop Search we developed and parallelized manually as a real world example.

For this first approach, we analyzed the control flows of all actual programs by automatically instrumenting the binary and collecting the following indicators:
  • Number of times a method is called
  • Method-inclusive time share
  • Method-exclusive time share 
According to these information we tried to determine the software pattern that could be used to parallelize the specific piece of code. As we have a manually parallelized version of all benchmark programs, we can identify, which methods have been touched by developers during their manual paralleization and what pattern they have used.

The following table shows the results of one benchmark and compares them to the suggestions we got out of AutoProfiler.

Method #calls %incl. time %excl. time Manual pattern AutoProfiler Suggestion
PerfSimStep() 120 91,82 0,10 Worker Worker
Sim1Step() 7260 91,40 57,05 Worker Master

I think the next step is to take a deeper look into data dependencies in order to better distinguish different patterns. This could well be Master/Worker from Pipeline. Also, we try to cope with a special form of calls from a mater to a worker thread: If a detected worker calls a method very often with no high CPU-load per call, it might lead to a performance gain to inline this worker instead of an explicit spawn-off-execution in a separate thread.

K!