Parallelising a Large Functional Program or: Keeping LOLITA Busy

نویسندگان

  • Hans-Wolfgang Loidl
  • Richard G. Morgan
  • Philip W. Trinder
  • Sanjay Poria
  • Chris Cooper
  • Simon L. Peyton Jones
  • Roberto Garigliano
چکیده

A parallel version of the LOLITA natural language engineering system is under construction. We believe that, at 47,000 lines of Haskell, LOLITA is the largest non-strict parallel functional program ever. In this paper we report on the ongoing parallelisation of LOLITA, which has the following interesting features common to real world applications of lazy languages: { the code was not speciically designed for parallelism; { laziness is essential for the eeciency in LOLITA; { LOLITA interfaces to data structures outside the Haskell heap, using a foreign language interface; { LOLITA was not written by those most closely involved in the paral-lelisation. Our expectations in parallelising the program were to achieve moderate speedups with small changes in the code. To date speedups of up to 2.4 have been achieved for LOLITA running under a realistic simulation of our 4 processor shared-memory target machine. We are currently tuning the program on the Sun SPARCserver target machine, where wall-clock speedup is limited by physical memory availability and a sequential foreign-language front end. In the process of parallelising LOLITA we made changes to both our parallel software engineering techniques and our implementation technology. The most intriguing aspect, however, is that the parallelism is achieved with a very small number of changes to, and without requiring an understanding of most of the application. We attribute the ease of parallelisation primarily to the top-down approach enabled by evaluation strategies, our new mechanism for introducing and controlling parallelism in non-strict languages.

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Algorithm + Strategy = Parallelism 1 Writing Parallel Programs

The process of writing large parallel programs is complicated by the need to specify both the parallel behaviour of the program and the algorithm that is to be used to compute its result. This paper introduces evaluation strategies, lazy higher-order functions that control the parallel evaluation of non-strict functional languages. Using evaluation strategies, it is possible to achieve a clean ...

متن کامل

Algorithm + Strategy = Parallelism

The process of writing large parallel programs is complicated by the need to specify both the parallel behaviour of the program and the algorithm that is to be used to compute its result This paper introduces evaluation strategies lazy higher order functions that control the parallel evaluation of non strict functional languages Using evaluation strategies it is possible to achieve a clean sepa...

متن کامل

Profiling large-scale lazy functional programs

The LOLITA natural language processor is an example of one of the ever-increasing number of large-scale systems written entirely in a functional programming language. The system consists of over 47,000 lines of Haskell code (excluding comments) and is able to perform a wide range of tasks such as semantic and pragmatic analysis of text, information extraction and query analysis. The efficiency ...

متن کامل

Understanding LOLITA: Experiences in Teaching Large Scale Functional Programming

LOLITA is a large scale natural processing system written in the functional language Haskell. It consists of over 47,000 lines of code written over 180 dierent modules. There are currently 20 people working on the system, most of whom are Ph.D. students. The majority of research projects involve the development of an application which is written around a semantic network; the knowledge represe...

متن کامل

Sampling Diffuse Inter-reflection within a Hybrid Scheduling

Parallelising ray tracing using a data parallel approach allows arbitrarily large models to be rendered, but its inherent load imbalances may lead to severe inefficiencies. To compensate for the uneven load distribution, demanddriven tasks may be split off and scheduled to processors that are less busy. We use a hybrid scheduling algorithm which brings tasks and data together according to coher...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 1997