| Nikhil, R. S. ID Version 90.0 Reference Manual. Computation Structures Group Memo 284-1, Laboratory for Computer Science, Massachusetts Institute of Technology, July 1990. |
....generates a dynamic stream of instructions that are processed with a set of time stamping rules that estimate the timing behavior of the code on the simulated processor. The first time stamp based processor simulator that we know of was first used for the GITA tagged token dataflow processor [13]. Austin and Sohi s paragraph tool for performing analysis on Dynamic Dependency Graphs shares some similarities with this work, but was not specifically designed to provide estimates of superscalar processor performance [2] This work describes how timestamping can be used to simulate modern ....
Rishiyur S. Nikhil, P. R. Fenstermacher, and J. E. Hicks. Id World Reference Manual (for LISP Machines). Unnumbered technical report, Massachusetts Institute of Technology, Laboratory for Computer Science, Computation Structures Group, 1988.
....favorite sorting algorithm: quicksort [ quicksort (x:xs) quicksort [y y xs, y x ] x] quicksort [y y xs, y =x] To further support the use of lists, Haskell has special syntax for arithmetic sequences, which are best explained by a series of examples: 1. 10] [1,2,3,4,5,6,7,8,9,10] [1,3. 10] 1,3,5,7,9] 1,3. 1,3,5,7,9, infinite sequence) More will be said about arithmetic sequences in Section 8.2, and infinite lists in Section 3.4. 2.4.2 Strings As another example of syntactic sugar for built in types, we note that the literal string hello is actually ....
....initial request to be submitted, in turn allowing the first response to be generated; the engine is now primed, and the recursion takes care of the rest. As an example of this program in action, if we define: init = 0 next resp = resp process req = req 1 then we see that: take 10 reqs ) [0,1,2,3,4,5,6,7,8,9] As another example of the use of lazy patterns, consider the definition of Fibonacci given earlier: fib = 1 : 1 : a b (a,b) zip fib (tail fib) We might try rewriting this using an as pattern: fib (1:tfib) 1 : 1 : a b (a,b) zip fib tfib ] This version of fib has the ....
[Article contains additional citation context not shown here]
R.S. Nikhil. Id (version 90.0) reference manual. Technical report, Massachusetts Institute of Technology, Laboratory for Computer Science, September 1990.
....list comprehensions. List comprehensions were introduced in KHC and its successor Miranda [Tur85] to construct lists without explicitly applying recursion. PJ87] describes how to transform list comprehensions into recursive functions. The concept was later extended to array comprehensions in Id [Nik88] and taken over by Haskell [HPW 92] Id also provides loops as a syntactic sugar for expressing tail recursive functions. While the basic idea of iterated compositions is to express computational patterns without constructing an intermediate data structure, one can simulate their effect by ....
Rishiyur S. Nikhil. ID (Version 88.0) Reference Manual. Computation Structures Group Memo 284, Laboratory for Computer Science, Massachusetts Institute of Technology, Cambridge, MA, March 1988.
....eventually consume all the tokens that it produces. In a multi node dataflow machine such as Monsoon, one node may send a token to another, causing the second node to concurrently perform part of the computation. In this way, many nodes may cooperate on solving a single problem. The language Id [8] is a parallel language designed with dataflow processors in mind. From this language a compiler can directly generate dataflow graphs. These graphs allow the executable code to retain the parallelism that was inherent in the original algorithm. This allows a dataflow machine to exploit many ....
R. S. Nikhil. Id Nouveau Reference Manual, Part I: Syntax. Technical Report, Computation Structures Group, Massachusetts Institute of Technology, Cambridge MA, April 1987.
....groups. In the context of functional languages, Li and Chen [22, 23] propose automatic array alignment and partitioning techniques for the functional language Crystal [30] Rogers and Pingali [29] present some work where the user specifies data decomposition for the functional language Id Noveau [25]. In [27] M. O Boyle describes program and data transformations for executing a restricted version of SISAL on distributed memory machines. The techniques proposed are intended to solve problems of load imbalance, data alignment, data distribution, and partitioning of loop iterations. In the ....
R.S. Nikhil. Id (version 90.0) reference manual. Technical Report CSG Memo 284-1, Massachusetts Institute of Technology, Laboratory for Computer Science, 1990.
....extensions to Common Lisp [55] The large number of features in Common Lisp, and the difficulty of extending their semantics to parallel execution, preclude the implementation of full nested data parallelism. This is strong motivation for a simple core language. The parallel languages ID [43], SISAL [40] and Crystal [22] although not explicitly data parallel, do support fine grained parallelism. They also support nested data structures, although there has been little research on implementing nested parallelism for these languages. There are also several serial languages that supply ....
Rishiyur S. Nikhil. ID Version 90.0 Reference Manual. Computation Structures Group Memo 284-1, Laboratory for Computer Science, Massachusetts Institute of Technology, July 1990.
....[20] and techniques for automatic restructuring and parallelization of programs [20, 26, 25] Implicit parallelism is found in functional languages where there is no predefined order of execution other than the order dictated by the data dependences in the program. SISAL [16] Crystal[23] Id [18], and Haskell [15] are examples of functional languages proposed as alternatives for parallel programming. This work was supported in part by LLNL Grant B282313 One of the major criticisms of functional languages is that they are not as efficient as their imperative counterparts when solving ....
R.S. Nikhil. Id (version 90.0) reference manual. Technical Report CSG Memo 284-1, Massachusetts Institute of Technology, Laboratory for Computer Science, 1990.
....in the pursuit of efficiency, it is often necessary to compromise some of the elegance and simplicity of such approaches. McCOLL : GENERAL PURPOSE PARALLEL COMPUTING To a large extent, this has already happened in dataflow implementations of functional languages, e.g. the implementation of Id [199] on Monsoon [206] Modern dataflow architectures [128, 129, 200, 201, 206] are in many important respects quite close to those described in this paper. For example, they must achieve latency tolerance through multithreading since, in the dataflow model, memory accesses are split transactions ....
....computing, based on the bulk synchronous parallel (BSP) model of computation [258] Although this approach has many strengths, we would not want to argue that it is the only viable approach. Two alternatives, which merit serious consideration, are the actor model [9, 10] and the dataflow model [128, 129, 199, 200, 206]. The most fundamental difference between these two approaches and the BSP model is that they both have at their core the idea of local (usually pairwise) synchronisation events, whereas the BSP model, as well as various PRAM [80, 89, 149, 224, 259, 266] and data parallel models [43, 123] have ....
R S Nikhil. Id - Language Reference Manual. Version 90.1. Computation Structures Group Memo 284-2, Laboratory for Computer Science, Massachusetts Institute of Technology, July 1991.
....b( x) of the final state. Accumulative computations of this kind, involving associative operators, are commonly encountered in a wide variety of contexts, to the point that some authors have proposed augmenting programming languages with constructs designed specifically to handle such computations [13, 14]. It is easy to show that this computation can be expressed using a procedure p defined as follows (to keep the program simple, the accumulator has not been made explicit here: it can easily be transformed to a tail recursive procedure that manipulates an accumulator explicitly: see, for example, ....
R. S. Nikhil, Id Language Reference Manual, Computation Structures Group Memo 284-2, Lab. for Computer Science, Massachusetts Institute of Technology, Cambridge, MA, July 1991.
....extensions to Common Lisp [40] The large number of features in Common Lisp, and the difficulty of extending their semantics to parallel execution, preclude the implementation of full nested data parallelism. This is the main reason why we wanted a simple core language. The parallel languages ID [32], SISAL [30] and Crystal [18] although not explicitly data parallel, do support fine grained parallelism. They also support nested data structures, although there has been little research on implementing nested parallelism for these languages. There are also several serial languages that supply ....
R. S. Nikhil. ID Version 90.0 Reference Manual. Computation Structures Group Memo 284-1, Laboratory for Computer Science, Massachusetts Institute of Technology, July 1990.
.... we have developed somewhat more efficient variants of the algorithm [22] 7 Related Work Finally, we want to relate the concepts of Paclib to other parallel systems: Functional Programming: The Paclib task model is influenced by functional programming [25] and related concepts as dataflow [16] and guarded horn clause languages [11] Paclib tasks are similar to the futures of Multilisp [12] However, Paclib uses an explicit synchronization function to access task results, while futures are transparent to the program. This is possible since in Multilisp all operand types are checked ....
....Linda [8] allows the non deterministic selection of tuples that match a given pattern. Message passing languages like Occam [14] offer the non deterministic reception of messages from different sources. Streams: Streams are a concept of non strict functional languages [25] data flow languages [16] and guarded horn clause languages [11] In contrast to message passing channels, streams are first order objects that can be accessed by many tasks simultaneously. There also exist more general forms of non strict data structures (e.g. I Structures [2] Garbage Collection: There is a large ....
R. S. Nikhil. ID (Version 88.0) Reference Manual. Computation Structures Group Memo 284, Laboratory for Computer Science, Massachusetts Institute of Technology, Cambridge, MA, March 1988.
....of control. When using such a multithreaded programming model, the runtime system must schedule these tasks and dynamically spread them across the machine in order to load balance the computation. The most ambitious of the multithreaded languages are the implicitly parallel languages, such as Id[Nik91] In these languages the programmer expresses his algorithm at a high level without any mention of parallelism. Then, a sophisticated compiler automatically breaks the program up into a fine grained multithreaded program. In this model every memory reference and every interprocedural ....
....to offset the runtime scheduling and synchronization overhead. The static set of sequential threads making up the multithreaded program can either be generated implicitly by a sophisticated compiler, or explicitly by the programmer. Programming languages advocating the implicit style, such as Id [Nik91] and Sisal [MSA 85] usually take a high level, functional, description of the actual problem, extract the available parallelism from the declaration and partition it into sequential threads. While implicit programming languages simplify the programming task for some problems, other problems ....
R.S. Nikhil. ID language reference manual. Computation Structure Group Memo 284-2, Massachusetts Institute of Technology, 545 Technology Square, Cambridge, Massachusetts 02139, July 1991.
....an important aspect of functional languages is their inherent parallelism since the languages lack side effects, it is safe to evaluate subexpressions in parallel. Furthermore researchers have presented many implementation techniques to take advantage of this parallelism, including data flow [24] parallel graph reduction [17, 26] and various compiler techniques [11] Such work has suggested that it might not be necessary to add explicit parallel constructs to functional languages to get adequate parallelism from functional languages. There has been little study, however, of how much ....
Rishiyur S. Nikhil. ID Version 90.0 Reference Manual. Computation Structures Group Memo 284-1, Laboratory for Computer Science, Massachusetts Institute of Technology, July 1990.
....aspect of purely functional languages is their inherent parallelism since the languages lack side effects, subexpressions may safely be evaluated in parallel. Furthermore, researchers have presented many implementation techniques to take advantage of this parallelism, including data flow [28], parallel graph reduction [20, 30] and various compiler techniques [14] Such work has suggested that it might not be necessary to add explicit parallel constructs to functional languages to get adequate parallelism from functional languages. There has been little study, however, of how much ....
Rishiyur S. Nikhil. ID Version 90.0 Reference Manual. Computation Structures Group Memo 284-1, Laboratory for Computer Science, Massachusetts Institute of Technology, July 1990.
....computer on a conventional parallel machine (see (Schreiner 1990) The extensive research on functional (respectively dataflow) programming has already resulted in a number of well known functional languages (Miranda ( Turner 1985) ML CHAPTER 1. INTRODUCTION 6 ( Harper et al. 1988) ID ((Nikhil 1988)) that correspond in many essential features. This shows that the functional programming community has reached a well founded consensus on the state of the art. It is not our aim to enrich this variety of languages by a new language with extraordinary new facilities. In fact, any of the ....
Rishiyur S. Nikhil. ID (Version 88.0) Reference Manual. Computation Structures Group Memo 284, Laboratory for Computer Science, Massachusetts Institute of Technology, Cambridge, MA, March 1988.
....its incoming edges are present. The instruction consumes its input operands producing result tokens emitted along its output edges. These dataflow graphs are generated through a well understood compilation process [12] from code written in a high level, parallel, declarative language called Id [6]. In dataflow graphs, it is the data dependencies rather than the temporal order that is specified between the instruction vertices. The actual execution schedule of instructions in a dataflow graph is resolved at run time, respecting the partial order specified by the dataflow graph. Such a ....
R. Nikhil, Reference Manual for Id 90, Computation Structures Group Memo 284-1, Dept. of Electrical Engineering and Computer Science, Massachusetts Institute of Technology, Cambridge, MA, September 1990.
No context found.
Nikhil, R. S. ID Version 90.0 Reference Manual. Computation Structures Group Memo 284-1, Laboratory for Computer Science, Massachusetts Institute of Technology, July 1990.
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