We are pleased to welcome you to CGO 2021, the first virtual CGO Conference. In addition, the Pro... more We are pleased to welcome you to CGO 2021, the first virtual CGO Conference. In addition, the Program Committee was virtual due to the worldwide infection rate of the coronavirus. On behalf of the Program Committee, we are pleased to present an exciting and stimulating program for the 2021 International Symposium on Code Generation and Optimization Conference.
Emerging Technologies: Can Optimization Technology meet their Demands? (Dagstuhl Seminar 03071)
Automated test data generation using iterative relaxation methods
This dissertation addresses the problem of automated test data generation for commonly used cover... more This dissertation addresses the problem of automated test data generation for commonly used coverage based criteria. A new program execution based approach to automated test data generation using iterative relaxation methods has been developed. In this approach, test data generation is initiated with an arbitrarily chosen input, which is iteratively refined using a relaxation technique to generate the desired input. New algorithms to generate test data for statement, branch, data flow and path coverage have been developed. They are general in their applicability as they can generate test data for programs with branch predicates that compute linear and nonlinear functions of input. They can detect linear infeasible paths and can handle programs using arrays, records, pointers and loops. A new code transformation method to handle test data generation for functions with pointer inputs has been developed. A new method called Unified Numerical Approach has also been developed to compute a real and an integer feasible solution of a set of linear constraints. It enables the test data generation algorithms developed in this dissertation to handle programs that have both integer and floating point inputs. The experimental evaluation reveals that these methods automatically generated test data that covers a large percentage of coverage elements. The average time taken to generate a test case was of the order of a few seconds. The experiments also revealed their power in detecting infeasible linear paths as well as in indicating potentially infeasible nonlinear paths. ^
Retargetable and reconfigurable software dynamic translation
Symposium on Code Generation and Optimization, Mar 23, 2003
ABSTRACT
Reuse of compiler analysis in a programming environment
... elided, moved or replaced to produce optim-ized intermediate code that maintains a functional... more ... elided, moved or replaced to produce optim-ized intermediate code that maintains a functional equivalence ... high level of abstraction to similarly allow for real top-down design from the ... if types were seen as distinct shapes holding values, with composition of simple types into ...
Proceedings of the 14th international conference on Architectural support for programming languages and operating systems
It is our pleasure to welcome you to the Fourteenth International Conference on Architectural Sup... more It is our pleasure to welcome you to the Fourteenth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS XIV). This year's symposium continues its tradition of being the premier forum for presentation of research results on leading edge issues that cross the boundaries of computer architecture, programming languages and compilers, and operating systems. The call for papers attracted abstracts from around the world and resulted in 113 full papers being submitted to the Program Committee (PC). This year we used Borbala Online Conference Services's CyberChairPRO submission and review software. Papers were submitted for double-blind review without authors' names or identifying information. PC members were limited to no more than two paper submissions; a total of 13 papers were submitted which had a PC members as a (co)author. The Program Chair assigned each paper to three reviewers from the PC and two external reviewers. 5...
This paper describes a technique developed by the authors to repair unusable test cases after the... more This paper describes a technique developed by the authors to repair unusable test cases after the components of a GUI have changed. When a GUI changes it is inevitable that some tests will become unusable because the chain of events that occur for interactions with the GUI will change. Normally, these unusable tests would have to be regenerated, but GUI test case generation is expensive. It has become increasingly necessary that test cases be usable across versions of the GUI's life. To accomplish this the authors developed a technique based on modeling the GUI's events and components in a control-flow graph and a call tree. By comparing the original and modified versions of these models, they are able to automatically detect unusable test cases and repair the ones that can be.
Regression testing is frequently performed in a time constrained environment. This paper explains... more Regression testing is frequently performed in a time constrained environment. This paper explains how 0/1 knapsack solvers (e.g., greedy, dynamic programming, and the core algorithm) can identify a test suite reordering that rapidly covers the test requirements and always terminates within a specified testing time limit. We conducted experiments that reveal fundamental trade-offs in the (i) time and space costs that are associated with creating a reordered test suite and (ii) quality of the resulting prioritization. We find knapsack-based prioritizers that ignore the overlap in test case coverage incur a low time overhead and a moderate to high space overhead while creating prioritizations exhibiting a minor to modest decrease in effectiveness. We also find that the most sophisticated 0/1 knapsack solvers do not always identify the most effective prioritization, suggesting that overlap-aware prioritizers with a higher time overhead are useful in certain testing contexts.
ESEC/FSE 2019 - A Statistics-based Performance Testing Methodology for Cloud Applications
There are the experiment result data sets for ESEC/FSE paper:<br>"<i>A Statistic... more There are the experiment result data sets for ESEC/FSE paper:<br>"<i>A Statistics-based Performance Testing Methodology for Cloud Applications</i>"<br><br>Including source code and dataset<br>For details please refer to Install and Readme
The formal verification of control structure implementation techniques is a subject receiving inc... more The formal verification of control structure implementation techniques is a subject receiving increased attention among programming language researchers. Such correctness arguments relate source language control semantics to corresponding implementation effects. Most commonly, it is demonstrated that a particular implementation strategy ~ is "'safe" if some source language control discipline 6 is observed. We term this a suf[k'iency proof for 6 with given ~. In this paper, the companion issue of the necessit.v off is explored. That is, we consider the question of whether some more liberal discipline 6 might also be sufficient for :~. The motivation is the observation that language designers often have particular control implementation strategies in mind a priori, but at times over-restrict their final designs to ensure that the envisioned implementation remains applicable. The general notion of control discipline necessity proofs is illustrated by a proof that Wang and Dahl's CS condition on block-structured coroutines is necessary, given a simple scope-based deletion strategy, but that their CR condition is not necessary unless scope-based referencing constraints are taken into account. 1.l Interaction of language design and implementation. In the design phase of a programming language, the impact that implementation considerations have on design varies along a spectrum with two extreme points. At one end of the spectrum, design and implementation are bound together tightly, the design of the language being based on an envisioned implementation scheme. Fortran [1] is one such example where the key features of the language were tied to a particular machine architecture. At the other end of a spectrum, the design may be done independent of any implementation scheme. For example, during the design of APL , no particular machine architecture or implementation strategy was apparently considered. There are, of course, many examples of language designs that fall in between these extreme points of view. In the intermediate case, implementation techniques are considered during the design phase, but the language is not tied directly to these techniques. BLISS [9] is one such example of an intermediate case.
Software dynamic translation (SDT) is a technology that allows programs to be modified as they ar... more Software dynamic translation (SDT) is a technology that allows programs to be modified as they are running. The overhead of monitoring and modifying a running program's instructions is often substantial in SDT systems. As a result, SDT can be impractically slow, especially in SDT systems that do not or can not employ dynamic optimization to offset overhead. This is unfortunate since SDT has obvious advantages in modern computing environments and interesting applications of SDT continue to emerge. In this paper, we investigate several overhead reduction techniques, including indirect branch translation caching, fast returns, and static trace formation, that can improve SDT performances significantly.
Proceedings of the 10th ACM SIGSOFT symposium on Foundations of software engineering
This volume contains 17 research papers and one invited keynote presentation paper, presented at ... more This volume contains 17 research papers and one invited keynote presentation paper, presented at the 2002 ACM SIGSOFT Tenth International Symposium on the Foundations of Software Engineering (FSE-10). The symposium was held on November 20-22, 2002, in Charleston, South Carolina. The research papers were selected by the program committee from 128 full-length submissions. All the keynoters were invited to provide a paper to accompany their talks. Gerard Holzmann, recipient of this year's ACM SIGSOFT Distinguished Research Award, accepted our invitation.The International Symposium on the Foundations of Software Engineering brings together researchers and professionals from academia and industry to discuss new research results and ideas that address challenges in the construction of software systems. Submissions to the Symposium were reviewed by the program committee on the basis of significance, relevance, correctness, and clarity. Each paper received at least three reviews. A one-day program committee meeting was held in Orlando, Florida, at which all papers were considered and a consensus was reached on the final selection of papers to be presented. Comments from reviewers were returned to the authors of all submissions.
The reliability of software that has a Deep Neural Network (DNN) as a component is urgently impor... more The reliability of software that has a Deep Neural Network (DNN) as a component is urgently important today given the increasing number of critical applications being deployed with DNNs. The need for reliability raises a need for rigorous testing of the safety and trustworthiness of these systems. In the last few years, there have been a number of research efforts focused on testing DNNs. However the test generation techniques proposed so far lack a check to determine whether the test inputs they are generating are valid, and thus invalid inputs are produced. To illustrate this situation, we explored three recent DNN testing techniques. Using deep generative model based input validation, we show that all the three techniques generate significant number of invalid test inputs. We further analyzed the test coverage achieved by the test inputs generated by the DNN testing techniques and showed how invalid test inputs can falsely inflate test coverage metrics. To overcome the inclusion of invalid inputs in testing, we propose a technique to incorporate the valid input space of the DNN model under test in the test generation process. Our technique uses a deep generative model-based algorithm to generate only valid inputs. Results of our empirical studies show that our technique is effective in eliminating invalid tests and boosting the number of valid test inputs generated.
Partial redundancy elimination (PRE), the most important component of global optimizers, generali... more Partial redundancy elimination (PRE), the most important component of global optimizers, generalizes the removal of common subexpressions and loop-invariant computations. Because existing PRE implementations are based on code motion, they fail to completely remove the redundancies. In fact, we observed that 73% of loop-invariant statements cannot be eliminated from loops by code motion alone. In dynamic terms, traditional PRE eliminates only half of redundancies that are strictly partial. To achieve a complete PRE, control flow restructuring must be applied. However, the resulting code duplication may cause code size explosion. This paper focuses on achieving a complete PRE while incurring an acceptable code growth. First, we present an algorithm for complete removal of partial redundancies, based on the integration of code motion and control flow restructuring. In contrast to existing complete techniques, we resort to restructuring merely to remove obstacles to code motion, rather than to carry out the actual optimization. Guiding the optimization with a profile enables additional code growth reduction through selecting those duplications whose cost is justified by sufficient execution-time gains. The paper develops two methods for determining the optimization benefit of restructuring a program region, one based on path-profiles and the other on data-flow frequency analysis. Furthermore, the abstraction underlying the new PRE algorithm enables a simple formulation of speculative code motion guaranteed to have positive dynamic improvements. Finally, we show how to balance the three transformations (code motion, restructuring, and speculation) to achieve a near-complete PRE with very little code growth. We also present algorithms for efficiently computing dynamic benefits. In particular, using an elimination-style data-flow framework, we derive a demand-driven frequency analyzer whose cost can be controlled by permitting a bounded degree of conservative imprecision in the solution.
As an approach to deriving an application order of optimizing transformations, a framework is dev... more As an approach to deriving an application order of optimizing transformations, a framework is developed for examining the interactions of the transformations. The framework is based on an axiomatic specification technique and includes both pre-conditions and post conditions that must exist before and after applying optimizations. For a selected set of optimizations, the framework is used to determine those interactions among the optimizations that can create conditions and those that can destroy conditions for applying other optimizations. From these interactions, an application order is derived to obtain the potential benefits of the optimizations that can be applied to a program. In some cases, the ordering of a pair of optimizations is unambiguous in that one optimization can either create or destroy the conditions for the other. In the few cases where there is a cyclic interaction, the ordering is resolved based on the perceived importance of the two optimizations.
Although various techniques have been proposed to generate adversarial samples for white-box atta... more Although various techniques have been proposed to generate adversarial samples for white-box attacks on text, little attention has been paid to black-box attacks, which are more realistic scenarios. In this paper, we present a novel algorithm, DeepWordBug, to effectively generate small text perturbations in a black-box setting that forces a deep-learning classifier to misclassify a text input. We employ novel scoring strategies to identify the critical tokens that, if modified, cause the classifier to make an incorrect prediction. Simple character-level transformations are applied to the highest-ranked tokens in order to minimize the edit distance of the perturbation, yet change the original classification. We evaluated DeepWord-Bug on eight real-world text datasets, including text classification, sentiment analysis, and spam detection. We compare the result of DeepWordBug with two baselines: Random (Black-box) and Gradient (White-box). Our experimental results indicate that DeepWord-Bug reduces the prediction accuracy of current state-of-the-art deep-learning models, including a decrease of 68% on average for a Word-LSTM model and 48% on average for a Char-CNN model.
Uploads
Papers by Mary Lou Soffa