![]() The environment integrates techniques proposed in different research frameworks, enabling the exploitation of their combined potential and the development of new algorithms and ideas. The target of the project has been the development of a complete environment in which interactions between mechanisms and policies at different levels (application, compiler, threads library and kernel) are carefully coordinated, in order to achieve the aforementioned goals. The objective of the NANOS project is to investigate possible ways to accomplish both high system throughput and application performance for parallel applications in multiprogrammed environments on shared-memory multiprocessors. The hand-written code comprised just a few thousand lines, most of which were devoted to the implementation of refactoring transformations. In all three tools, about 90% of the code was either generated or contained in a language-independent library. These techniques were used to implement automated refactoring support in Photran (a widely used, open source development environment for Fortran), as well as prototype, Eclipse-based refactoring tools for PHP and BC. Since this component is language-independent, it can be implemented in a library and reused in refactoring tools for many different languages. Then, it shows how a language-independent component, called a differential precondition checker, can be used to eliminate explicit checks for compilability and preservation from many common refactorings. It identifies preconditions as checking three properties: input validity, compilability, and preservation. Part II focuses primarily on precondition checking, the procedure which determines whether or not a refactoring can be performed. ![]() This is accomplished by annotating the grammar so that it describes both the abstract and concrete syntax of the programming language. However, this dissertation shows that it is possible to generate all of these components, including an AST that can be used to manipulate source code and is designed specifically for use in a refactoring tool. Compiler writers have been generating lexers and parsers from grammars for years. Part I focuses on the syntactic components: the lexer/parser, abstract syntax tree (AST), and source code manipulation infrastructure. This dissertation shows that much of this support code can be placed in a language-independent library or code generator, significantly reducing the amount of code a tool developer must write to build a refactoring tool for a new language. Usually, only a small fraction of the tool's code is devoted to refactoring transformations most of the code is devoted to supporting components. Asīuilding an automated refactoring tool for a new programming language is an expensive and time-consuming process. We show that average available parallelism is often high, but realising it would require various changes in compilation, language or computation models. Our first contribution is a comprehensive analysis of limits of parallelism in several benchmark programs, performed by constructing Dynamic Dependence Graphs (DDGs) from execution traces. We argue that this is an efficient and effective method of parallelising general sequential programs. The programmer can then examine the resulting parallel program, and using critical path information from the profiler, identify and refactor parallelism bottlenecks to enable further parallelism. Profilers gather dependence information on a program, which is then used to automatically parallelise the program at source-level. ![]() In this thesis we propose a profiling-based interactive approach to program parallelisation. Many solutions have been proposed to address this issue, ranging from explicit to implicit parallelism, but consensus has yet to be reached on the best way to tackle such a problem. ![]() To continue exploiting hardware developments, effort must be invested in producing software that can be split up to run on multiple cores or processors. The advance of multi-core architectures signals the end of universal speed-up of software over time. ![]()
0 Comments
Leave a Reply. |
Details
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |