| J. Plevyak, A.A. Chien, and V. Karamcheti. Analysis of dynamic structures for efficient parallel execution. In U. Banerjee, D. Gelernter, A. Nicolau, and D. Padua, editors, Languages and Compilers for Parallel Computing, volume 768 of Lecture Notes in Computer Science, pages 37-- 57, Portland, OR, August 1993. Springer-Verlag. |
....8. 2 Data Dependence Analysis Research on automatically parallelizing serial computations that manipulate pointer based data structures has focused on techniques that precisely represent the run time topology of the heap [Chase et al. 1990; Hendren et al. 1992; Larus and Hilfinger 1988; Plevyak et al. 1993]. The idea is that the analysis can use this precise representation to discover independent pieces of code. To recognize independent pieces of code, the compiler must understand the global topology of the manipulated data structures [Hendren et al. 1992; Larus and Hilfinger 1988] It must ....
PLEVYAK, J., KARAMCHETI, V., AND CHIEN, A. 1993. Analysis of dynamic structures for efficient parallel execution. In Proceedings of the Sixth Workshop on Languages and Compilers for Parallel Computing. Springer-Verlag, Portland, OR.
....data structures. There have been several algorithms proposed by researchers [7, 8, 9, 10, 14] It is a considerably complicated problem, since it involves other pointer analysis techniques as well, such as alias analysis [2, 4, 5, 12, 20] side effect analysis [2, 13] and even shape analysis [1, 6, 16, 18]. These proposed dependence analysis techniques first identify aliases of pointer variables and connections of recursive data structures by examining all pointer assignment statements, and then apply the information to dependence test after read and write sets are gathered. In other words, ....
....analysis is performed on finite directed graphs, called shape graphs, which represent unbounded recursive data structures. The shape graphs presented in this paper are closely related to the Storage Shape Graph (SSG) proposed by Chase et al. 1] the Abstract Storage Graph (ASG) by Plevyak et al. [16], and Shape Graphs by Sagiv et al. 18] Shape graphs have two types of nodes: pointer stances and storage nodes, which can be further divided into simple nodes that represent allocated allocations and summary nodes each of which represents a set of allocated locations. New storage nodes can be ....
[Article contains additional citation context not shown here]
J. Plevyak, A. Chien, and V. Karamcheti. Analysis of dynamic structures for efficient parallel execution. In Proceedings of the 6th International Workshop on Languages and Compilers for Parallel Computing, pages 37--56, Portland, Oregon, August 1993. Lecture Notes in Computer Science, Vol. 768, Springer Verlag.
....an interpreter which supports incremental program development and debugging, a source level symbolic debugger, and performance tools to evaluate parallel program performance. These tools are described in greater detail in the next section. More information on the Concert System can be found in [7, 18, 14, 19, 5]. 1 3.3 Concert Tools for Program Development and Tuning The Concert System supports the development of irregular parallel applications. The challenges for program development are much greater for explicitly parallel programs than for models which retain sequential program semantics; ....
John Plevyak, Vijay Karamcheti, and Andrew Chien. Analysis of dynamic structures for efficient parallel execution. In Proceedings of the Sixth Workshop for Languages and Compilers for Parallel Machines, August 1993.
....large programs. Static cleanness checking, when being conservative, can detect all errors. 1.3 Motivation In this thesis I investigated ways to conservatively discover cleanness violations with minimal false alarms. Rather than developing new algorithms, we exploit pointer analysis techniques [31, 32, 37, 5, 24, 26, 34, 11, 52, 35, 6, 42, 12, 14, 20, 21, 51, 46, 49, 47] to build a conservative algorithm for checking pointer dereferencing. Being interested in static analysis, we do not restrict ourselves to linear time algorithms. We are aware of the scalability problem of these algorithms. One 6 way to achieve scalability is by using global procedure ....
....for programming languages with pointer expressions. Such compilers, in order to be conservative, collect information about the possible value of a pointer expression. It is undecidable to determine what a pointer can pointto, therefore many approximation methods have been developed, among them are [31, 32, 37, 5, 24, 26, 34, 11, 52, 35, 6, 42, 12, 14, 20, 21, 51, 46, 49, 47]. These algorithms differ in precision and complexity; unfortunately, they are difficult to compare. One of the common approaches is to compute aliasing information. A pointer expression p is said to be may alias to pointer expression q at a point pt in the program if there exits a path in the ....
[Article contains additional citation context not shown here]
J. Plevyak, A.A. Chien, and V. Karamcheti. Analysis of dynamic structures for efficient parallel execution. In U. Banerjee, D. Gelernter, A. Nicolau, and D. Padua, editors, Languages and Compilers for Parallel Computing, volume 768 of Lecture Notes in Computer Science, pages 37--57, Portland, OR, August 1993. Springer-Verlag.
....computational and memory overhead; and (2) the node analysis beyond the k limit is very inexact. On the other hand, there are approximations in which each program point has an associated graph which covers all possible shape graphs combinations, instead of all these possible graphs independently [9, 3, 11, 12]) The result of joining all the information, previously represented by different shape graphs, in a single one, is a lack of accuracy in the representation, but on the other hand, it leads to a practical shape analysis algorithm. Larus et al. 9] use a variation of k limited graphs called ....
....for each node in the graph. This way, the k limited drawback is avoided. This algorithm is able to detect a single linked list even when new elements are appended to the end of the list. However, it is not powerful enough to detect insertions of elements in the middle of the list. Plevyak et al.[11] work is based on the Chase s method. They extend the previous Storage Shape Graph into the Abstract Storage Graph (ASG) in order to solve the main problems arising in the first one. However, in the same way as Chase s method, their comparison and compression operations are complex and ....
[Article contains additional citation context not shown here]
J. Plevyak, A. Chien and V. Karamcheti. Analysis of Dynamic Structures for Efficient Parallel Execution. In Languages and Compilers for Parallel Computing, U. Banerjee, D. Gelernter, A. Nicolau and D. Padua, Eds. Lectures Notes in Computer Science, vol 768, 37-57. Berlin Heidelberg New York: Springer-Verlag 1993.
....list insert program also preserves circular list ness . These are rather surprising capabilities. None of the previously developed methods that use graphs to solve shapeanalysis problems are capable of determining that list ness is preserved on these examples (or examples of similar complexity) [JM81, JM82, LH88, CWZ90, Str92, PCK93]. Previous to this paper, it was an open question whether such precision could ever be obtained by any method that uses graphs to model storage usage. Furthermore, as far as we know, no other shape analysis type checking method (whether based on graphs or other principles [HN90, Hen90, LR91, ....
.... programs than previous methods A detailed examination of the differences between our algorithm and previous algorithms is deferred to Section 6; however, a brief characterization of some of the differences is as follows: ffl Previous methods have used allocation sites to name shapenodes [JM82, CWZ90, PCK93]. Allocation site information imposes a fixed partition on the memory. In contrast, our approach deliberately drops information about the concrete locations. There is only an indirect connection to the run time locations: Shape graph nodes are named using a (possibly empty) set of variables. The ....
[Article contains additional citation context not shown here]
J. Plevyak, A.A. Chien, and V. Karamcheti. Analysis of dynamic structures for efficient parallel execution. In U. Banerjee, D. Gelernter, A. Nicolau, and D. Padua, editors, Languages and Compilers for Parallel Computing, volume 768 of Lecture Notes in Computer Science, pages 37--57, Portland, OR, August 1993. Springer-Verlag.
....abstracting several run time locations. For example, it would give highly imprecise results, if the program uses a single routine for allocating nodes (authors suggest the use of function inlining to overcome this. Further, the meet operation is fairly complex. Plevyak, Chien and Karamcheti [PCK94] have extended the model of Chase et al. CWZ90] to handle regular cyclic structures like doubly linked lists and trees with parent pointers, more precisely. They introduce additional nodes called choice nodes, to represent that two given links coming into a summary node would not exist at the ....
....dynamic store in the form of a bounded graph. They basically differ from each other in the way they choose to bound the graph. Further, nodes in the graph are sometimes labeled to facilitate conflict detection between statements [LH88, HPR89] Procedure calls are either not handled [JM81, HPR89, PCK94] or are analyzed with different degrees of precision [JM82, LH88, CWZ90] The restriction of representing several heap locations with one abstract location, forms the main source of imprecision for the store based techniques. To avoid this trap, Hendren and Nicolau [HN90] took a different ....
J. Plevyak, A. Chien, and V. Karamcheti. Analysis of dynamic structures for efficient parallel execution. In U. Banerjee, D. Gelernter, A. Nicolau, and D. Padua, editors, Sixth International Workshop on Languages and Compilers for Parallel Computing, volume 768 of Lecture Notes in Computer Science, pages 37--56. Springer-Verlag, 1994.
....characteristic of these pointer analysis approaches is that they estimate the possible locations referenced by each pointer. Shape analysis is another form of pointer analysis. It differs from previous methods by estimating the possible shapes of recursive data structures accessible from pointers [2, 7, 13, 14]. The shape information can be exploited to parallelize or optimize programs by providing compilers more insight into the properties of data structures used by programs. However, there are cases that even precise shape estimation does not provide useful information for parallelization or ....
....analysis is performed on finite directed graphs, called shape graphs, which represent unbounded recursive data structures. The shape graphs presented in this paper are closely related to the Storage Shape Graph (SSG) proposed by Chase et al. 2] the Abstract Storage Graph (ASG) by Plevyak et al. [13], and Shape Graphs by Sagiv et al. 14] Shape graphs have two types of nodes: pointer stances and storage nodes, which can be further divided into simple nodes that represent allocated allocations and summary nodes each of which represents a set of allocated locations. New storage nodes can be ....
J. Plevyak, A. Chien, and V. Karamcheti. Analysis of dynamic structures for efficient parallel execution. In Proceedings of the 6th International Workshop on Languages and Compilers for Parallel Computing, pages 37--56, Portland, Oregon, August 1993. Lecture Notes in Computer Science, Vol. 768, Springer Verlag.
....is by Ammarguellat [1] A significant portion of the compiler is involved in breaking dependencies in the presence of pointers and structures, so that independent parts of the computation can proceed in parallel. There is a substantial amount of work done on analyzing pointers and structures [14, 17, 7, 12, 20, 13]. Miprac Compiler C C C with sync Convert to SDFG Parallelism Profile Generator Digraph Drawing Generator dot Code SDFG based transformations Prototype Code Generator Back End gnu C executable code for 88k and PPC Figure 1: The structure of the Implicitly Parallel C compiler. There are ....
John Plevyak, Vijay Karamcheti, and Andrew A. Chien. Analysis of dynamic structures for efficient parallel execution. In Workshop on Languages and Compilers for Parallel Computing. 1993.
....attempts to verify strategically placed formulas. A more abstract contribution is to identify and exploit an important niche of finite state regularity in programming language semantics. Related Work Our work does not follow the established tradition of conventional heap based pointer analysis [8, 9, 20, 4, 5, 19, 16, 22, 2], which develops specialized algorithms for answering specific questions about preexisting programs without annotations. We are more general in providing a full, decidable logic in which one may phrase a broad range of questions, and in providing concrete counterexamples whenever a question is ....
John Plevyak, Andrew A. Chien, and Vijay Karamcheti. Analysis of dynamic structures for efficient parallel execution. In of the 6th International on Languages and Compilers for Parallel Computing, number 768 in Lecture Notes in Computer Science, August 1993.
....variables at each program point, the knowledge of the process of creating and traversing dynamic linked data structures by sequences of statements is required for compile time code optimization. Furthermore, although shape analysis can estimate the possible shapes of pointer linked data structures [2, 9, 15, 16], it is inefficient to combine the effects of sequences of statements on dynamic pointer linkeddata structures by comparing all the shape graphs of these statements. The goal of this research is to develop a concise auxiliary structure to represent the alias information of pointers and connection ....
....a single link graph is constructed for each procedure or a block of code, whereas others have to build an auxiliary structure for every statement. Another related field is shape analysis, which is to find the characterization of possible shapes of the dynamic linked data structures in programs [2, 9, 15, 16]. The link graphs in this paper can differentiate the cycles that represent cycles in run time data structures from those that represent unbounded acyclic data structures, while the Storage Shape Graphs (SSG) can not [2] Plevyak et al. adapted the SSA and developed the Abstract Storage Graph ....
[Article contains additional citation context not shown here]
J. Plevyak, A. Chien, and V. Karamcheti. Analysis of dynamic structures for efficient parallel execution. In Proceedings of the 6th International Workshop on Languages and Compilers for Parallel Computing, pages 37--56, Portland, Oregon, August 1993. Lecture Notes in Computer Science, Vol. 768, Springer Verlag.
....abstracting several run time locations. For example, it would give highly imprecise results, if the program uses a single routine for allocating nodes (authors suggest the use of function inlining to overcome this. Further, the meet operation is fairly complex. Plevyak, Chien and Karamcheti [PCK94] have extended the model of Chase et al. CWZ90] to handle regular cyclic structures like doubly linked lists and trees with parent pointers, more precisely. They introduce additional nodes called choice nodes, to represent that two given links coming into a summary node would not exist at the ....
....dynamic store in the form of a bounded graph. They basically differ from each other in the way they choose to bound the graph. Further, nodes in the graph are sometimes labeled to facilitate conflict detection between statements [LH88, HPR89] Procedure calls are either not handled [JM81, HPR89, PCK94, SRW96] or are analyzed with different degrees of precision [JM82, LH88, CWZ90] The restriction of representing several heap locations with one abstract location, forms the main source of imprecision for the store based techniques. To avoid this trap, Hendren and Nicolau [HN90] took a different ....
J. Plevyak, A. Chien, and V. Karamcheti. Analysis of dynamic structures for efficient parallel execution. In U. Banerjee, D. Gelernter, A. Nicolau, and D. Padua, editors, Sixth International Workshop on Languages and Compilers for Parallel Computing, volume 768 of Lecture Notes in Computer Science, pages 37--56. Springer-Verlag, 1994.
....characteristic of these pointer analysis approaches is that they estimate the possible locations referenced by each pointer. Shape analysis is another form of pointer analysis. It differs from previous methods by estimating the possible shapes of recursive data structures accessible from pointers [2, 7, 15, 16]. The shape information can be exploited to parallelize or optimize programs by providing compilers more insights into the properties of data structures used by programs. However, there are cases that even precise shape estimation does not provide useful information for parallelization or ....
....have to be executed sequentially. 5 Related Work Various pointer analysis techniques have been proposed, such as alias analysis [3, 5, 6, 9, 17] side effect analysis [3, 10] conflict interference analysis for programs with dynamic pointer linked data structures [8, 11] and shape analysis [2, 7, 15, 16]. Another interesting field is pointer analysis on objected oriented programs [12, 14] The distinction of this work from others is that it performs pointer analysis and dependence test with the knowledge of traversal patterns by utilizing the DEF USE information of pointer statements. Symbolic ....
J. Plevyak, A. Chien, and V. Karamcheti. Analysis of dynamic structures for efficient parallel execution. In Proceedings of the 6th International Workshop on Languages and Compilers for Parallel Computing, pages 37--56, Portland, Oregon, August 1993. Lecture Notes in Computer Science, Vol. 768, Springer Verlag.
....relationship between problem structure and program stucture 2 . 2 Some researchers have attempted to predict the shapes of linked structures which will form at runtime. Such work has seen some success, although only certain kinds of information are made available through these techniques. [12] The second flaw in linked structures is that they are quite difficult to construct concurrently. Consider the problem of adding a single object to an existing linked structure in such a way that the new object is accessible from (pointed to by) several old objects. One of the older objects must ....
....to predict interobject data relationships despite its programming model, in which every structure must either be built dynamically of linked objects or mapped onto a vector of objects. As a result, Concert relies on sophisticated techniques to extract structural knowledge about linked structures [12]. This is a significant accomplishment. However, we feel that the Concert programming model is not as expressive as it could be, given its requirement that all problems be mapped onto vectors or built from linked structures, and we feel that this limitation hinders both the programmer and the ....
J. Plevyak, V. Karamcheti, and A. Chien. Analysis of dynamic structures for efficient parallel execution. Languages and Compilers for Parallel Machines, 1993.
....a linked list) at best the dependence test will prove that only the first k iterations are indepen219 dent. It should be noted that the conservativeness of such k limited approaches has been addressed to some degree by the work of Chase et al. CWZ90] and later improved upon by Plevyak et al. PCK94] However, these techniques do not propose a more accurate dependence test, but rather a more accurate data structure analysis which extends the k limited scheme to provide better information in the case of linked lists and trees. 2.4 PDSDP Only These approaches are based on a more powerful ....
J. Plevyak, A. Chien, and V. Karamcheti. Analysis of dynamic structures for efficient parallel execution. In U. Banerjee, D. Gelernter, A. Nicolau, and D. Padua, editors, Sixth International Workshop on Languages and Compilers for Parallel Computing, volume 768 of Lecture Notes in Computer Science, pages 37--56. Springer-Verlag, 1994.
....that number of times. This idea of procedure cloning has proven beneficial in interprocedural compiler analysis [11] If the bounds of the eval loop are not known at compile time or are unreasonably high for cloning, then we can apply a technique used in representing recursive data structures [46]. The idea is to clone a summary process definition that is treated differently because it is representing more than one process. The edge elimination algorithm requires a slight modification to ensure that an edge in which the source or sink resides in a summary CFG is not removed from G. 6 ....
John Plevyak, Vijay Karamcheti, and Andrew A. Chien. Analysis of dynamic structures for efficient parallel execution. In Languages and Compilers for Parallel Machines, 1993.
....[App85, BH86, WS92] and computational geometry [Sam90] as are sparse matrices in circuit simulations [Kun86] The preferred method of analysis is an automatic one, in which the compiler deduces the properties of the data structure and transforms the program accordingly. However, such approaches [JM81, LH88, HPR89, CWZ90, HN90, Deu92, HA92, LR92, CBC93, PKC93] are quite limited in the types of data structures they can recognize (typically one and two way linked lists, and trees) A second approach is a manual one, in which the programmer annotates their program with directives, thereby directly supplying the compiler with the necessary analysis ....
J. Plevyak, V. Karamcheti, and A. Chien. Analysis of dynamic structures for efficient parallel execution. In D. Gelernter, A. Nicolau, and D. Padua, editors, Proceedings of the 6th Annual Workshop on Languages and Compilers for Parallel Computing, pages c1--c20, August 1993.
.... and it is challenging to prove that invariants are reestablished once a sequence of operations is finished [9] In the past two decades, many shape analysis algorithms have been developed that can automatically identify shape invariants in some programs that manipulate heap allocated storage [11, 12, 15, 10, 2, 21, 1, 16, 22, 19]. A common feature of these algorithms is that they represent heap cells by shapenodes and sets of indistinguishable run time locations by a single shape node, often called a summary node [2] One Supported in part by the U.S. Israel BSF under grant 96 00337. Address: Dept. of Comp. Sci. ....
....This technique suffices to explain the algorithms of [11, 10, 2, 21] 1.1.3 Materialization of New Nodes from Summary Nodes One of the magical aspects of [19] is materialization , in which a transfer function splits a summary node into two separate nodes. This operation is also discussed in [2, 16]. This turns out to be important for maintaining accuracy in the analysis of loops that advance pointers through data structures. The parametric framework provides insight into the workings of materialization. It shows that the essence of materialization involves a step (called focus , discussed ....
[Article contains additional citation context not shown here]
J. Plevyak, A.A. Chien, and V. Karamcheti. Analysis of dynamic structures for efficient parallel execution. In U. Banerjee, D. Gelernter, A. Nicolau, and D. Padua, editors, Languages and Compilers for Parallel Computing, volume 768 of Lec. Notes in Comp. Sci., pages 37--57, Portland, OR, August 1993. Springer-Verlag.
....program also preserves circular list ness . These are rather surprising capabilities. None of the previously developed methods that use graphs to solve shape analysis problems are capable of determining that list ness is preserved on these examples (or examples of similar complexity) [JM81, JM82, LH88, CWZ90, Str92, PCK93]. Previous to this paper, it was an open question whether such precision could ever be obtained by any method that uses graphs to model storage usage. Furthermore, as far as we know, no other shape analysis type checking method (whether based on graphs or other principles [HN90, Hen90, LR91, ....
....empty) set of variables . The variable set of a shape graph node in the shape graph for program point v consists of variables that, for some execution sequence ending at v, must all point to the same run time location. Previous methods have used allocation sites to represent run time locations 5 [JM82, CWZ90, PCK93]. Allocation site information alone is insufficient to handle programs that perform significant destructive updating, such as the destructive list reversal program, as noted by Chase, Wegman, and Zadeck [CWZ90] ffl Like other shape analysis methods, our method clusters collections of run time ....
[Article contains additional citation context not shown here]
J. Plevyak, A.A. Chien, and V. Karamcheti. Analysis of dynamic structures for efficient parallel execution. In U. Banerjee, D. Gelernter, A. Nicolau, and D. Padua, editors, Languages and Compilers for Parallel Computing, volume 768 of Lecture Notes in Computer Science, pages 37--57, Portland, OR, August 1993. Springer-Verlag.
....equals the efficiency of the sequential language C on the Livermore Kernels, a demanding set of numerical benchmarks. While 1 We consider only languages that support object level concurrency. For a discussion of the alternatives see Section 5. 2 We defer to the wealth of research in this area [30, 39, 22, 36, 3]. the Livermore Kernels do not benefit greatly from object orientation, all the arrays in the COOP version of the kernels are implemented as concurrent objects, and accessed via object method invocation. Thus to achieve efficiency comparable to C, our compiler must eliminate virtually all of the ....
....sequential efficiency forms an important basis for high ab solute performance through hardware parallelism. However, it is only half of the solution. The effectiveness of the optimizations depends the data being available (local and not currently in use) Work is underway on both static analyses [39] and runtime techniques [30] to enable the system to ensure availability and thus apply the optimizations in a more informed manner, with the goal of freeing the programmer from the burden of data and task placement. We have presented a simple programming model and implementation model for a pure ....
John Plevyak, Vijay Karamcheti, and Andrew Chien. Analysis of dynamic structures for efficient parallel execution. In Proceedings of the Sixth Workshop for Languages and Compilers for Parallel Machines, August 1993.
....for a variety of grain size optimizations. The Concert system uses a structure analysis based on Abstract Storage Graphs (ASG s) which is capable of precise analysis of complex dynamic structures such as singly and doubly linked lists, object hierarchies, and octrees. The Abstract Storage Graph [30] is an enhancement of Chase s Storage Shape Graph (SSG) 8] which adds distinct node and reference types as well as identity paths to achieve more precise analysis. As with SSG s, the analysis is based on a data flow framework. Within the framework, we define the lattice of solutions to be an ....
John Plevyak, Vijay Karamcheti, and Andrew Chien. Analysis of dynamic structures for efficient parallel execution. Revised Paper, submitted to LCPM '93.
....model synthesizes a global namespace by detecting remote object invocations and translating them into communication operations. To hide latency of remote invocations, the execution model also implements software multi threading on commercial single threaded microprocessors. The Concert compiler [32, 31, 36, 33, 34] implements a suite of interprocedural transformations, including global concrete type inference, inlining, and interprocedural cloning and constant propagation, and conventional scalar optimizations. The optimizations achieve sequential performance equal to that of C for a large number of ....
....and access cycle [26] information. In addition, the pervasive use of heapbased data structures also complicates dataflow analysis of object access pattern. However, the non recursive data structures, used in IC CEDAR and similar applications, are amenable to high level data structure descriptions [34, 16], based on which precise data access patterns can be extracted. We are currently developing a compiler framework that uses high level data structure annotations in conjunction with concurrency analysis to compile this class of applications. For more dynamic applications where the data access ....
John Plevyak, Vijay Karamcheti, and Andrew Chien. Analysis of dynamic structures for efficient parallel execution. In Proceedings of the Sixth Workshop for Languages and Compilers for Parallel Machines, pages 37-- 56, August 1993.
No context found.
J. Plevyak, A.A. Chien, and V. Karamcheti. Analysis of dynamic structures for efficient parallel execution. In U. Banerjee, D. Gelernter, A. Nicolau, and D. Padua, editors, Languages and Compilers for Parallel Computing, volume 768 of Lecture Notes in Computer Science, pages 37-- 57, Portland, OR, August 1993. Springer-Verlag.
No context found.
J. Plevyak, A.A. Chien, and V. Karamcheti. Analysis of dynamic structures for efficient parallel execution. In U. Banerjee, D. Gelernter, A. Nicolau, and D. Padua, editors, Languages and Compilers for Parallel Computing, volume 768 of Lecture Notes in Computer Science, pages 37--57, Portland, OR, August 1993. Springer-Verlag.
No context found.
J. Plevyak, V. Karamcheti, and A. Chien. Analysis of dynamic structures for efficient parallel execution. In Proceedings of the Sixth Workshop on Languages and Compilers for Parallel Computing, Portland, OR, August 1993.
First 50 documents
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC