9567996
The generic graph component library
In this paper we present the Generic Graph Component Library (GGCL), a generic programming framework for graph data structures and graph algorithms. Following the theme of the Standard Template Library (STL), the graph algorithms in GGCL do not depend on the particular data structures upon which they operate, meaning a single algorithm can operate on arbitrary concrete representations of graphs. To attain this type of flexibility for graph data structures, which are more complicated than the containers in STL, we introduce several concepts to form the generic interface between the algorithms and the data structures, namely, Vertex, Edge, Visitor, and Decorator. We describe the principal abstractions comprising the GGCL, the algorithms and data structures that it provides, and provide examples that demonstrate the use of GGCL to implement some common graph algorithms. Performance results are presented which demonstrate that the use of novel lightweight implementation techniques and static polymorphism in GGCL results in code which is significantly more efficient than similar libraries written using the object-oriented paradigm.
6016075
Concept-based component libraries and optimizing compilers
This paper discusses concept lattices and some of their applications in component library development and compiler optimizations. Ongoing work on concept-based user-extensible simplification (type-based optimizer generators) and library transformations is first reviewed, then a new application--categorization of algorithms via precise descriptions of their performance characteristics--is outlined, with Standard Template Library and Boost Graph Library algorithm concept lattices as example.
44673545
Generic programming for high-performance scientific applications
We present case studies that apply generic programming to the development of high-performance parallel code for solving two archetypal partial differential equations (PDEs). We examine the overall structure of the example scientific codes and consider their generic implementation. With a generic approach it is a straightforward matter to reuse software components from different sources; implementations with components from the Iterative Template Library (ITL), the Matrix Template Library (MTL), Blitz++, A++/P++, and Fortran BLAS are presented. Our newly developed Generic Message Passing library is used for communication. We compare the generic implementations with equivalent implementations developed with alternative libraries and languages and discuss performance as well as software engineering issues. Copyright © 2005 John Wiley & Sons, Ltd.
11364382
The Generic Message Passing framework
The paper presents the design and implementation of the Generic Message Passing framework (GMP). The design of the GMP is guided by two goals: programmer productivity and run-time performance, particularly for parallel systems having both shared and distributed memory (e.g., clusters of SMPs). To achieve these goals simultaneously, the GMP uses a generic programming paradigm, allowing it to integrate seamlessly with modern generic libraries such as the C++ Standard Library. In addition the GMP presents a single parallel programming model, namely message passing. The implementation of the GMP fully exploits the architectural characteristics of its execution target for maximum run-time performance. Performance results are presented that demonstrate the effectiveness of the Generic Message Passing framework.
14941056
Generic programming for high performance scientific applications
We present case studies that apply generic programming to the development of high-performance parallel code for solving two archetypal PDEs. We examine the overall structure of the example scientific codes and consider their generic implementation. With a generic approach it is a straight-forward matter to reuse software components from different sources; implementations with components from ITL, MTL, Blitz++, A++/P++, and Fortran BLAS are presented. Our newly-developed Generic Message Passing framework is used for communication. We compare the generic implementations to equivalent implementations developed with alternative libraries and languages and discuss not only performance but software engineering issues as well.
1243491
Fast context-free grammar parsing requires fast boolean matrix multiplication
In 1975, Valiant showed that Boolean matrix multiplication can be used for parsing context-free grammars (CFGs), yielding the asympotically fastest (although not practical) CFG parsing algorithm known. We prove a dual result: any CFG parser with time complexity <i>O</i>(<i>gn</i><sup>3-∈</sup>), where <i>g</i> is the size of the grammar and <i>n</i> is the length of the input string, can be efficiently converted into an algorithm to multiply <i>m</i> × <i>m</i> Boolean matrices in time <i>O</i>(<i>m</i><sup>3-∈/3</sup>). Given that practical, substantially subcubic Boolean matrix multiplication algorithms have been quite difficult to find, we thus explain why there has been little progress in developing practical, substantially subcubic general CFG parsers. In proving this result, we also develop a formalization of the notion of parsing.
6713452
Distributional Clustering of English Words
We describe and evaluate experimentally a method for clustering words according to their distribution in particular syntactic contexts. Words are represented by the relative frequency distributions of contexts in which they appear, and relative entropy between those distributions is used as the similarity measure for clustering. Clusters are represented by average context distributions derived from the given words according to their probabilities of cluster membership. In many cases, the clusters can be thought of as encoding coarse sense distinctions. Deterministic annealing is used to find lowest distortion sets of clusters: as the annealing parameter increases, existing clusters become unstable and subdivide, yielding a hierarchical "soft" clustering of the data. Clusters are used as the basis for class models of word coocurrence, and the models evaluated with respect to held-out test data.
29502567
On silicon-based speed path identification
Speed path identification is an indispensable step for pushing the design timing wall and for developing the final speed binning strategy in production test. For complex high-performance designs, pre-silicon timing tools have so far not been able to deliver satisfactory results in predicting the actual speed limiting paths on the silicon. The actual speed paths are mostly uncovered through test and silicon debug, where tremendous manual effort is involved. This paper presents a novel approach as the first step for automating the speed path identification process. Our approach is silicon-based, meaning that timing information is extracted through testing of silicon sample chips. We call this step silicon learning. Based on silicon learning, we present an iterative flow for speed path identification. Experimental results are presented to explain the new methodologies and to demonstrate the effectiveness of our techniques.
52861235
On bounding the delay of a critical path
2032603
Similarity-Based Approaches to Natural Language Processing
Statistical methods for automatically extracting information about associations between words or documents from large collections of text have the potential to have considerable impact in a number of areas, such as information retrieval and natural-language-based user interfaces. However, even huge bodies of text yield highly unreliable estimates of the probability of relatively common events, and, in fact, perfectly reasonable events may not occur in the training data at all. This is known as the sparse data problem. Traditional approaches to the sparse data problem use crude approximations. We propose a different solution: if we are able to organize the data into classes of similar events, then, if information about an event is lacking, we can estimate its behavior from information about similar events. This thesis presents two such similarity-based approaches, where, in general, we measure similarity by the Kullback-Leibler divergence, an information-theoretic quantity. 
Our first approach is to build soft, hierarchical clusters: soft, because each event belongs to each cluster with some probability; hierarchical, because cluster centroids are iteratively split to model finer distinctions. Our clustering method, which uses the technique of deterministic annealing, represents (to our knowledge) the first application of soft clustering to problems in natural language processing. We use this method to cluster words drawn from 44 million words of Associated Press Newswire and 10 million words from Grolier's encyclopedia, and find that language models built from the clusters have substantial predictive power. Our algorithm also extends with no modification to other domains, such as document clustering. 
Our second approach is a nearest-neighbor approach: instead of calculating a centroid for each class, we in essence build a cluster around each word. We compare several such nearest-neighbor approaches on a word sense disambiguation task and find that as a whole, their performance is far superior to that of standard methods. In another set of experiments, we show that using estimation techniques based on the nearest-neighbor model enables us to achieve perplexity reductions of more than 20 percent over standard techniques in the prediction of low-frequency events, and statistically significant speech recognition error-rate reduction.