18230962
Efficient and effective array bound checking
Array bound checking refers to determining whether all array references in a program are within their declared ranges. This checking is critical for software verification and validation because subscripting arrays beyond their declared sizes may produce unexpected results, security holes, or failures. It is available in most commercial compilers but current implementations are not as efficient and effective as one may have hoped: (1) the execution times of array bound checked programs are increased by a factor of up to 5, (2) the compilation times are increased, which is detrimental to development and debugging, (3) the related error messages do not usually carry information to locate the faulty references, and (4) the consistency between actual array sizes and formal array declarations is not often checked.This article presents two optimization techniques that deal with Points 1, 2, and 3, and a new algorithm to tackle Point 4, which is not addressed by the current literature. The first optimization technique is based on the elimination of redundant tests, to provide very accurate information about faulty references during development and testing phases. The second one is based on the insertion of unavoidable tests to provide the smallest possible slowdown during the production phase. The new algorithm ensures the absence of bound violations in every array access in the called procedure with respect to the array declarations in the calling procedure. Our experiments suggest that the optimization of array bound checking depends on several factors, not only the percentage of removed checks, usually considered as the best improvement measuring metrics. The debugging capability and compile-time and run-time performances of our techniques are better than current implementations. The execution times of SPEC95 CFP benchmarks with range checking added by PIPS, our Fortran research compiler, are slightly longer, less than 20%, than that of unchecked programs. More problems due to functional and data recursion would have to be solved to extend these results from Fortran to other languages such as C, C++, or Java, but the issues addressed in this article are nevertheless relevant.
9934244
Alias Verification for Fortran Code Optimization
Alias analysis for Fortran is less complicated than for programming languages with pointers but many real Fortran programs violate the standard: a formal parameter or a common variable that is aliased with another formal parameter is modified. Compilers, assuming standard-conforming programs, consider that an assignment to one variable will not change the value of any other variable, allowing optimizations involving the aliased variables. Higher performance results but anything may happen: the program may appear to run normally, or produce incorrect answers, or behave unpredictably. The results may depend on the compiler and the optimization level. To guarantee the standard conformance of programs in order to make program analyses exact and program optimizations safe, precise alias information, i.e the determination of overlaps among arrays is studied in this paper. Static analyses and code instrumentation are used to find all violations of the aliasing rules in Fortran code. Alias violation tests are inserted only at places where it cannot be proved statically that they are useless in order to reduce the number of dynamic checks at run-time. A specific memory location naming technique is used to obtain compact representation and to enhance the precision of alias analysis. Modifications on the dependence graph created by aliasing are also studied to show the impact of aliases on the correctness of some program optimizing transformations. Experimental results on SPEC95 CFP benchmark are presented and some related issues are also discussed.
15188179
Advanced Program Analyses and Verifications
Software validation and verification are critical for almost systems whose failure is unacceptable. This is a very expensive process, typically costing 50% of the total softwar e development costs. We show in this paper how program analyses can be used automatically to perform efficient and effective ver ifications, e.garray bound checking and uninitialized variable checking. These verifications are based onarray regions, the analyses that collect information about the way array elements used and de fined by programs. With useful knowledge of the program properties provided by these static analyses, the amount of additional code necess ary to instrument the application is reduced to a minimum. Run-time checks are generated only when we do not know how to prove that they are useless. Dynamic errors that may cause potentially failure are caught and their consequences can be reduced by exceptio n handling. Information provided by our analyses is helpful for the debugging process of large scale programs. All verification s are implemented in PIPS, the research compiler developed at́ Ecole des Mines de Paris. Qualitative and quantitative experimen ts have done with industrial applications up to hundreds of thousand lines of code.
18341353
Alias verification for Fortran code optimization
Abstract Alias analysis for Fortran is less complicated than for programming languages with pointers but many real Fortran programs violate the standard: a formal parameter or a common variable that is aliased with another formal parameter is modified. Compilers, assuming standard-conforming programs, consider that an assignment to one variable will not change the value of any other variable, allowing optimizations involving the aliased variables. Higher performance results but anything may happen: the program may appear to run normally, or may produce incorrect answers, or may behave unpredictably. The results may depend on the compiler and the optimization level. To guarantee the standard conformance of programs and to maintain the referential transparency in order to make program analyses exact and program optimizations safe, precise alias information retrieval at a reasonable cost, especially the determination of overlaps between arrays are studied in this paper. Static analyses and code instrumentation are used to find all violations of the prohibitions against aliasing in Fortran code. Alias violation tests are inserted only at places where it cannot be proved statically that they are useless in order to reduce the number of dynamic checks at run-time. A specific memory location naming technique is used to compact representation and enhance the precision of alias analysis. Modifications on the dependence graph created by aliasing are also studied to show the impact of aliases on some program optimizing transformations. Experimental results on SPEC95 benchmark are presented and some related issues are also discussed.
17197783
Multiple sender distributed video streaming
With the explosive growth of video applications over the Internet, many approaches have been proposed to stream video effectively over packet switched, best-effort networks. We propose a receiver-driven protocol for simultaneous video streaming from multiple senders to a single receiver in order to achieve higher throughput, and to increase tolerance to packet loss and delay due to network congestion. Our receiver-driven protocol employs a novel rate allocation algorithm (RAA) and a packet partition algorithm (PPA). The RAA, run at the receiver, determines the sending rate for each sender by taking into account available network bandwidth, channel characteristics, and a prespecified, fixed level of forward error correction, in such a way as to minimize the probability of packet loss. The PPA, run at the senders based on a set of parameters estimated by the receiver, ensures that every packet is sent by one and only one sender, and at the same time, minimizes the startup delay. Using both simulations and Internet experiments, we demonstrate the effectiveness of our protocol in reducing packet loss.
11789833
Collaborative Multidisciplinary Design in Virtual Environments
The application designers can usually define their own "virtual environments" by selecting the appropriate computing resources required or reuse and compose existing environments. The approach is generic by allowing various application domains to benefit from potential hardware and software resources located on remote computing facilities in a simple and intuitive way. The computing resources are defined by services made available as sets of standardized interfaces performing specific tasks: application workflow, input data streams, output visualization tools, monitoring facilities, etc. Services can be composed and hierarchically defined. Transparent access to heterogeneous hardware and software operating systems is guaranteed. An aero-elasticity example in airliner design is given
14182338
A Linear Algorithm for Polygonal Approximations of Thick Curves
The concept of fuzzy segment was introduced in [2]. In this paper we suggest a notion of strict fuzzy segment and provide a linear algorithm for recognizing it thanks to a simple property of convex hull. A linear method to decompose a thick curve into strict fuzzy segments is also given. The quality of decomposition can be easily controlled by setting two threshold values: the maximum order and the minimum density of the fuzzy segments. The algorithm is fast, practical and multi-purpose.
15918536
Protocols for distributed video streaming
With the explosive growth of video applications over the packet switched networks, many approaches have been proposed to stream video effectively over packet switched, best-effort networks. In our previous work, we proposed a framework with a receiver driven protocol to coordinate simultaneous video streaming from multiple senders to a single receiver in order to achieve higher throughput, and to increase tolerance to packet loss and delay due to network congestion. The receiver-driven protocol employs two algorithms: the rate allocation and packet partition. The rate allocation algorithm determines the sending rate for each sender while the packet partition algorithm ensures no sender sends the same packets, and at the same time, minimizes the probability of late packets. We extend the rate allocation scheme to be used with forward error correction (FEC) in order to minimize the probability of packet loss in a bursty loss environment such as one due to network congestion. Using both simulations and actual Internet experiments, we demonstrate the effectiveness of our rate allocation scheme in reducing packet loss, and hence, achieving higher visual quality for the streamed video.
7825329
Zero-Latency Data Warehousing for Heterogeneous Data Sources and Continuous Data Streams
In this paper, a framework for building an overall Zero-Latency Data Warehouse system (ZLDWH) is provided. Such a ZLDWH requires tasks such as data changes detection, continuous loading and updating of new data, autonomous analysis and the execution of actions to be completed in the Data Warehouse (DWH). For this purpose, we combine (1) an existing solution for the continuous data integration and (2) the known approach of Active Data Warehousing (ADWH) by introducing protocols that enable the correct collaboration between the two. The continuous data integration is realized on the one hand by asynchronous communication between multiple information sources and the DWH through a message queuing system, and on the other hand by the continuous loading and updating. To obtain a low-latency time for this cycle, an “active rule evaluation” is provided between the data feeding stage and its loading into the DWH. This is realized by applying ECA-Techniques (EventCondition-Action) to obtain a more “active” characteristic of the DWH. A second goal of this paper is to take into consideration a special class of information source namely continuous data streams. Continuous data streams are information sources in which data arrives in high-volume, rapidly, bursty, and needs to be processed continuously. Therefore novel protocols and techniques are needed for capturing, storing and evaluate analysis decision based on new coming data from such continuous data stream sources.