Parallelising Kiwiplan GUI framework

Progress

4th March

Tim briefly explained me what the project is. Desk has been set up for me at Kiwiplan.

18th March

All the required Java files have been uploaded to my computer at work. The framework contains approximately 150 classes. After having a discussion with Hao, he said the major part of my project is to understand how the framework works.

19th March - 30th April

Since parallel programming is a new topic for me, I wants to know how the parallel programming is being done. I have been reading one excellent book called "Introduction to Parallel Computing". This is just to make sure I understand the basics well. At the same time, I looked at the links given to me by Radu to help me understand the basics.

15th May - 20th May

I started programming with Threads. Threads have been introduced in Java since the very beginning. Most of the people who does parallel programming nowdays, don't work directly with threads. However, one needs to know the basics of threads and how to solve some of the common issues in multithreading application like "Liveness", "Deadlock" etc.

1st June - 4th June

Taking one step more towards understanding parallel programming in Java, I started learning Java 5 concurrent library features. The benefit of using this library is that, the programmer does not have to work directly with threads. Concepts like "ThreadPool", "Executers", "Callable" etc. have been learnt. Website has been updated. Since the basic understanding of parallel programming has been acquired, I made a project plan and gave it to Hao. Mid semester presentation and report has been made as well.

15th June - 17th June

My first step is to understand how the framework works. The framework has been developed over a period of over 7 years by multiple people, so it would not be possible to understand each and every class. However, the goal is to understand the basics of the framework and in particular, how the pipeline is being constructed and what patterns are being used etc. I understood patterns like Model-View-Controller (MVC), which is typically being used when designing large size applications.

1st July - 17th July

Understood how the sorting is being done in the framework. The sorting is being done differently from the way we generally do it. We do not have the actual data while performing the sort but have mappings to the actual data. The data is being stored in the "Model" component (MVC pattern). Sorting algorithm has been changed so that it can run in parallel. Initially, the parallel algorithm has been designed so that it works as a standalone application. Once that is done, it has been integrated with the Kiwiplan application. Some problems have been faced while doing that, because the underlying classes where not thread safe. A report has been added on the Resource page which explains the progress of this period in bit more detail.

20th July

Emphasis is towards learning the framework. The code is too detailed and since too many classes are related to each other makes it bit hard to understand. I went to kiwiplan on 19th and 20th and making an effort to learn the framework rather than how to do this in parallel.

26 - 27th July

Firstly, I made a UML diagram of the whole model. That helps understanding how filters are related to each other. Secondly, it has been figured out in which order the filters are created in a pipeline and how pipeline determines which filters needs to be added. Particular filter named "Reflective filter" is being investigated.

1st - 15th August

Learned how the new Fork/Join framework is being structured, what type of problems does it make it easy to parallelize. Took me time to figure out that Java 7 concurrency library is not a replacement for the concurrent library came in Java 5 and 6.

20th - 31st August

Understood ParallelArray functionality and how to apply it. Wrote couple of simple programs that are based on Fork/Join framework and ParallelArray. That was important to do instead of using them directly with the Kiwiplan framework.

1st - 30th September

Able to parallelise the RowVisbility filter and Sorting Filter with the Kiwiplan framework classes and got optimistic results. I also looked at other filters such as Reflective filter and Column Inserting Filter but did not find anything in them which can be done in parallel.

7th October onwards

Merging everything i have done so far. Started writing final year report and working on my presentation.

25th October

Final year presentation and report has been uploaded to the resource page.

Latest Updates

  • End Of Year Report
  • End of Year Report has been uploaded on the Resource section. Or Click here to download it.

  • Final Seminar
  • Final Seminar has been uploaded on the Resource section. Or Click here to download it.

  • Progress Report
  • Progress Report has been uploaded on the Resource section. Or Click here to download it.

  • Mid Semester Report
  • Mid Semester Report has been uploaded on the Resource section. Or Click here to download it.

  • Mid Semester Seminar
  • Mid Semester Seminar has been uploaded on the Resource section. Or Click here to download it.

  • Project Plan
  • Project plan has been uploaded on the Resource section. Or Click here to download it.

  • Introductory Seminar
  • Introductory Seminar slides has been uploaded on the Resource section. Or Click here to download it.

     
    Author: Prabhjot Singh Jassal, pjas002@aucklanduni.ac.nz