6 research outputs found

    Doctor of Philosophy

    Get PDF
    dissertationIn the static analysis of functional programs, control- ow analysis (k-CFA) is a classic method of approximating program behavior as a infinite state automata. CFA2 and abstract garbage collection are two recent, yet orthogonal improvements, on k-CFA. CFA2 approximates program behavior as a pushdown system, using summarization for the stack. CFA2 can accurately approximate arbitrarily-deep recursive function calls, whereas k-CFA cannot. Abstract garbage collection removes unreachable values from the store/heap. If unreachable values are not removed from a static analysis, they can become reachable again, which pollutes the final analysis and makes it less precise. Unfortunately, as these two techniques were originally formulated, they are incompatible. CFA2's summarization technique for managing the stack obscures the stack such that abstract garbage collection is unable to examine the stack for reachable values. This dissertation presents introspective pushdown control-flow analysis, which manages the stack explicitly through stack changes (pushes and pops). Because this analysis is able to examine the stack by how it has changed, abstract garbage collection is able to examine the stack for reachable values. Thus, introspective pushdown control-flow analysis merges successfully the benefits of CFA2 and abstract garbage collection to create a more precise static analysis. Additionally, the high-performance computing community has viewed functional programming techniques and tools as lacking the efficiency necessary for their applications. Nebo is a declarative domain-specific language embedded in C++ for discretizing partial differential equations for transport phenomena. For efficient execution, Nebo exploits a version of expression templates, based on the C++ template system, which is a type-less, completely-pure, Turing-complete functional language with burdensome syntax. Nebo's declarative syntax supports functional tools, such as point-wise lifting of complex expressions and functional composition of stencil operators. Nebo's primary abstraction is mathematical assignment, which separates what a calculation does from how that calculation is executed. Currently Nebo supports single-core execution, multicore (thread-based) parallel execution, and GPU execution. With single-core execution, Nebo performs on par with the loops and code that it replaces in Wasatch, a pre-existing high-performance simulation project. With multicore (thread-based) execution, Nebo can linearly scale (with roughly 90% efficiency) up to 6 processors, compared to its single-core execution. Moreover, Nebo's GPU execution can be up to 37x faster than its single-core execution. Finally, Wasatch (the pre-existing high-performance simulation project which uses Nebo) can scale up to 262K cores

    A Simplified Faceted Approach To Information Retrieval for Reusable Software Classification

    Get PDF
    Software Reuse is widely recognized as the most promising technique presently available in reducing the cost of software production. It is the adaptation or incorporation of previously developed software components, designs or other software-related artifacts (i.e. test plans) into new software or software development regimes. Researchers and vendors are doubling their efforts and devoting their time primarily to the topic of software reuse. Most have focused on mechanisms to construct reusable software but few have focused on the problem of discovering components or designs to meet specific needs. In order for software reuse to be successful, it must be perceived to be less costly to discover a software component or related artifact to satisfy a given need than to discover one anew. As results, this study will describe a method to classify software components that meet a specified need. Specifically, the purpose of the present research study is to provide a flexible system, comprised of a classification scheme and searcher system, entitled Guides-Search, in which processes can be retrieved by carrying out a structured dialogue with the user. The classification scheme provides both the structure of questions to be posed to the user, and the set of possible answers to each question. The model is not an attempt to replace current structures; but rather, seeks to provide a conceptual and structural method to support the improvement of software reuse methodology. The investigation focuses on the following goals and objectives for the classification scheme and searcher system: the classification will be flexible and extensible, but usable by the Searcher; the user will not be presented with a large number of questions; the user will never be required to answer a question not known to be germane to the query

    Evolutionary multi-objective decision support systems for conceptual design

    Get PDF
    Merged with duplicate record 10026.1/2328 on 07.20.2017 by CS (TIS)In this thesis the problem of conceptual engineering design and the possible use of adaptive search techniques and other machine based methods therein are explored. For the multi-objective optimisation (MOO) within conceptual design problem, genetic algorithms (GA) adapted to MOO are used and various techniques explored: weighted sums, lexicographic order, Pareto method with and without ranking, VEGA-like approaches etc. Large number of runs are performed for findingZ Dth e optimal configuration and setting of the GA parameters. A novel method, weighted Pareto method is introduced and applied to a real-world optimisation problem. Decision support methods within conceptual engineering design framework are discussed and a new preference method developed. The preference method for translating vague qualitative categories (such as "more important 91 , 4m.9u ch less important' 'etc. ) into quantitative values (numbers) is based on fuzzy preferences and graph theory methods. Several applications of preferences are presented and discussed: * in weighted sum based optimisation methods; s in weighted Pareto method; * for ordering and manipulating constraints and scenarios; e for a co-evolutionary, distributive GA-based MOO method; The issue of complexity and sensitivity is addressed as well as potential generalisations of presented preference methods. Interactive dynamical constraints in the form of design scenarios are introduced. These are based on a propositional logic and a fairly rich mathematical language. They can be added, deleted and modified on-line during the design session without need for recompiling the code. The use of machine-based agents in conceptual design process is investigated. They are classified into several different categories (e. g. interface agents, search agents, information agents). Several different categories of agents performing various specialised task are developed (mostly dealing with preferences, but also some filtering ones). They are integrated with the conceptual engineering design system to form a closed loop system that includes both computer and designer. All thesed ifferent aspectso f conceptuale ngineeringd esigna re applied within Plymouth Engineering Design Centre / British Aerospace conceptual airframe design project.British Aerospace Systems, Warto

    Other things besides number: Abstraction, constraint propagation, and string variable types

    Full text link

    Machine-independent "and" and "or" parallel execution of logic programs

    No full text
    Parallel machines are becoming increasingly cheap and more easily available. Commercial companies have already announced MIMD machines with more than 8000 processors. This prompts three questions: Should the programmer have to rewrite existing software for each new machine that comes along? Should it be necessary for the programmer to have intimate knowledge of the target machine in order to program it efficiently? Is it necessary for the programmer to identify the parallelism in programs explicitly?Our thesis is that the answer is 'no' on all three counts. We demonstrate that it is possible for users to write parallel programs in a machine independent manner. We address this problem at two levels. We first describe the design and implementation of a parallel run time support system called the Chare kernel that provides a uniform interface to the programmer on the class of MIMD machines. This support system makes it possible for programmers to write machine independent programs efficiently. We choose the logic programming paradigm where a high level specification of the problem is possible and it is amenable to the implicit detection of parallelism. We have designed and implemented a compiler that exploits AND and OR parallelism in logic programs. We have developed an emulator for abstract machine code generated by our compiler as an application on the Chare kernel which runs without modification on shared memory and nonshared memory machines alike.This thesis discusses addresses algorithmic issues relating to the design and implementation of an efficient parallel Prolog compiler on both shared and nonshared machines. This work differs significantly from most other related research, in part due to their dependence on a global memory address space. This work is the first to demonstrate that nonshared machines like the Intel and NCUBE hypercubes can be exploited effectively for the parallel execution of logic programs. It also provides a convincing demonstration of machine independent parallel programming.U of I OnlyETDs are only available to UIUC Users without author permissio
    corecore