Monaco: A high-performance flat concurrent logic programming system

  • Evan Tick
Paper Sessions Logic Programming
Part of the Lecture Notes in Computer Science book series (LNCS, volume 694)


This paper describes Monaco, a high-performance implementation of flat committed-choice languages such as Flat Guarded Horn Clauses. The compiler produces native code for linking to a runtime system on shared-memory multiprocessors. A reduced abstract-machine instruction set facilitates decision-graph code generation and traditional optimizations based on dataflow analysis. An inexpensive system-call interface is provided to lower the overhead of memory allocation and procedure invocation. Unification has been optimized to streamline the common cases. We report initial performance measurements of our current instantiation of the system, for the Sequent Symmetry, for a suite of benchmarks.


concurrent logic programming compilation dataflow analysis 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    H. Ait-Kaci. Warren's Abstract Machine: A Tutorial Reconstruction. MIT Press, 1991.Google Scholar
  2. 2.
    Y. Asakawa et al. A Very Fast Prolog Compiler on Multiple Architectures. In Fall Joint Computer Conference, pages 963–968. ACM and IEEE Computer Society, 1986.Google Scholar
  3. 3.
    T. Chikayama et al. Overview of the Parallel Inference Machine Operating System PIMOS. In FGCS'88, pages 230–251, Tokyo, November 1988. ICOT.Google Scholar
  4. 4.
    J. A. Crammond. The Abstract Machine and Implementation of Parallel Parlog. New Generation Computing, 10(4):385–422, August 1992.Google Scholar
  5. 5.
    S. Debray et al. Weighted Decision Trees. In JICSLP'92, MIT Press, 1992.Google Scholar
  6. 6.
    S. K. Debray, N.-W. Lin, and M. Hermenegildo. Task Granularity Analysis in Logic Programs. In SIGPLAN PLDI'90, pages 174–188, June 1990. ACM Press.Google Scholar
  7. 7.
    S. Duvvuru, Monaco: A High Performance Implementation of FGHC on Shared-Memory Multiprocessors. Master's thesis, University of Oregon, June 1992.Google Scholar
  8. 8.
    I. Foster and S. Taylor. Strand: A Practical Parallel Programming Language. In North American Conference on Logic Programming, pages 497–512. MIT Press, 1989.Google Scholar
  9. 9.
    D. Gudeman et al. jc: An Efficient and Portable Sequential Implementation of Janus. In JICSLP'92, pages 399–413. MIT Press, November 1992.Google Scholar
  10. 10.
    A. Harsat and R. Ginosar. CARMEL-2: A Second Generation VLSI Architecture for Flat Concurrent Prolog. New Generation Computing, 7:197–218, 1990.Google Scholar
  11. 11.
    Y. Kimura and T. Chikayama. An Abstract KL1 Machine and its Instruction Set. In ISLP, pages 468–477. IEEE Computer Society, 1987.Google Scholar
  12. 12.
    S. Kliger. Compiling Concurrent Logic Programming Languages. PhD thesis, The Weizmann Institute of Science, Rehovot, October 1992.Google Scholar
  13. 13.
    M. Korsloot and E. Tick. Compilation Techniques for Nondeterminate Flat Concurrent Logic Programming Languages. In ICLP, pages 457–471. MIT Press, June 1991.Google Scholar
  14. 14.
    K. Kumon et al. Architecture and Implementation of PIM/p. In FGCS'92, pages 414–424, Tokyo, June 1992. ICOT.Google Scholar
  15. 15.
    B. C. Massey. Sequentialization of Parallel Logic Programs with Mode Analysis. Master's thesis, University of Oregon, September 1992.Google Scholar
  16. 16.
    V. A. Saraswat et al. Janus: A Step Towards Distributed Constraint Programming. In NACLP'90, pages 431–446. MIT Press, October 1990.Google Scholar
  17. 17.
    M. Sato et al. Evaluation of the KL1 Parallel System on a Shared Memory Multiprocessor. In IFIP Work. Conf. on Parallel Process., pg 305–318. North Holland, 1988.Google Scholar
  18. 18.
    M. Sato et al. Exploiting Fine Grain Parallelism in Logic Programming on a Parallel Inference Machine. Technical Report TR-676, ICOT, Tokyo, August 1991.Google Scholar
  19. 19.
    E. Y. Shapiro. The Family of Concurrent Logic Programming Languages. ACM Computing Surveys, 21(3), 1989.Google Scholar
  20. 20.
    R. Sundararajan et al. Variable Threadedness Analysis for Concurrent Logic Programs. In JICSLP'92, pages 493–508. Washington D.C., MIT Press, November 1992.Google Scholar
  21. 21.
    K. Taki. Parallel Inference Machine PIM. In International Conference on Fifth Generation Computer Systems, pages 50–72, Tokyo, June 1992. ICOT.Google Scholar
  22. 22.
    A. Taylor. LIPS on a MIPS: Results From a Prolog Compiler for a RISC. In International Conference on Logic Programming, pages 174–185. MIT Press, June 1990.Google Scholar
  23. 23.
    E. Tick and C. Banerjee. Performance Evaluation of Monaco Compiler and Runtime Kernel. In Int. Conf. on Logic Programming. Budapest, MIT Press, June 1993.Google Scholar
  24. 24.
    E. Tick and X. Zhong. A Compile-Time Granularity Analysis Algorithm and its Performance Evaluation. New Generation Computing, 11(3–4), June 1993.Google Scholar
  25. 25.
    K. Ueda and M. Morita. A New Implementation Technique for Flat GHC. In International Conference on Logic Programming, pages 3–17. MIT Press, June 1990.Google Scholar
  26. 26.
    P. L. Van Roy and A. M. Despain. High-Performace Logic Programming with the Aquarius Prolog Compiler. IEEE Computer Magazine, pages 54–68, January 1992.Google Scholar
  27. 27.
    K. Yanoo. An Optimizing Compiler for a Parallel Inference Language. In H. Tanaka, editor, Annual Report of the Research on Parallel Inference Engine, pages 71–94. University of Tokyo, April 1992. (in Japanese).Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1993

Authors and Affiliations

  • Evan Tick
    • 1
  1. 1.University of OregonEugeneUSA

Personalised recommendations