950 resultados para NiPAT, code pattern analysis, object-oriented programming languages
Resumo:
The main motivation for Integrated Ocean Drilling Program Expedition 310 to the Tahitian Archipelago was the assumption that the last deglacial sea-level rise is precisely recorded in the coral reefs of this far-field site. The Tahitian deglacial succession typically consists of coral framework subsequently encrusted by coralline algae and microbialites. The high abundance of microbialites is uncommon for shallow-water coral reefs, and the environmental conditions favouring their development are still poorly understood. Microbioerosion patterns in the three principal framework components (corals, coralline algae, microbialites) are studied with respect to relative light availability during coral growth and subsequent encrustation, in order to constrain the palaeobathymetry and the relative timing of the encrustation. Unexpectedly for a tropical, light-flooded setting, ichnotaxa typical for the deep-euphotic to dysphotic zone dominate. The key ichnotaxa for the shallow euphotic zone are scarce in the analysed sample set, and are restricted tothe baseof thedeglacial succession, thus reflecting thedeglacial sea-level rise. At the base of the deglacial reef succession, the ichnocoenoses present in the corals indicate shallower bathymetries than those in the encrusting microbialites. This is in agreement with radiocarbon data that indicate a time gap of more than 600 years between coral death and microbialite formation. At the top of the deglacial reef succession, in contrast, the microbioerosion patterns in the three framework components indicate a uniform palaeobathymetry, and radiocarbon ages imply that encrustation took place shortly after coral demise. An enigma arises from the fact that the ichnocoenoses imply photic conditions that appear very deep for zooxanthellate coral growth. During the deglacial sea-level rise increased nutrients and fluvial influx may have led to (seasonal?) eutrophication, condensing the photic zonation. This would have exerted stress on the coral ecosystem and played a significant role in initiating microbialite development.
Resumo:
Persistence and abundance of species is determined by habitat availability and the ability to disperse and colonize habitats at contrasting spatial scales. Favourable habitat fragments are also heterogeneous in quality, providing differing opportunities for establishment and affecting the population dynamics of a species. Based on these principles, we suggest that the presence and abundance of epiphytes may reflect their dispersal ability, which is primarily determined by the spatial structure of host trees, but also by host quality. To our knowledge there has been no explicit test of the importance of host tree spatial pattern for epiphytes in Mediterranean forests. We hypothesized that performance and host occupancy in a favourable habitat depend on the spatial pattern of host trees, because this pattern affects the dispersal ability of each epiphyte and it also determines the availability of suitable sites for establishment. We tested this hypothesis using new point pattern analysis tools and generalized linear mixed models to investigate the spatial distribution and performance of the epiphytic lichen Lobaria pulmonaria, which inhabits two types of host trees (beeches and Iberian oaks). We tested the effects on L. pulmonaria distribution of tree size, spatial configuration, and host tree identity. We built a model including tree size, stand structure, and several neighbourhood predictors to understand the effect of host tree on L. pulmonaria. We also investigated the relative importance of spatial patterning on the presence and abundance of the species, independently of the host tree configuration. L. pulmonaria distribution was highly dependent on habitat quality for successful establishment, i.e., tree species identity, tree diameter, and several forest stand structure surrogates. For beech trees, tree diameter was the main factor influencing presence and cover of the lichen, although larger lichen-colonized trees were located close to focal trees, i.e., young trees. However, oak diameter was not an important factor, suggesting that bark roughness at all diameters favoured lichen establishment. Our results indicate that L. pulmonaria dispersal is not spatially restricted, but it is dependent on habitat quality. Furthermore, new spatial analysis tools suggested that L. pulmonaria cover exhibits a distinct pattern, although the spatial pattern of tree position and size was random.
Resumo:
Since the early days of logic programming, researchers in the field realized the potential for exploitation of parallelism present in the execution of logic programs. Their high-level nature, the presence of nondeterminism, and their referential transparency, among other characteristics, make logic programs interesting candidates for obtaining speedups through parallel execution. At the same time, the fact that the typical applications of logic programming frequently involve irregular computations, make heavy use of dynamic data structures with logical variables, and involve search and speculation, makes the techniques used in the corresponding parallelizing compilers and run-time systems potentially interesting even outside the field. The objective of this article is to provide a comprehensive survey of the issues arising in parallel execution of logic programming languages along with the most relevant approaches explored to date in the field. Focus is mostly given to the challenges emerging from the parallel execution of Prolog programs. The article describes the major techniques used for shared memory implementation of Or-parallelism, And-parallelism, and combinations of the two. We also explore some related issues, such as memory management, compile-time analysis, and execution visualization.
Resumo:
Persistence and abundance of species is determined by habitat availability and the ability to disperse and colonize habitats at contrasting spatial scales. Favourable habitat fragments are also heterogeneous in quality, providing differing opportunities for establishment and affecting the population dynamics of a species. Based on these principles, we suggest that the presence and abundance of epiphytes may reflect their dispersal ability, which is primarily determined by the spatial structure of host trees, but also by host quality. To our knowledge there has been no explicit test of the importance of host tree spatial pattern for epiphytes in Mediterranean forests. We hypothesized that performance and host occupancy in a favourable habitat depend on the spatial pattern of host trees, because this pattern affects the dispersal ability of each epiphyte and it also determines the availability of suitable sites for establishment. We tested this hypothesis using new point pattern analysis tools and generalized linear mixed models to investigate the spatial distribution and performance of the epiphytic lichen Lobaria pulmonaria, which inhabits two types of host trees (beeches and Iberian oaks). We tested the effects on L. pulmonaria distribution of tree size, spatial configuration, and host tree identity. We built a model including tree size, stand structure, and several neighbourhood predictors to understand the effect of host tree on L. pulmonaria. We also investigated the relative importance of spatial patterning on the presence and abundance of the species, independently of the host tree configuration. L. pulmonaria distribution was highly dependent on habitat quality for successful establishment, i.e., tree species identity, tree diameter, and several forest stand structure surrogates. For beech trees, tree diameter was the main factor influencing presence and cover of the lichen, although larger lichen-colonized trees were located close to focal trees, i.e., young trees. However, oak diameter was not an important factor, suggesting that bark roughness at all diameters favoured lichen establishment. Our results indicate that L. pulmonaria dispersal is not spatially restricted, but it is dependent on habitat quality. Furthermore, new spatial analysis tools suggested that L. pulmonaria cover exhibits a distinct pattern, although the spatial pattern of tree position and size was random.
Resumo:
Studying independence of goals has proven very useful in the context of logic programming. In particular, it has provided a formal basis for powerful automatic parallelization tools, since independence ensures that two goals may be evaluated in parallel while preserving correctness and eciency. We extend the concept of independence to constraint logic programs (CLP) and prove that it also ensures the correctness and eciency of the parallel evaluation of independent goals. Independence for CLP languages is more complex than for logic programming as search space preservation is necessary but no longer sucient for ensuring correctness and eciency. Two additional issues arise. The rst is that the cost of constraint solving may depend upon the order constraints are encountered. The second is the need to handle dynamic scheduling. We clarify these issues by proposing various types of search independence and constraint solver independence, and show how they can be combined to allow dierent optimizations, from parallelism to intelligent backtracking. Sucient conditions for independence which can be evaluated \a priori" at run-time are also proposed. Our study also yields new insights into independence in logic programming languages. In particular, we show that search space preservation is not only a sucient but also a necessary condition for ensuring correctness and eciency of parallel execution.
Resumo:
This article considers static analysis based on abstract interpretation of logic programs over combined domains. It is known that analyses over combined domains provide more information potentially than obtained by the independent analyses. However, the construction of a combined analysis often requires redefining the basic operations for the combined domain. A practical approach to maintain precision in combined analyses of logic programs which reuses the individual analyses and does not redefine the basic operations is illustrated. The advantages of the approach are that proofs of correctness for the new domains are not required and implementations can be reused. The approach is demonstrated by showing that a combined sharing analysis — constructed from "old" proposals — compares well with other "new" proposals suggested in recent literature both from the point of view of efficiency and accuracy.
Resumo:
This paper introduces a novel technique for identifying logically related sections of the heap such as recursive data structures, objects that are part of the same multi-component structure, and related groups of objects stored in the same collection/array. When combined withthe lifetime properties of these structures, this information can be used to drive a range of program optimizations including pool allocation, object co-location, static deallocation, and region-based garbage collection. The technique outlined in this paper also improves the efficiency of the static analysis by providing a normal form for the abstract models (speeding the convergence of the static analysis). We focus on two techniques for grouping parts of the heap. The first is a technique for precisely identifying recursive data structures in object-oriented programs based on the types declared in the program. The second technique is a novel method for grouping objects that make up the same composite structure and that allows us to partition the objects stored in a collection/array into groups based on a similarity relation. We provide a parametric component in the similarity relation in order to support specific analysis applications (such as a numeric analysis which would need to partition the objects based on numeric properties of the fields). Using the Barnes-Hut benchmark from the JOlden suite we show how these grouping methods can be used to identify various types of logical structures allowing the application of many region-based program optimizations.
Resumo:
A new formalism, called Hiord, for defining type-free higherorder logic programming languages with predicate abstraction is introduced. A model theory, based on partial combinatory algebras, is presented, with respect to which the formalism is shown sound. A programming language built on a subset of Hiord, and its implementation are discussed. A new proposal for defining modules in this framework is considered, along with several examples.
Resumo:
In this paper we propose a complete scheme for automatic exploitation of independent and-parallelism in CLP programs. We first discuss the new problems involved because of the different properties of the independence notions applicable to CLP. We then show how independence can be derived from a number of standard analysis domains for CLP. Finally, we perform a preliminary evaluation of the efficiency, accuracy, and effectiveness of the approach by implementing a parallehzing compiler for CLP based on the proposed ideas and applying it on a number of CLP benchmarks.
Resumo:
Visualization of program executions has been used in applications which include education and debugging. However, traditional visualization techniques often fall short of expectations or are altogether inadequate for new programming paradigms, such as Constraint Logic Programming (CLP), whose declarative and operational semantics differ in some crucial ways from those of other paradigms. In particular, traditional ideas regarding the behavior of data often cannot be lifted in a straightforward way to (C)LP from other families of programming languages. In this chapter we discuss techniques for visualizing data evolution in CLP. We briefly review some previously proposed visualization paradigms, and also propose a number of (to our knowledge) novel ones. The graphical representations have been chosen based on the perceived needs of a programmer trying to analyze the behavior and characteristics of an execution. In particular, we concéntrate on the representation of the run-time valúes of the variables, and the constraints among them. Given our interest in visualizing large executions, we also pay attention to abstraction techniques, i.e., techniques which are intended to help in reducing the complexity of the visual information.
Resumo:
Dynamic scheduling increases the expressive power of logic programming languages, but also introduces some overhead. In this paper we present two classes of program transformations designed to reduce this additional overhead, while preserving the operational semantics of the original programs, modulo ordering of literals woken at the same time. The first class of transformations simplifies the delay conditions while the second class moves delayed literals later in the rule body. Application of the program transformations can be automated using information provided by compile-time analysis. We provide experimental results obtained from an implementation of the proposed techniques using the CIAO prototype compiler. Our results show that the techniques can lead to substantial performance improvement.
Resumo:
Visualisation of program executions has been used in applications which include education and debugging. However, traditional visualisation techniques often fall short of expectations or are altogether inadequate for new programming paradigms, such as Constraint Logic Programming (CLP), whose declarative and operational semantics differ in some crucial ways from those of other paradigms. In particular, traditional ideas regarding the behaviour of data often cannot be lifted in a straightforward way to (C)LP from other families of programming languages. In this chapter we discuss techniques for visualising data evolution in CLP. We briefly review some previously proposed visualisation paradigms, and also propose a number of (to our knowledge) novel ones. The graphical representations have been chosen based on the perceived needs of a programmer trying to analyse the behaviour and characteristics of an execution. In particular, we concentrate on the representation of the run-time values of the variables, and the constraints among them. Given our interest in visualising large executions, we also pay attention to abstraction techniques, i.e., techniques which are intended to help in reducing the complexity of the visual information.
Resumo:
This report presents an overview of the current work performed by us in the context of the efficient parallel implementation of traditional logic programming systems. The work is based on the &-Prolog System, a system for the automatic parallelization and execution of logic programming languages within the Independent And-parallelism model, and the global analysis and parallelization tools which have been developed for this system. In order to make the report self-contained, we first describe the "classical" tools of the &-Prolog system. We then explain in detail the work performed in improving and generalizing the global analysis and parallelization tools. Also, we describe the objectives which will drive our future work in this area.