Hi,

My question concerning parallel search in Mozart 1.4.0 (see below) remained without reaction. I checked SVN and indeed the code for parallel search has not been touched for seven years.

So, I have some further questions/comments.

1) Could you please show by an example how a distributed program for Mozart 1.3.* (e.g., an example from CTM or the Distributed Programming Tutorial) has to be changed to get it running in Mozart 1.4.0. Such an example could help to port legacy code. The provided list of changes is not detailed enough I feel to see how some old distributed Mozart code can be ported such that it basically works as before.

2) I saw that there has been recent updates to the Distributed Programming Tutorial: does that mean the tutorial now only explains the new distributed programming model?

3) Finally, I find it worrying that a new Mozart version (introduced without any MEP) changes the language in a backwards-incompatible way such that it silently breaks rather unique and powerful features of the language itself (such as the Parallel Search) and not "just" some user application. I feel it was foreseeable that a change to the distributed programming model may affect the parallel search -- it was the first thing I checked once I installed Mozart 1.4.0 (and I am no computer scientist, and know nothing about distributed programming as such).

Anyway, enough complaining -- it would just be good to get parallel search working again. Any ideas?

Thank you!

Best
Torsten

PS: I just checked the list of MEPs, the while-loop related MEP is not even mentioned (neither as opened nor accepted).

http://www.mozart-oz.org/meps/


On Aug 18, 2008, at 11:23 PM, Torsten Anders wrote:
Hi,

Did anyone of your used parallel search with Mozart 1.4.0? It appears
there is a problem terminating processes forked by the parallel
search. To make matters more complicated, this problem seems to
happen only sometimes.

I am starting a parallel search from within the OPI. When I "halt"
the OPI (C-. h) then sometimes forked processes keep running -- and
potentially go on consuming all computational resources of the
machine. Also the Search.parallel method close() does not reliably
terminate forked processes.

See below for a small example. As I said, the problem only occurs
sometimes, unfortunately. Sometimes both forked processes are
terminated (so everything is fine), sometimes one, and sometimes both
keep running. With version 1.3.2 I never had this problem (I ran the
example many times with version 1.3.2, still I cannot prove that the
did not exist in that version...).

Also, with version 1.3.2 the forked processes are showed almost
exclusively as user CPU consumption. With 1.4.0, however, a
considerable amount (> 50%) is shown as system CPU consumption, but
this happens only if the processes cannot be terminated. In these
cases, this system CPU consumption already occurs before any attempt
to terminate the search.

So, it looks like parallel search is broken in Mozart 1.4.0. Any idea
how to address this?

Thank you!

Best
Torsten

PS: I did all the tests on MacOS 10.4.11.

--
Torsten Anders
Interdisciplinary Centre for Computer Music Research
University of Plymouth
Office: +44-1752-586219
Private: +44-1752-558917
http://strasheela.sourceforge.net
http://www.torsten-anders.de

%%%%%%%%%%%%%%%%%%%%%%%%%%


%% Parallel search problem, complex enough to keep running for a
while :)
%% Forks two processes on localhost
declare
%% All-interval series length: larger L result in more complex CSPs
L = 36
functor ScriptFunctor
import FD
export Script
define
    proc {Script Sol}
       Xs Dxs
    in
       Sol =  Xs
       {AllIntervalSeries L Dxs Xs}
    end
    %% CSP
    proc {AllIntervalSeries L ?Dxs ?Xs}
       Xs = {FD.list L 0#L-1}
       Dxs = {FD.list L-1 1#L-1}
       for I in 1..L-1
       do
         X1 = {Nth Xs I}
         X2 = {Nth Xs I+1}
         Dx = {Nth Dxs I}
       in
         {InversionalEquivalentInterval X1 X2 L Dx}
       end
       {FD.distinctD Xs}
       {FD.distinctD Dxs}
       %%
       {FD.distribute ff Xs}
    end
    %% Aux
    proc {InversionalEquivalentInterval Pitch1 Pitch2 L Interval}
       Aux = {FD.decl}
    in
       Aux =: Pitch2-Pitch1+L
       {FD.modI Aux L Interval}
    end
end
SearchEngine = {New Search.parallel init(localhost:2)}
{Browse {SearchEngine one(ScriptFunctor $)}}

{SearchEngine close}

--
Torsten Anders
Interdisciplinary Centre for Computer Music Research
University of Plymouth
Office: +44-1752-586219
Private: +44-1752-558917
http://strasheela.sourceforge.net
http://www.torsten-anders.de





_________________________________________________________________________________
mozart-users mailing list                               
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users

Reply via email to