Overview
Topic status: We're looking for students to study this topic.
Multi-core processors are now common place and the number of cores is expected to continue to increase exponentially. Unlike with previous processor improvements, compilers are generally unable to automatically exploit this parallel hardware. Parallel programming has long belonged to the specialized realm of high performance computing but is now a mainstream challenge; set to have a major impact on the software development industry. Parallelizing programs currently requires considerable specialized knowledge and skill, is time consuming and error prone. We need to develop better ways of expressing and analysing programs to make it easier to safely exploit parallel hardware.
Use of Ownerships types is one mechanism for expressing programs in such a way that we can easily reason about the inherent parallelism. Classes in object-oriented programs often have various private fields that are considered part of the internal representation of the object. Such internal objects may themselves contain other objects which are part of their representation. Ownership types make this representation hierarchy explicit in the type system and so allow us to reason about the overlap of sections of memory that may be read or written by each method and so allow us to reason about inherent parallelism that might be exploited.
One major problem with using ownership types is that it places additional burden on the programmer to provide these type annotations. It requires both extra syntax to specify these extra type annotations and also extra thinking to work out what these type annotations need to be for the program to be semantically correct. The aim of this research project is to spare the programmer at least part of this burden by creating some kind of software tool that can help infer some of these ownership type annotations. Such type inference has been successful in other similarly complex type systems.
Hypothesis
That ownership type annotations can be semi-automatically inferred in many cases - allowing programs to be more easily parallelized.
Approaches
The approach will be to manually apply ownership annotations to a number of sample applications and to look for patterns of annotation that could be automatically recognized. A literature review of type inference for other type systems will also assist by providing a conceptual framework for creating such a type inference system. Ultimately, a prototype type inference system will be implemented and tested for effectiveness. This implementation would take place within the type checker of our C# research compiler.
References
- Study level
- PhD
- Supervisors
- QUT
- Organisational unit
Science and Engineering Faculty
- Research area
- Contact
- Please contact the supervisor.