skip to main content
article
Open Access

MULTILISP: a language for concurrent symbolic computation

Published:01 October 1985Publication History
Skip Abstract Section

Abstract

Multilisp is a version of the Lisp dialect Scheme extended with constructs for parallel execution. Like Scheme, Multilisp is oriented toward symbolic computation. Unlike some parallel programming languages, Multilisp incorporates constructs for causing side effects and for explicitly introducing parallelism. The potential complexity of dealing with side effects in a parallel context is mitigated by the nature of the parallelism constructs and by support for abstract data types: a recommended Multilisp programming style is presented which, if followed, should lead to highly parallel, easily understandable programs.

Multilisp is being implemented on the 32-processor Concert multiprocessor; however, it is ultimately intended for use on larger multiprocessors. The current implementation, called Concert Multilisp, is complete enough to run the Multilisp compiler itself and has been run on Concert prototypes including up to eight processors. Concert Multilisp uses novel techniques for task scheduling and garbage collection. The task scheduler helps control excessive resource utilization by means of an unfair scheduling policy; the garbage collector uses a multiprocessor algorithm based on the incremental garbage collector of Baker.

References

  1. 2 ACKERMAN, W., AND DENNIS, J. VAL--A Value-Oriented Algorithmic Language. LCS Tech. Rep. TR-218. Massachusetts Institute of Technology, Laboratory for Computer Science, Cambridge, Mass., 1979. Google ScholarGoogle Scholar
  2. 3 ANDERSON, T. The Design of a Multiprocessor Development System. Tech. Rep. TR-279, Massachusetts Institute of Technology, Laboratory for Computer Science, Cambridge, Mass., Sept. 1982. Google ScholarGoogle Scholar
  3. 4 ARVIND, GOSTELOW, $. G., AND PLOUrFE, W. An Asynchronous Programming Langauge and Computing Machine. Rep. TR114a, University of California, Irvine, 1978.Google ScholarGoogle Scholar
  4. 5 BACKUS, J. Can programming be liberated from the von Neumann style? A functional style and its algebra of programs. Commun. ACM 21, 8 (Aug. 1978). Google ScholarGoogle Scholar
  5. 6 BAKER, H. Actor Systems for Real-Time Computation. Tech. Rep. TR-197, Massachusetts Institute of Technology, Laboratory for Computer Science, Cambridge, Mass., Mar. 1978. Google ScholarGoogle Scholar
  6. 7 BAKER, H., AND HEWITT, C. The Incremental Garbage Collection of Processes. Artificial Intelligence Laboratory Memo 454, Massachusetts Institute of Technology, Cambridge, Mass., Dec. 1977. Google ScholarGoogle Scholar
  7. 8 BBN. Development of a Voice Funnel System: Quarterly Technical Report. BBN Reports 4845 (Jan. 1982) and 5284 (Apr. 1983). Bolt, Beranek, and Newman, Cambridge, Mass.Google ScholarGoogle Scholar
  8. 9 BOUKNIGHT, W. J., ET AL. The Illiac IV system. Proc. IEEE 60, 4 (Apr. 1972), 369-388.Google ScholarGoogle Scholar
  9. 10 BROOKS, F. The Mythical Man-Month: Essays on Software Engineering. Addison-Wesley, Reading, Mass., 1975. Google ScholarGoogle Scholar
  10. 11 COHEN, S., ROSNER, R., ANO ZIDON, A. Paralisp Simulator (reference manual). Hebrew University Computer Science Dep. Res. Rep. 83-2, Jerusalem, Israel, Jan. 1983.Google ScholarGoogle Scholar
  11. 12 CORRELL, S. 8-1 uniprocessor architecture. S-1 Project 1979 Annual Report. Lawrence Livermore National Lab., Livermore, Calif., 1979.Google ScholarGoogle Scholar
  12. 13 DEMINET, J. Experience with multiprocessor algorithms. IEEE Trans. Comput. C-31, 4 (Apr. 1982), 278-288.Google ScholarGoogle Scholar
  13. 14 DIJKSTRA, E.W. The structure of the "THE" multiprogramming system. Commun. ACM 11, 5 (May 1968). Google ScholarGoogle Scholar
  14. 15 DIJKSTRA, E. W., ET AL. On-the-fly garbage collection: An exercise in cooperation. In Language Hierarchies and Interfaces (Lecture Notes in Computer Science 46). Springer Verlag, New York, 1976. Google ScholarGoogle Scholar
  15. 16 FODERARO, J. K., SKLOWER, K., AND LAYER, K. The Franz Lisp Manual. University of California UNIX distribution, 1983.Google ScholarGoogle Scholar
  16. 17 FRIEDMAN, D., AND WISE, D. Aspects of applicative programming for parallel processing. IEEE Trans. Comput. C-27, 4 (Apr. 1978), 289-296.Google ScholarGoogle Scholar
  17. 18 FRIEDMAN, D., AND WLSE, D. CONS should not evaluate its arguments. In S. Michaelson and R. Milner (Eds.), Automata, Languages and Programming, Edinburgh University Press, Edinburgh, 1976, pp. 257-284.Google ScholarGoogle Scholar
  18. 19 GABRIEL, R. P., AND MCCARTHY, J. Queue-based multiprocessing Lisp. Presented at the ACM Syrnp. Lisp and Functional Programming (Austin, Tex., Aug. 1984). Google ScholarGoogle Scholar
  19. 20 GOLDBERG, A., AND ROBSON, D. SmaUtalk-80: The Language and Its Implementation. Addison- Wesley, Reading, Mass., 1983. Google ScholarGoogle Scholar
  20. 21 GOTTLIEB, A., ET AL. The NYU ultracomputer--Designing an MIMD shared memory parallel computer. IEEE Trans. Comput. C-32, 2 (Feb. 1983), 175-189.Google ScholarGoogle Scholar
  21. 22 GOTTLIEB, A., LUBACHEVSKY, B., AND RUDOLPH, L. Basic techniques for the efficient coordination of very large numbers of cooperating sequential processors. ACM Trans. Program. Lang. Syst. 5, 2 (Apr. 1983), 164-189. Google ScholarGoogle Scholar
  22. 23 GURD, J., KIRKHAM, C., AND WATSON, I. The Manchester prototype datafiow computer. Commun. ACM 28, I (Jan. 1985), 34-52. Google ScholarGoogle Scholar
  23. 24 HALSTEAD, R. Architecture of a myriaprocessor. In IEEE COMPCON Spring 81 (San Francisco, Feb. 1981), 299-302.Google ScholarGoogle Scholar
  24. 25 HALSTEAD, R. Architecture of a myriaprocessor. In J. Solinsky (Ed.), Advanced Computer Concepts. La JoIla Institute, La Jolla, Calif., 1981.Google ScholarGoogle Scholar
  25. 26 HALSTEAD, R. Implementation of Multilisp: Lisp on a multiprocessor. In Proc. ACM Symp. Lisp and Functional Programming (Austin, Tex., Aug. 1984), 9-17. Google ScholarGoogle Scholar
  26. 27 HALSTEAD, R. Reference Tree Networks: Virtual Machine and Implementation. M.I.T. Laboratory for Computer Science Tech. Rep. TR-222, Cambridge, Mass., July 1979.Google ScholarGoogle Scholar
  27. 28 HALSTEAD, R., AND LOAIZA, J. Exception handling in Multilisp. Presented at the 1985 Int. Conf. Parallel Processing (St. Charles, Ill., Aug. 1985).Google ScholarGoogle Scholar
  28. 29 HAYNES, C., FRIEDMAN, D., AND WAND, M. Continuations and coroutines. In Proc. ACM Syrup. on Lisp and Functional Programming (Austin, Tex., Aug. 1984), 293-298. Google ScholarGoogle Scholar
  29. 30 HENDERSON, P., AND MORRIS, J.H. A lazy evaluator. Proc. 3rd ACM Symposium on Principles of Programming Languages (1976), 95-103. Google ScholarGoogle Scholar
  30. 31 HEWITT, C. Viewing control structures as patterns of passing messages. Working Paper 92, Artificial Intelligence Laboratory, M.I.T., Cambridge, Mass., Apr. 1976.Google ScholarGoogle Scholar
  31. 32 HOARE, C. A.R. Communicating sequential processes. Commun. ACM 21, 8 (Aug. 1978). Google ScholarGoogle Scholar
  32. 33 HOARE, C. A.R. Monitors: An operating system structuring concept. Commun. ACM 17, 10 (Oct. 1974), 549-557. Google ScholarGoogle Scholar
  33. 34 ICHBIAH, J. D., ET AL. Preliminary ADA reference manual. SIGPLAN Not. 14, 6, Part A (June 1979). Google ScholarGoogle Scholar
  34. 35 IEEE Task P796/D2. Proposed microcomputer system 796 bus standard. IEEE Comput. 13, 10 (Oct. 1980), 89-105.Google ScholarGoogle Scholar
  35. 36 KELLSR, R. Redifiow multiprocessing. IEEE COMPCON Spring 84 (San Francisco, Feb. 1984).Google ScholarGoogle Scholar
  36. 37 KELLER, R., AND LIN, F. Simulated performance of a reduction-based multiprocessor. IEEE Comput. 17, 7 (July 1984), 70-82.Google ScholarGoogle Scholar
  37. 38 KERN1OHAN, B., AND RITCHIE, D. The C Programming Langauge. Prentice-Hall, Englewood Cliffs, N.J., 1978.Google ScholarGoogle Scholar
  38. 39 KNUEVEN, P., HIBBARD, P., AND LEVERETT, B. A language system for a multiprocessor environment. In Proc. 4th Int. Conf. Design and Implementation of Algorithmic Languages (Courant Institute of Mathematical Studies, New York, June 1976), 264-274.Google ScholarGoogle Scholar
  39. 40 KUCK, D., MURAOKA, Y., AND CHEN, S.-C. On the number of operations simultaneously executable in Fortran-like programs and their resulting speedup. }EEE Trans. Comput. C-21, 12 (Dec. 1972), 1293-1310.Google ScholarGoogle Scholar
  40. 41 LAMPSON, B., AND SPROULL, R. An open operating system for a single-user machine. In Proc. 7th Syrup. Operating Systems Principles (Asilomar, Calif., Dec. 1979), 98-105. Google ScholarGoogle Scholar
  41. 42 MARTI, J., AND FITCH, J. The Bath concurrent Lisp machine. EUROCAM '83(Lecture Notes in Computer Science). Springer Verlag, New York, 1983. Google ScholarGoogle Scholar
  42. 43 MCCARTHY, J., ET AL. LISP 1.5 Programmer's Manual. M.I.T. Press, Cambridge, Mass., 1965. Google ScholarGoogle Scholar
  43. 44 MCGRAW, J., ET AL. SISAL--Streams and Iteration in a Single-Assignment Language. Language Reference Manual (version 1.0), Lawrence Livermore National Lab., Livermore, Calif., July 1983.Google ScholarGoogle Scholar
  44. 45 MOLLER-NIELSEN, P., AND STAUNSTRUP, J. Experiments with a Multiprocessor. Tech. Rep. PB-185, Aarhus University Computer Science Dep., Aarhus, Denmark, Nov. 1984.Google ScholarGoogle Scholar
  45. 46 RETTBERG, R., ET AL. Development of a Voice Funnel System: Design Report. BBN Rep. 4088, Bolt, Beranek, and Newman, Cambridge, Mass., Aug. 1979.Google ScholarGoogle Scholar
  46. 47 RUSSELL, R.M. The CRAY-1 computer system. Commun. ACM 21, i (Jan. 1978), 63-72. Google ScholarGoogle Scholar
  47. 48 SCHWARTZ, J. Ultracomputers. ACM Trans. Program. Lang. Syst. 2, 4 (October. 1980), 484-521. Google ScholarGoogle Scholar
  48. 49 SEITZ, C.L. The cosmic cube. Commun. ACM 28, i (Jan. 1985), 22-33. Google ScholarGoogle Scholar
  49. 50 S~APIRO, E.Y. A Subset of Concurrent Prolog and Its Interpreter. Institute for New Generation Computer Technology Tech. Rep. TR-003, Jan. 1983.Google ScholarGoogle Scholar
  50. 51 SMITH, B. J. A pipelined, shared resource MIMD computer. In Proc. Int. Conf. Parallel Processing, 1978.Google ScholarGoogle Scholar
  51. 52 STEELE, G. L. Rabbit: A Compiler for Scheme. Tech. Rep. AI-TR-474, Artificial Intelligence Lab., M.I.T., Cambridge, Mass., May 1978. Google ScholarGoogle Scholar
  52. 53 SUGIMOTO, S., ET AL. A multimicroprocessor system for concurrent Lisp. In Proc. 1983 Int. Conf. Parallel Processing (June 1983).Google ScholarGoogle Scholar
  53. 54 TURNER, D. A new implementation technique for applicative languages. Softw. Pract. Exper. 9, 1 (Jan. 1979), 31-49.Google ScholarGoogle Scholar
  54. 55 WEINREB, D., AND MOON, D. Lisp Machine Manual. Symbolics Corp., Cambridge, Mass., 1984. Google ScholarGoogle Scholar
  55. 56 WENG, K. Stream-Oriented Computation in Recursive Data Flow Schemas. Tech. Memo TM-68, M.I.T. Laboratory for Computer Science, Cambridge, Mass., Oct. 1975.Google ScholarGoogle Scholar

