Abstract
With the emergence of multi-core processors into the mainstream, parallel programming is no longer the specialized domain it once was. There is a growing need for systems to allow programmers to more easily reason about data dependencies and inherent parallelism in general purpose programs. In my thesis I present a system for reasoning about side-effects of evaluation in an abstract and composable manner that is suitable for use by both programmers and automated tools like compilers. The goal of developing such a system is to both facilitate the automatic exploitation of the inherent parallelism in imperative programs and to allow programmers to reason about dependencies which may be limiting the parallelism available in their applications. I have realized my reasoning system using ideas from Ownership Types and have applied this realization to create an extension of the C# language which I call Zal. A Zal compiler has been built as an extension of the GP C# research compiler and I have used this compiler to parallelize a number of real-world applications to demonstrate the feasibility of my proposed approach.
Biography
Andrew Craik is a Senior Member of Technical Staff with Oracle Labs located in Brisbane, Australia where he is currently working on the Parfait Project. He is currently focusing on the Clang opensource compiler to which he is adding compatibility modes to allow Clang to compile codebases written for Intel's C/C++ compiler, Oracle's Solaris Studio compiler, and Microsoft's Visual C/C++ compiler as well as adding the ability to generate macro debug information to Clang. He completed his PhD at the Queensland University of Technology in February 2011 with his thesis .Reasoning about Parallelism in Imperative Object-Oriented Languages. supervised by Dr. Wayne Kelly and Professor Paul Roe. Prior to his PhD,Andrew graduated with distinction from the University of Waterloo in June 2007 with a Bachelor of Applied Science Honours Computer Engineering. His research interests include compilation, programming languages, program analysis, concurrency and operating systems.