271 research outputs found

    Loopy: Programmable and Formally Verified Loop Transformations

    Get PDF
    Abstract. This paper presents a system, Loopy, for programming loop transformations. Manual loop transformation can be tedious and errorprone, while fully automated methods do not guarantee improvements. Loopy takes a middle path: a programmer specifies a loop transformation at a high level, which is then carried out automatically by Loopy, and formally verified to guard against specification and implementation mistakes. Loopy’s notation offers considerable flexibility with assembling transformations, while automation and checking prevent errors. Loopy is implemented for the LLVM framework, building on a polyhedral compilation library. Experiments show substantial improvements over fully automated loop transformations, using simple and direct specifications

    Effect of blood storage on electrolyte levels

    Get PDF
    Background: Blood transfusion can be an immediate life saving measure in several acute conditions such as hemorrhage and anemia. However, various post transfusion complications are observed in patients which may be associated with the storage conditions of the collected blood. Electrolytes play a major role in maintaining homeostasis within the cells. Potassium is the most important extracellular cation responsible for maintenance of the cell integrity. Prolonged and improper storage of blood can lead to leakage of electrolytes, thus changing the cell morphology. This can adversely affect the patients who receive such blood. This study helps us analyze the effect of blood storage on electrolyte levels.Methods: For the study, 10ml of blood was collected from 30 blood bags containing CPDA-1 at the time of blood donation from 30 different volunteers. This blood containing the CPDA-1 was divided into 5 parts of 2ml and each 2ml sample was stored in plain bulbs. All the samples were stored at 4°C. Samples were tested to check for changes in the electrolyte (Na+, K+, Cl-) levels on day 0, 3, 7, 14 and 21. ANOVA was used to calculate the variance in the electrolyte levels.Results: Average sodium level on day 0 was 152.9±3.8 mEq/l. There was a significant decrease and it was measured at 139.5±4.8 mEq/l on day 21. Average potassium level on day 0 was 4.2±0.4 mEq/l. A significant spike was observed in potassium levels. The final reading of potassium level on day 21 was 15.2±0.7 mEq/l. Average chloride level on day 0 was 71.9±6.6 mEq/l which significantly declined to 67±5.9 mEq/l.Conclusions: Though blood is stored in proper conditions, a biochemical change occurs within the cells due to prolonged storage and thus affects its viability

    Atomicity and Abstraction for Cross-Blockchain Interactions

    Full text link
    A blockchain facilitates secure and atomic transactions between mutually untrusting parties on that chain. Today, there are multiple blockchains with differing interfaces and security properties. Programming in this multi-blockchain world is hindered by the lack of general and convenient abstractions for cross-chain communication and computation. Current cross-chain communication bridges have varied and low-level interfaces, making it difficult to develop portable applications. Current methods for multi-chain atomic transactions are limited in scope to cryptocurrency swaps. This work addresses these issues. We first define a uniform, high-level interface for communication between chains. Building on this interface, we formulate a protocol that guarantees atomicity for general transactions whose operations may span several chains. We formulate and prove the desired correctness and security properties of these protocols. Our prototype implementation is built using the LayerZero cross-chain bridge. Experience with this implementation shows that the new abstractions considerably simplify the design and implementation of multi-chain transactions. Experimental evaluation with multi-chain swap transactions demonstrates performance comparable to that of custom-built implementations

    Simple and Fast Biased Locks

    Get PDF
    Locks are used to ensure exclusive access to shared memory locations. Unfortunately, lock operations are expensive, so much work has been done on optimizing their performance for common access patterns. One such pattern is found in networking applications, where there is a single thread dominating lock accesses. An important special case arises when a single-threaded program calls a thread-safe library that uses locks. An effective way to optimize the dominant-thread pattern is to "bias" the lock implementation so that accesses by the dominant thread have negligible overhead. We take this approach in this work: we simplify and generalize existing techniques for biased locks, producing a large design space with many trade-offs. For example, if we assume the dominant process acquires the lock infinitely often (a reasonable assumption for packet processing), it is possible to make the dominant process perform a lock operation without expensive fence or compare-and-swap instructions. This gives a very low overhead solution; we confirm its efficacy by experiments. We show how these constructions can be extended for lock reservation, re-reservation, and to reader-writer situations

    Recency of immersion in L2 environment more important than L2 proficiency in speech segmentation

    Get PDF
    Speech segmentation is a language-specific skill: each language provides different cues for optimally segmenting the continuous speech stream into words. When exposed to a novel language, listeners have been shown to use those segmentation cues that they are familiar with from their native language (L1)

    Stress corrosion cracking studies

    Full text link
    This document reports on the activities for Task 17 of the U.S. DOE/UCCSN Cooperative Agreement Number DE-FC28-98NV12081. There are three subtasks in this Task, the experimental results, discussions, and conclusions of which are presented in the following sections. Data Sources and Electronic Data Control The Data Identification numbers for the data, graphs, and tables in this report, as submitted to the Data Management Database, are tabulated below. The table also includes the source files for the said data as well as the corresponding scientific notebooks where the data can be found. All data in the Q section of the report are qualified as the relevant notebooks have completed the Technical and QA review process

    Leveraging Static Analysis Tools for Improving Usability of Memory Error Sanitization Compilers

    Get PDF
    Memory errors such as buffer overruns are notorious security vulnerabilities. There has been considerable interest in having a compiler to ensure the safety of compiled code either through static verification or through instrumented runtime checks. While certifying compilation has shown much promise, it has not been practical, leaving code instrumentation as the next best strategy for compilation. We term such compilers Memory Error Sanitization Compilers (MESCs). MESCs are available as part of GCC, LLVM and MSVC suites. Due to practical limitations, MESCs typically apply instrumentation indiscriminately to every memory access, and are consequently prohibitively expensive and practical to only small code bases. This work proposes a methodology that applies state-of-the-art static analysis techniques to eliminate unnecessary runtime checks, resulting in more efficient and scalable defenses. The methodology was implemented on LLVM\u27s Safecode, Integer Overflow, and Address Sanitizer passes, using static analysis of Frama-C and Codesurfer. The benchmarks demonstrate an improvement in runtime performance that makes incorporation of runtime checks a viable option for defenses
    • …
    corecore