| J. MOSES, The function of FUNCTION in LISP or why the FUNARG problem should be called the envronment problem, Tech. Rep. memo AI-199, MIT Artificial Intelligence Laboratory, June 1970. |
.... It soon became apparent, however, that the Cilk 4 system was too complicated, and in the Fall of 1996 I decided to experiment with my own little Cilk system (initially called Milk, then Cilk 5) Cilk 4 managed virtual memory explicitly in order to maintain the illusion of a cactus stack [113], but this design decision turned out to be a mistake, because the need of maintaining a shared page table complicated the implementation enormously, and memory mapping from user space is generally slow in current operating systems. The new Cilk 5 runtime system was engineered from scratch with ....
....before they are computed. In addition to explicit synchronization provided by the sync statement, every Cilk procedure syncs implicitly before it returns, thus ensuring that all of its children terminate before it does. Cactus stack. Cilk extends the semantics of C by supporting cactus stack [78, 113, 137] semantics for stack allocated objects. From the point of view of a single Cilk procedure, a cactus stack behaves much like an ordinary stack. The procedure can allocate and free memory by incrementing and decrementing a stack pointer. The procedure views the stack as a linearly addressed space ....
[Article contains additional citation context not shown here]
J. MOSES, The function of FUNCTION in LISP or why the FUNARG problem should be called the envronment problem, Tech. Rep. memo AI-199, MIT Artificial Intelligence Laboratory, June 1970.
....avoid the anomaly that would occur if x and y were summed before each had been computed. A Cilk programmer uses spawn and sync keywords to expose the parallelism in a program, and the Cilk runtime system takes the responsibility of scheduling the procedures efficiently. Cilk uses a cactus stack [15] for stack allocated storage, such as is needed for procedure local variables. As is shown in Figure 2, from the point of view of a single Cilk procedure, a cactus stack behaves much like an ordinary stack. The procedure can allocate and free memory by pushing and popping the stack. The procedure ....
....and continuing to more distant ancestors. The stack becomes a cactus stack when multiple procedures execute in parallel, each with its own view of the stack that corresponds to its call history, as shown in Figure 2. Cactus stacks in Cilk have essentially the same limitations as ordinary C stacks [15]. For instance, a child procedure cannot return to its parent a pointer to an object that it has allocated, since the object will be deallocated automatically when the child returns. Similarly, sibling procedures cannot reference each other s local variables. Just as with the C stack, pointers to ....
Joel Moses. The function of FUNCTION in LISP or why the FUNARG problem should be called the environment problem. Technical Report memo AI-199, MIT Artificial Intelligence Laboratory, June 1970. 12
....library function available in cilk lib.h. Stack memory is automatically deallocated when the Cilk procedure or C function that allocated the memory returns. Heap memory is allocated by the usual malloc( library function and deallocated with free( 2.4. 1 Stack memory Cilk uses a cactus stack [23] for stack allocated storage, such as the storage needed for procedurelocal variables. As shown in Figure 2.4, from the point of view of a single Cilk procedure, a cactus stack behaves much like an ordinary stack. The procedure can allocate and free memory by pushing and popping the stack. The ....
....continuing to more distant ancestors. The stack becomes a cactus stack when multiple procedures execute in parallel, each with its own view of the stack that corresponds to its call history, as shown in Figure 2.4. Cactus stacks in Cilk have essentially the same limitations as ordinary C stacks [23]. For instance, a child procedure cannot return to its parent a pointer to an object that it has allocated, since the object will be deallocated automatically when the child returns. Similarly, sibling procedures cannot reference each other s local variables. Just as with the C stack, pointers to ....
Joel Moses. The function of FUNCTION in LISP or why the FUNARG problem should be called the environment problem. Technical Report memo AI-199, MIT Artificial Intelligence Laboratory, June 1970.
....a nonlocal use refers to a copy of the item. Thus in the code of Figure 123b) the nonlocal use of the down item d within the block refers to a copy of the item d in the remaining code of the routine f. A down item obeys an aspect of the behavior of some variables in the Lisp family of languages [FUNARG] IMPERATIVE] Similar examples of this behavior also are found elsewhere [Dynamic Binding] For example, in the UNIX operating system, a child process receives a copy of its environment variables from its parent. Variables and environment variables of a UNIX shell thus are similar to local items ....
....use of a down item may be considered to refer to a copy of the item. Assume a routine which makes nonlocal use of a down item. Furthermore, assume that the routine is passed as an argument to another routine. As described below, this situation raises the question of when a down item is copied [FUNARG] IMPERATIVE ] Inside the routine passed as an argument, the value of the nonlocal down item can 143 depend on when the item is copied. This issue for a down item does not exist for an updown item, since the nonlocal use of an updown item does not involve a copy of the item. The above issue is ....
[Article contains additional citation context not shown here]
Joel Moses. "The Function of FUNCTION in LISP, or Why the FUNARG Problem Should be Called the Environment Problem", AI Memo No. 199, Artificial Intelligence (AI) Laboratory of the Massachusetts Institute of Technology (MIT), June 1970, pp. 15. (Available at http://www.ai.mit.edu/publications/bibliography/BIB-online.html).
.... It soon became apparent, however, that the Cilk 4 system was too complicated, and in the Fall of 1996 I decided to experiment with my own little Cilk system (initially called Milk, then Cilk 5) Cilk 4 managed virtual memory explicitly in order to maintain the illusion of a cactus stack [113], but this design decision turned out to be a mistake, because the need of maintaining a shared page table complicated the implementation enormously, and memory mapping from user space is generally slow in current operating systems. 2 The new Cilk 5 runtime system was engineered from scratch ....
....before they are computed. In addition to explicit synchronization provided by the sync statement, every Cilk procedure syncs implicitly before it returns, thus ensuring that all of its children terminate before it does. Cactus stack. Cilk extends the semantics of C by supporting cactus stack [78, 113, 137] semantics for stack allocated objects. From the point of view of a single Cilk procedure, a cactus stack behaves much like an ordinary stack. The procedure can allocate and free memory by incrementing and decrementing a stack pointer. The procedure views the stack as a linearly addressed space ....
[Article contains additional citation context not shown here]
J. MOSES, The function of FUNCTION in LISP or why the FUNARG problem should be called the envronment problem, Tech. Rep. memo AI-199, MIT Artificial Intelligence Laboratory, June 1970.
....means of allocating memory must be provided in any useful implementation of a language with shared memory. We implement a heap allocator along the lines of C s malloc and free, but many times a simpler allocation model suffices. Cilk provides stack like allocation in what is called a cactus stack [52, 77, 94] to handle these simple allocations. From the point of view of a single Cilk procedure, a cactus stack behaves much like A B C D E P 1 P 2 P 3 Figure 2 5: A cactus stack. Procedure P 1 spawns P 2 , and P 2 spawns P 3 . Each procedure sees its own stack allocations and the stack allocated ....
....being used by P 1 . The stacks as seen by P 1 and P 2 are independent below the spawn point, but they are identical above the spawn point. Similarly, when procedure P 3 is spawned by P 2 , the cactus stack branches again. Cactus stacks have many of the same limitations as ordinary procedure stacks [77]. For instance, a child procedure cannot return to its parent a pointer to an object that it has allocated from the cactus stack. Similarly, sibling procedures cannot share Figure 2 6: Dag of threads generated by the computation fib(3) from Figure 2 1. The threads of each procedure instance are ....
Joel Moses. The function of FUNCTION in LISP or why the FUNARG problem should be called the envronment problem. Technical Report memo AI-199, MIT Artificial Intelligence Laboratory, June 1970.
....at the beginning of your source file, in addition to the mandatory inclusion of cilk.h. In the remainder of this section, we shall assume that the compatibility library header file is included and so that Cilk s version of these functions is used. 2.4. 1 Stack memory Cilk uses a cactus stack [25] for stack allocated storage, such as is needed for procedure local variables. As is shown shown in Figure 2.4, from the point of view of a single Cilk procedure, a cactus stack behaves much like an ordinary stack. The procedure can allocate and free memory by pushing and popping the stack. The ....
....continuing to more distant ancestors. The stack becomes a cactus stack when multiple procedures execute in parallel, each with its own view of the stack that corresponds to its call history, as shown in Figure 2.4. Cactus stacks in Cilk have essentially the same limitations as ordinary C stacks [25]. For instance, a child procedure cannot return to its parent a pointer to an object that it has allocated, since the object will be deallocated automatically when the child 2.5. SHARED MEMORY 13 A A A A A A B C D E B C B B E D A B C D E Figure 2.4: A cactus stack. Procedure A spawns B and C, ....
Joel Moses. The function of FUNCTION in LISP or why the FUNARG problem should be called the environment problem. Technical Report memo AI-199, MIT Artificial Intelligence Laboratory, June 1970.
....compromise portability. In Cilk 4, the precursor to Cilk 5, we took the work first principle to the extreme. Cilk 4 performed stack based allocation of activation frames, since the work overhead of stack allocation is smaller than the overhead of heap allocation. Because of the cactus stack [25] semantics of the Cilk stack, 6 however, Cilk 4 had to manage the virtual memory map on each processor explicitly, as was done in [27] The work overhead in Cilk 4 for frame allocation was little more than that of incrementing the stack pointer, but whenever the stack pointer overflowed a page, ....
Joel Moses. The function of FUNCTION in LISP or why the FUNARG problem should be called the environment problem. Technical Report memo AI-199, MIT Artificial Intelligence Laboratory, June 1970.
....at the beginning of your source file, in addition to the mandatory inclusion of cilk.h. In the remainder of this section, we shall assume that the compatibility library header file is included and so that Cilk s version of these functions is used. 2.6. 1 Stack memory Cilk uses a cactus stack [23] for stack allocated storage, such as is needed for procedure local variables. As is shown shown in Figure 2.6, from the point of view of a single Cilk procedure, a cactus stack behaves much like an ordinary stack. The procedure can allocate and free memory by pushing and popping the stack. The ....
....continuing to more distant ancestors. The stack becomes a cactus stack when multiple procedures execute in parallel, each with its own view of the stack that corresponds to its call history, as shown in Figure 2.6. Cactus stacks in Cilk have essentially the same limitations as ordinary C stacks [23]. For instance, a child procedure cannot return to its parent a pointer to an object that it has allocated, since the object will be deallocated automatically when the child returns. Similarly, sibling procedures cannot reference each other s local variables. Just as with the C stack, pointers to ....
Joel Moses. The function of FUNCTION in LISP or why the FUNARG problem should be called the environment problem. Technical Report memo AI-199, MIT Artificial Intelligence Laboratory, June 1970.
....allocates size bytes in the local stack frame and returns a pointer to the allocated memory. The memory is not cleared. When the Cilk procedure in which alloca( was called returns, the storage is automatically deallocated. Cactus stacks have many of the same limitations as the ordinary C stacks [15]. For instance, a child procedure cannot return to its parent a pointer to an object that it has allocated, since the object will be deallocated automatically when the child returns. Similarly, sibling procedures cannot share storage that they create on the stack. Just as with the C stack, ....
Joel Moses. The function of FUNCTION in LISP or why the FUNARG problem should be called the environment problem. Technical Report memo AI-199, MIT Artificial Intelligence Laboratory, June 1970.
....to avoid the anomaly that would occur if x and y were summed before each had been computed. A Cilk programmer uses spawn and sync keywords to expose the parallelism in a program, and the Cilk runtime system takes the responsibility of scheduling the procedures efficiently. Cilk uses a cactus stack [8] for stack allocated storage, such as is needed for procedure local variables. As is shown in Figure 2, from the point of view of a single Cilk procedure, a cactus stack behaves much like an ordinary stack. The procedure can allocate and free memory by pushing and popping the stack. The procedure ....
....and continuing to more distant ancestors. The stack becomes a cactus stack when multiple procedures execute in parallel, each with its own view of the stack that corresponds to its call history, as shown in Figure 2. Cactus stacks in Cilk have essentially the same limitations as ordinary C stacks [8]. For instance, a child procedure cannot return to its parent a pointer to an object that it has allocated, since the object will be deallocated automatically when the child returns. Similarly, sibling procedures cannot reference each other s local variables. Just as with the C stack, pointers to ....
Joel Moses. The function of FUNCTION in LISP or why the FUNARG problem should be called the environment problem. Technical Report memo AI-199, MIT Artificial Intelligence Laboratory, June 1970.
....by the five procedures. more distant ancestors. The stack becomes a cactus stack when multiple procedures execute in parallel, each with its own view of the stack that corresponds to its call history, as shown in Figure 2.6. Cactus stacks have many of the same limitations as ordinary C stacks [22]. For instance, a child procedure cannot return to its parent a pointer to an object that it has allocated, since the object will be deallocated automatically when the child returns. Similarly, sibling procedures cannot reference each other s local variables. Just as with the C stack, pointers to ....
Joel Moses. The function of FUNCTION in LISP or why the FUNARG problem should be called the environment problem. Technical Report memo AI-199, MIT Artificial Intelligence Laboratory, June 1970.
....allocates size bytes in the local stack frame and returns a pointer to the allocated memory. The memory is not cleared. When the Cilk procedure in which alloca( was called returns, the storage is automatically deallocated. Cactus stacks have many of the same limitations as the ordinary C stacks [15]. For instance, a child procedure cannot return to its parent a pointer to an object that it has allocated, since the object will be deallocated automatically when the child returns. Similarly, sibling procedures cannot share storage that they create on the stack. Just as with the C stack, ....
Joel Moses. The function of FUNCTION in LISP or why the FUNARG problem should be called the environment problem. Technical Report memo AI-199, MIT Artificial Intelligence Laboratory, June 1970.
....allocation of distributed shared memory. The declaration of tmp in line 8 of matrixmul causes the shared memory stack pointer to be incremented by nb nb blocks. When running in parallel, however, a simple serial stack is insufficient. Instead, Cilk provides a distributed cactus stack [HD68, Mos70, Ste88] that mimics a serial stack in such a way that during execution, every thread can access all the variables allocated by its parents and can address a variable directly by its depth in the stack. Despite the fact that the stack is distributed, allocation can be performed locally with no ....
....runtime system running on the Connection Machine CM 5 parallel supercomputer [LAD 92] We first describe the Cilk language extensions for supporting sharedmemory objects and the diff mechanism [KCDZ94] for managing dirty bits. We then describe the distributed cactus stack [HD68, Mos70, Ste88] memory allocator which the system uses to allocate shared memory objects. Finally, we describe the mechanisms used by the runtime system to maintain dag consistency. The Cilk system on the CM 5 supports concrete shared memory objects of 32 bit words. All consistency operations are ....
[Article contains additional citation context not shown here]
Joel Moses. The function of FUNCTION in LISP or why the FUNARG problem should be called the envronment problem. Technical Report memo AI-199, MIT Artificial Intelligence Laboratory, June 1970.
....of a theory of exceptions. 9. Related Work In the conference on the History of Programming Languages, McCarthy [39] relates that they observed the behaviour of dynamic binding on a program with higher order functions. The bug was fixed by introducing the funarg device and the function construct[39, 48]. Cartwright [5] presents an equational theory of dynamic binding, but his language is extended with explicit substitutions and assumes a call by name parameter passing technique. The motivation of his work fundamentally differs from ours: his goal is to derive a homomorphic model of functional ....
Joel Moses. The Function of FUNCTION in Lisp or Why the FUNARG Problem Should be Called the Environment Problem. Project MAC AI-199, M.I.T., June 1970.
....scope of this paper [19] 9 Related Work In the conference on the History of Programming Languages, McCarthy [25] relates that they observed the behaviour of dynamic binding on a program with higher order functions. The bug was fixed by introducing the funarg device and the function construct [32]. Cartwright [4] presents an equational theory of dynamic binding, but his language is extended with explicit substitutions and assumes a call by name parameter passing technique. The motivation of his work fundamentally differs from ours: his goal is to derive a homomorphic model of functional ....
Joel Moses. The function of function in lisp or why the funarg problem should be called the environment problem. Project MAC AI-199, M.I.T., June 1970.
....style of C s malloc and free, but most of our immediate applications only require stack like allocation for temporary variables and the like. Since Cilk procedures operate in a parallel tree like fashion, however, we needed some kind of parallel stack. We settled on implementing a cactus stack [15, 28, 32] allocator. From the pointof view of a single Cilk procedure, a cactus stack behaves much like an ordinary stack. The procedure can allocate and free memory by incrementing and decrementing a stack pointer. The procedure views the stack as a linearly addressed space extending back from its own ....
....two subcomputations to allocate and free objects independently, even though objects may be allocated with the same address. Procedures can reference common data through the shared portion of their stack address space. Cactus stacks have many of the same limitations as ordinary procedure stacks [28]. For instance, a child thread cannot return to its parent a pointer to an object that it has allocated. Similarly, sibling procedures cannot share storage that they create on the stack. Just as with a procedure stack, pointers to objects allocated on the cactus stack can only be safely passed to ....
Joel Moses. The function of FUNCTION in LISP or why the FUNARG problem should be called the envronment problem. Technical Report memo AI-199, MIT Artificial Intelligence Laboratory, June 1970.
No context found.
Joel Moses, The Function of FUNCTION in LISP or Why the FUNARG Problem Should be Called the Environment Problem, in: 2nd Symposium on Symbolic and Algebraic Manipulation, Los Angeles, 1970; published in SIGSAM Bulletin No. 15, July 1970, pp. 13-27
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