Finding bugs is key to the correctness of compilers in wide use today. If the behaviour of a compiled program, as allowed by its architecture memory model, is not a behaviour of the source program under its source mod...
详细信息
ISBN:
(纸本)9798350395099
Finding bugs is key to the correctness of compilers in wide use today. If the behaviour of a compiled program, as allowed by its architecture memory model, is not a behaviour of the source program under its source model, then there is a bug. This holds for all programs, but we focus on concurrency bugs that occur only with two or more threads of execution. We focus on testing techniques that detect such bugs in C/C++ compilers. We seek a testing technique that automatically covers concurrency bugs up to fixed bounds on program sizes and that scales to find bugs in compiled programs with many lines of code. Otherwise, a testing technique can miss bugs. Unfortunately, the state-of-the-art techniques are yet to satisfy all of these properties. We present the Telechat compiler testing tool for concurrent programs. Telechat compiles a concurrent C/C++ program and compares source and compiled program behaviours using source and architecture memory models. We make three claims: Tel echat improves the state-of-the-art at finding bugs in code generation for multi-threaded execution, it is the first public description of a compiler testing tool for concurrency that is deployed in industry, and it is the first tool that takes a significant step towards the desired properties. We provide experimental evidence suggesting Telechat finds bugs missed by other state-of-the-art techniques, case studies indicating that Telechat satisfies the properties, and reports of our experience deploying Telechat in industry regression testing.
All current implementations of Java Virtual Machines allow the creation of one-dimensional arrays of length smaller than 2(31) elements. In addition, since Java lacks true multidimensional arrays, most of numerical li...
详细信息
ISBN:
(纸本)9781467378130
All current implementations of Java Virtual Machines allow the creation of one-dimensional arrays of length smaller than 2(31) elements. In addition, since Java lacks true multidimensional arrays, most of numerical libraries use one-dimensional arrays to store multidimensional data. With the current limitation, it is not possible to store volumes of size larger than 1290(3). On the other hand, the data from scientific simulations or medical scanners continuously grow in size and it is not uncommon to go beyond that limit. This work addresses the problem of maximal size of one-dimensional Java arrays. JLargeArrays is a Java library of one-dimensional arrays that can store up to 2(63) elements. Performance comparison with native Java arrays and Fastutil library shows that JLargeArrays is the fastest solution overall. Possible applications in Java collections as well as numerical and visualization frameworks are also discussed.
The distributed evaluation of functional programs and the communication between computational nodes require high-level process description and coordination mechanism. This paper presents the d-Clean high-level functio...
详细信息
The distributed evaluation of functional programs and the communication between computational nodes require high-level process description and coordination mechanism. This paper presents the d-Clean high-level functional language, which supports the distributed computation of Clean functions over a cluster. The lazy functional programming language Clean is extended by new language elements in order to achieve parallel features. The distributed computations of functions are expressed in the form of process-networks. d-Clean introduces language primitives to control the dataflow in a distributed process-network. A process scheme defines a partial computation graph, where the nodes are functions to be evaluated and the edges are communication channels. The computational nodes are implemented as statically typed Clean programs. The schemes are parameterized by functions, types anddata for defining process networks. d-Clean is compiled to an intermediate level language calledd-Box. The d-Clean generic constructs are instantiated into d-Box expressions. d-Box is designed for the description of the computational nodes. d-Box expressions hide implementation details and enable direct control over the process-network. The asynchronous communication is based on language-independent middleware services. The present paper provides the syntax and the informal semantics of both coordination languages. To illustrate the definition of a distributed functional computational pattern using the d-Clean language a farm skeleton running example is presented.
In Part I we defined several new algorithms which gave the same iterates as the standard GMRES algorithm but require less computational expense when implemented on scalar and vector computers. In this paper, we demons...
详细信息
In Part I we defined several new algorithms which gave the same iterates as the standard GMRES algorithm but require less computational expense when implemented on scalar and vector computers. In this paper, we demonstrate that the new algorithms are even more economical than the standard algorithms when applied to several other computer architectures: machines with distributed memory, machine which use local cache memory, and machines for which it is desired to use disk memory or solid state disk memory to solve the given problem. The increased efficiency is due to a reduction in the number of memory transfers required by the algorithms. In this paper we describe how these algorithms are implemented in order to obtain the improved performance. Numerical comparisons of the algorithms are given on several representative computers.
暂无评论