This repositiry contains the Master of Science by Research thesis I wrote at University of Hertfordshire.
General information about the programme: Wikipedia
The programme lasts for 12 months. In the first 2 months students must defend the progress report. It contains a short introduction to the research area, the motivation/problem statement and the project planning for next 10 months.
Group page: Compiler Technology and Computer Architecture
The concepts of the new coordination language AstraKahn are described in [1]. The language defines the coordination behaviour of asynchronous stateless components (boxes) and their orderly interconnection via stream-carrying channels with finite capacity. AstraKahn structures the interconnect using a fixed set of wiring primitives, viz. serial and parallel composition, wrap-around connection and serial replication. Boxes are connected to the network with one or two input channels and one or more output channels. A stateless box does not synchronise data on its input channels; to this end, AstraKahn provides a synchronisation facility called synchroniser. Synchronisers are finite state machines for joining messages and sending them on to the output channels. A synchroniser is connected to the network with one or more input and output channels. AstraKahn provides a dedicated language to define synchronisers, while boxes are specified in any conventional programming language. In order to deal with the issue of application progress, AstraKahn attempts to provide an automatic resource and concurrency management based on communication demand.
This thesis focuses on the implementation of synchronisers and their role in the serial replication wiring pattern. We provide some minor syntax improvements and detailed explanation how each language construct should be used. An AstraKahn synchroniser has a non-deterministic behaviour. We give an execution algorithm that defines the ordering of non-deterministic choices made by the synchroniser, and which is a basis for the synchroniser runtime. We implement the language compiler that generates the data structure to be interpreted by the runtime and the communication passport of the synchroniser. The compiler performs semantic and type checking and reports source code errors.
The language report [1] explains the machinery behind the serial replication briefly. The serial replication is an important part of AstraKahn and it has to be well-established for the execution environment to be implemented. We analyse the original synchroniser-based approach to fixed points and show how it can be implemented. As a part of the analysis, we give the topological properties of the operand network that are required for the existence of forward and reverse fixed points. The analysis shows that the construction and the debugging of an operand network with a complex fixed point condition can be quite complicated. In order to avoid having to construct complicated operand networks, we provide a simple alternative solution for forward fixed point. Finally, we provide algorithms for the AstraKahn compiler to detect both kinds of fixed point in the operand network.
I wrote the thesis and the report in TeX. I used MacTex-2015, make and vim. The presentation was made in PowerPoint.
- progress_report/: my progress report
- thesis_(legacy|template)/, figs/, chapters/, appendices/: thesis files
- Bibliography.bib: thesis bibliography
- presentation/: the presentation I prepared for my oral examination
- Thesis.pdf: thesis release
To build the thesis from sources:
cd thesis_template && make