Newsgroups: comp.parallel
From: sanders@ira.uka.de (Peter Sanders)
Subject: Re: Workload management for functional languages?
Organization: Universitaet Karlsruhe, Germany
Date: 21 Sep 1995 18:04:30 GMT
Message-ID: <43s9fe$qrv@usenet.srv.cis.pitt.edu>

In article <43mmig$9v0@usenet.srv.cis.pitt.edu> ca@informatik.uni-kiel.de (Claus Assmann) writes:
>   [...]
>
>   We are currently interested in load distribution, load balancing and
>   scheduling problems related to concurrent program execution in
>   distributed systems, particularly in divide-and-conquer schemes based
>   on functional program specifications.  In this context we would like to
>   investigate ways and means of applying chaos management/control methods
>   as they are known from physics to dynamic load balancing and scheduling
>   policies for large numbers of concurrently executable tasks.

I would be interested in the approaches you have in mind.
I do now a large number of schemes inspired by diffusion.
But most of them are not very efficient, in particular for
the applications you have in mind.

>
>   To avoid re-inventing wheels, we would like to get some hints on
>   published work and to get in touch with people who might be doing
>   research in this area and are interested in exchanging ideas.
>
>   [...]

One place where you should look are load balancing algorithms for 
parallel tree search. In particular, depth first tree search.
A good starting point might be Chapter 8 of
@Book{KumEtAl94,
  author = 	 "V. Kumar and A. Grama and A. Gupta and G. Karypis",
  title = 	 "Introduction to Parallel Computing. Design and
		  Analysis of Algorithms",
  publisher = 	 "Benjamin/Cummings",
  year = 	 1994,
}
One point that I would like to stress is, that receiver initiated schemes,
i.e. algorithms where processor which fall idle request work
should be preferred, because they solve granularity control problems
haunting you with most other approaches.
The remaining key question is where to request work.
Interestingly, the best known way is to choose processors 
randomly. An explanation for this can be found in
@InProceedings{San94g,
  author = 	 "P. Sanders",
  title = 	 "A Detailed Analysis of Random Polling Dynamic Load
		  Balancing",
  booktitle =	 "International Symposium on Parallel Architectures
		  Algorithms and Networks",
  year =	 1994,
  pages =        "382--389",
  address =	 "Kanazawa, Japan"
}

receiver initiated tree splitting is also used in a number of
functional PL implementations. For example,
@Article{AhaEtAl93,
  author =       "G. Aharoni and Amnon Barak and Yaron Farber",
  title =        "An adaptive granularity control algorithm for the
                  parallel execution of functional programs",
  journal =      fgcs,
  year =         1993,
  volume =       9,
  pages =        "163--174",
}
A lot of research has also been done in logic programming which
might have some parallels to functional programs when
load balancing aspects are considered.
@Article{KerCod94,
  author = 	 "J. C. Kergommeaux and P. Codognet",
  title = 	 "Parallel Logic Programming Systems",
  journal =	 "ACM Computing Surveys",
  year =	 1994,
  volume =	 26,
  number =	 3,
  pages =	 "295--336",
}

Hope that helps,

Peter Sanders
University of Karlsruhe

