Compile-time analysis of concurrent logic programs for microprocessors
Compile-time analysis of concurrent logic programs for microprocessors
An analogue of strictness analysis is proposed for concurrent logic programming called schedule analysis. Schedule analysis deduces at compile-time a partial schedule for the processes of a program by partitioning the atoms of each clause into threads. Threads are totally ordered sets of atoms whose relative ordering is determined by a scheduler. Threads reduce scheduler activity and permit a wealth of traditional Prolog optimisations to be applied to the concurrent logic program. A framework for schedule analysis is proposed, formulated in terms of the operational semantics for a program, which builds from the notion of a data-dependence to define a procedure for creating threads. A safety result is presented stating the conditions under which the work of the scheduler can be reduced from ordering processes to ordering threads. A polynomial-time compilation scheme is outlined which takes as input information derived from existing forms of compile-time analysis and produces as output the threads of a clause. Schedule analysis has been integrated into a compiler and preliminary results suggest that it can play a central r^ole in compilation. The execution of a concurrent logic program can break down into the evaluation of fine-grained processes. This can present a mismatch of granularity between the program and the multiprocessor which degrades performance. One approach for dealing with processes which are to fine-grained is to coalesce them into larger grains. A compile-time technique for coalescing fine-grained processes is proposed, called granularity analysis, which derives complexity functions for processes at compile-time. The complexity functions are the solutions of difference equations on argument sizes, formulated as functions of the size of the data. By comparing the complexities of the computation and the communication, coalescing decisions can be made at compile-time. The granularity analysis approach is refined by combining it with a variant of schedule analysis in a single unified technique called serialisation analysis. Serialisation analysis both partitions a program into grains for parallel evaluation and orders the grains for sequential evaluation. Serialisation analysis is based on threads to reduce scheduler activity, incurs no extra run-time overhead, and is straightforward to implement.
University of Southampton
1992
King, Andrew Malcolm
(1992)
Compile-time analysis of concurrent logic programs for microprocessors.
University of Southampton, Doctoral Thesis.
Record type:
Thesis
(Doctoral)
Abstract
An analogue of strictness analysis is proposed for concurrent logic programming called schedule analysis. Schedule analysis deduces at compile-time a partial schedule for the processes of a program by partitioning the atoms of each clause into threads. Threads are totally ordered sets of atoms whose relative ordering is determined by a scheduler. Threads reduce scheduler activity and permit a wealth of traditional Prolog optimisations to be applied to the concurrent logic program. A framework for schedule analysis is proposed, formulated in terms of the operational semantics for a program, which builds from the notion of a data-dependence to define a procedure for creating threads. A safety result is presented stating the conditions under which the work of the scheduler can be reduced from ordering processes to ordering threads. A polynomial-time compilation scheme is outlined which takes as input information derived from existing forms of compile-time analysis and produces as output the threads of a clause. Schedule analysis has been integrated into a compiler and preliminary results suggest that it can play a central r^ole in compilation. The execution of a concurrent logic program can break down into the evaluation of fine-grained processes. This can present a mismatch of granularity between the program and the multiprocessor which degrades performance. One approach for dealing with processes which are to fine-grained is to coalesce them into larger grains. A compile-time technique for coalescing fine-grained processes is proposed, called granularity analysis, which derives complexity functions for processes at compile-time. The complexity functions are the solutions of difference equations on argument sizes, formulated as functions of the size of the data. By comparing the complexities of the computation and the communication, coalescing decisions can be made at compile-time. The granularity analysis approach is refined by combining it with a variant of schedule analysis in a single unified technique called serialisation analysis. Serialisation analysis both partitions a program into grains for parallel evaluation and orders the grains for sequential evaluation. Serialisation analysis is based on threads to reduce scheduler activity, incurs no extra run-time overhead, and is straightforward to implement.
This record has no associated files available for download.
More information
Published date: 1992
Identifiers
Local EPrints ID: 461296
URI: http://eprints.soton.ac.uk/id/eprint/461296
PURE UUID: 67ba1844-4e31-4014-b384-1a2086eeaf65
Catalogue record
Date deposited: 04 Jul 2022 18:42
Last modified: 04 Jul 2022 18:42
Export record
Contributors
Author:
Andrew Malcolm King
Download statistics
Downloads from ePrints over the past year. Other digital versions may also be available to download e.g. from the publisher's website.
View more statistics