Index Terms

  1. MULTILISP: a language for concurrent symbolic computation

              Recommendations

              Reviews

              Brent T. Hailpern

              MULTILISP is a dialect of LISP (actually a version of the SCHEME dialect) with added constructs for parallel execution. MULTILISP has been implemented on the 32-processor Concert multiprocessor. It is destined for implementation on larger multiprocessors. The principal language extension provided by MULTILISP is “future ( x).” Upon executing “future ( x),” an immediate “undetermined” value is returned. The computation of “ x” occurs in parallel and the result replaces “undetermined” when complete. Of course, any use of the result would block the parent process until the computation is finished. The paper goes into great detail discussing the motivating issues in parallel language design. The author includes an excellent set of references on competing work. The author discusses the issues of lazy evaluation, resource allocation, and implementation. The implementation issues include intermediate instruction-set architecture (MCODE), synchronization, implementation of futures, task management, heap management, and garbage collection. The author also presents performance analysis based on the number of processors and the granularity of the parallelism in the algorithm (number of futures). The paper is well written, with extensive footnotes and references. A background in LISP fundamentals and the issues involved in distributed processing will be helpful, but is not necessary.

              Access critical reviews of Computing literature here

              Become a reviewer for Computing Reviews.

              Comments

              Login options

              Check if you have access through your login credentials or your institution to get full access on this article.

              Sign in

              Full Access

              • Published in

                cover image ACM Transactions on Programming Languages and Systems
                ACM Transactions on Programming Languages and Systems  Volume 7, Issue 4
                Oct. 1985
                185 pages
                ISSN:0164-0925
                EISSN:1558-4593
                DOI:10.1145/4472
                Issue’s Table of Contents

                Copyright © 1985 ACM

                Publisher

                Association for Computing Machinery

                New York, NY, United States

                Publication History

                • Published: 1 October 1985
                Published in toplas Volume 7, Issue 4

                Permissions

                Request permissions about this article.

                Request Permissions

                Check for updates

                Qualifiers

                • article

              PDF Format

              View or Download as a PDF file.

              PDF

              eReader

              View online with eReader.

              eReader