1,617 research outputs found

    Partial Redundancy Elimination for Multi-threaded Programs

    Full text link
    Multi-threaded programs have many applications which are widely used such as operating systems. Analyzing multi-threaded programs differs from sequential ones; the main feature is that many threads execute at the same time. The effect of all other running threads must be taken in account. Partial redundancy elimination is among the most powerful compiler optimizations: it performs loop-invariant code motion and common subexpression elimination. We present a type system with optimization component which performs partial redundancy elimination for multi-threaded programs.Comment: 7 page

    Value Flow Graph Analysis with SATIrE

    Get PDF
    Partial redundancy elimination is a common program optimization that attempts to improve execution time by removing superfluous computations from a program. There are two well-known classes of such techniques: syntactic and semantic methods. While semantic optimization is more powerful, traditional algorithms based on SSA from are complicated, heuristic in nature, and unable to perform certain useful optimizations. The value flow graph is a syntactic program representation modeling semantic equivalences; it allows the combination of simple syntactic partial redundancy elimination with a powerful semantic analysis. This yields an optimization that is computationally optimal and simpler than traditional semantic methods. This talk discusses partial redundancy elimination using the value flow graph. A source-to-source optimizer for C++ was implemented using the SATIrE program analysis and transformation system. Two tools integrated in SATIrE were used in the implementation: ROSE is a framework for arbitrary analyses and source-to-source transformations of C++ programs, PAG is a tool for generating data flow analyzers from functional specifications

    Modeling, Control and Estimation of Reconfigurable Cable Driven Parallel Robots

    Get PDF
    The motivation for this thesis was to develop a cable-driven parallel robot (CDPR) as part of a two-part robotic device for concrete 3D printing. This research addresses specific research questions in this domain, chiefly, to present advantages offered by the addition of kinematic redundancies to CDPRs. Due to the natural actuation redundancy present in a fully constrained CDPR, the addition of internal mobility offers complex challenges in modeling and control that are not often encountered in literature. This work presents a systematic analysis of modeling such kinematic redundancies through the application of reciprocal screw theory (RST) and Lie algebra while further introducing specific challenges and drawbacks presented by cable driven actuators. It further re-contextualizes well-known performance indices such as manipulability, wrench closure quality, and the available wrench set for application with reconfigurable CDPRs. The existence of both internal redundancy and static redundancy in the joint space offers a large subspace of valid solutions that can be condensed through the selection of appropriate objective priorities, constraints or cost functions. Traditional approaches to such redundancy resolution necessitate computationally expensive numerical optimization. The control of both kinematic and actuation redundancies requires cascaded control frameworks that cannot easily be applied towards real-time control. The selected cost functions for numerical optimization of rCDPRs can be globally (and sometimes locally) non-convex. In this work we present two applied examples of redundancy resolution control that are unique to rCDPRs. In the first example, we maximize the directional wrench ability at the end-effector while minimizing the joint torque requirement by utilizing the fitness of the available wrench set as a constraint over wrench feasibility. The second example focuses on directional stiffness maximization at the end-effector through a variable stiffness module (VSM) that partially decouples the tension and stiffness. The VSM introduces an additional degrees of freedom to the system in order to manipulate both reconfigurability and cable stiffness independently. The controllers in the above examples were designed with kinematic models, but most CDPRs are highly dynamic systems which can require challenging feedback control frameworks. An approach to real-time dynamic control was implemented in this thesis by incorporating a learning-based frameworks through deep reinforcement learning. Three approaches to rCDPR training were attempted utilizing model-free TD3 networks. Robustness and safety are critical features for robot development. One of the main causes of robot failure in CDPRs is due to cable breakage. This not only causes dangerous dynamic oscillations in the workspace, but also leads to total robot failure if the controllability (due to lack of cables) is lost. Fortunately, rCDPRs can be utilized towards failure tolerant control for task recovery. The kinematically redundant joints can be utilized to help recover the lost degrees of freedom due to cable failure. This work applies a Multi-Model Adaptive Estimation (MMAE) framework to enable online and automatic objective reprioritization and actuator retasking. The likelihood of cable failure(s) from the estimator informs the mixing of the control inputs from a bank of feedforward controllers. In traditional rigid body robots, safety procedures generally involve a standard emergency stop procedure such as actuator locking. Due to the flexibility of cable links, the dynamic oscillations of the end-effector due to cable failure must be actively dampened. This work incorporates a Linear Quadratic Regulator (LQR) based feedback stabilizer into the failure tolerant control framework that works to stabilize the non-linear system and dampen out these oscillations. This research contributes to a growing, but hitherto niche body of work in reconfigurable cable driven parallel manipulators. Some outcomes of the multiple engineering design, control and estimation challenges addressed in this research warrant further exploration and study that are beyond the scope of this thesis. This thesis concludes with a thorough discussion of the advantages and limitations of the presented work and avenues for further research that may be of interest to continuing scholars in the community

    Simple and Effective Type Check Removal through Lazy Basic Block Versioning

    Get PDF
    Dynamically typed programming languages such as JavaScript and Python defer type checking to run time. In order to maximize performance, dynamic language VM implementations must attempt to eliminate redundant dynamic type checks. However, type inference analyses are often costly and involve tradeoffs between compilation time and resulting precision. This has lead to the creation of increasingly complex multi-tiered VM architectures. This paper introduces lazy basic block versioning, a simple JIT compilation technique which effectively removes redundant type checks from critical code paths. This novel approach lazily generates type-specialized versions of basic blocks on-the-fly while propagating context-dependent type information. This does not require the use of costly program analyses, is not restricted by the precision limitations of traditional type analyses and avoids the implementation complexity of speculative optimization techniques. We have implemented intraprocedural lazy basic block versioning in a JavaScript JIT compiler. This approach is compared with a classical flow-based type analysis. Lazy basic block versioning performs as well or better on all benchmarks. On average, 71% of type tests are eliminated, yielding speedups of up to 50%. We also show that our implementation generates more efficient machine code than TraceMonkey, a tracing JIT compiler for JavaScript, on several benchmarks. The combination of implementation simplicity, low algorithmic complexity and good run time performance makes basic block versioning attractive for baseline JIT compilers

    Adaptive arithmetic data compression: An Implementation suitable for noiseless communication channel use

    Get PDF
    Noiseless data compression can provide important benefits in speed improvements and cost savings to computer communication. To be most effective, the compression process should be off-loaded from any processing CPU and be placed into a communication device. To operate transparently, It also should be adaptable to the data, operate in a single pass, and be able to perform at the communication link\u27s speed. Compression methods are surveyed with emphasis given to how well they meet these criteria. In this thesis, a string matching statistical unit paired with arithmetic coding, is investigated in detail. It is implemented and optimized so that its performance (speed, memory use, and compression ratio) can be evaluated. Finally, the requirements and additional concerns for the implementation of this algorithm into a communication device are addressed

    Joint multi-field T1 quantification for fast field-cycling MRI

    Get PDF
    Acknowledgment This article is based upon work from COST Action CA15209, supported by COST (European Cooperation in Science and Technology). Oliver Maier is a Recipient of a DOC Fellowship (24966) of the Austrian Academy of Sciences at the Institute of Medical Engineering at TU Graz. The authors would like to acknowledge the NVIDIA Corporation Hardware grant support.Peer reviewedPublisher PD
    • …
    corecore