arv@ecs.soton.ac.uk (Andrew Verden) (05/31/90)
Dear Net, I am currently working on a parallel Prolog for distributed memory machines. The model implements Independent AND-Parallelism in a distributed memory machine; at present this is transputer based. I have run a number of small benchmark programs which exhibit parallelism, for example quicksort as follows: qsort([],[]). qsort([H|T],R) :- split(T,H,L1,L2), qsort(L1,R1), qsort(L2,R2), append(R1,[H|R2],R). Here the two intermediate qsort's can be executed in parallel. (And I do realise that the difference list version is more efficient!!!) What I need is a number of more general sequential Prolog programs of between 50 and 100 lines be they deterministic or non-deterministic. The line restriction is necessary as at present the conversion of a sequential clause into a parallel clause is done by hand ! Further restrictions on the program are : 1. No use of assert / retract or anything similar 2. No file handling. 3. No input / output. 4. No functors etc. 5. NO SIDE EFFECTS. 6. Edinburgh syntax please. A bit more about the system for your interest: Consists of a multi WAM executor written in OCCAM which currently executes at 10.5Klips per WAM. Parallelism is derived from sequential Prolog code and is transparent to the programmer. The WAM has been extended to provide parallel execution of clauses in a similar way to that of Hermenegildo. Real speedups over sequential Prolog have been acheived on only two processors. Further benchmarks will use 16 and possibly 256 transputers or more if anyone will lend them. Please mail me any programs you may have that fit the above request. Thanks in advance. Andrew Verden arv@uk.ac.soton.ecs Concurrent Logic Programming Group, Dept of Electronics and Computer Science, University of Southampton, England.