<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    Ptolemy II does not have a specific Linda model of computation, but
    there are a number of resources for coordination languages.<br>
    <br>
    Edward Lee's IEEE Computer article "The Problem with Threads"
    provides a good overview of the Ptolemy II's view of coordination
    languages<br>
<a class="moz-txt-link-freetext" href="http://ptolemy.eecs.berkeley.edu/publications/papers/06/problemwithThreads/">http://ptolemy.eecs.berkeley.edu/publications/papers/06/problemwithThreads/</a><br>
    <br>
    Edward and I developed a talk a while back that talks more about
    coordination languages and Ptolemy II.<br>
    <a class="moz-txt-link-freetext" href="http://chess.eecs.berkeley.edu/pubs/164">http://chess.eecs.berkeley.edu/pubs/164</a><br>
    <br>
    Try searching the CHESS website for coordination languages.  With
    Google, I did<br>
     coordination language site:chess.eecs.berkeley.edu<br>
    <br>
    More specifically, we started work on  Synchronous Publisher
    Subscriber model of <br>
    computation that was implemented via
    ptolemy/domains/sps/kernel/SPSDirector.java<br>
    <br>
    The class comment for that file was:<br>
    <blockquote type="cite">The Synchronous Publisher Subscriber (SPS)
      model of
      computation.                                                                                              
       <br>
        
      <p>                                                                                                                                                           
       <br>
         In this model of computation input and output ports have
      channel
      names                                                                                        
       <br>
         that are similar to publisher and subscribers.  The output port
      name
      may                                                                                      
       <br>
         have wildcards, which may be matched by input ports.  Output
      ports
      may                                                                                        
       <br>
         have initial values.  If an output port does not have an
      initial
      value,                                                                                       
       <br>
         then a default value of zero is used.  The actual default value
      depends                                                                                       
       <br>
         on the token
      type.                                                                                                                                            
       <br>
        
      </p>                                                                                                                                                          
       <br>
                                                                                                                                                                       
       <br>
         <p>The way the execution occurs is that during the first
      iteration,                                                                                           
       <br>
         the output ports are initialized with the initial values.  The
      corresponding                                                                                  
       <br>
         input ports are then updated.  The actors are fired and the
      values                                                                                            
       <br>
         of the output ports are updated and the iteration
      ends.</p>                                                                                                   
       <br>
                                                                                                                                                                       
       <br>
         <p>This model of computation is similar to a Cellular
      Automaton
      model                                                                                         
       <br>
         of computation.  This model of computation differs from
      the                                                                                                   
       <br>
         ptolemy/domains/ca/kernel/CADirector.java in that CADirector
      operates                                                                                         
       <br>
         on a matrix and the value of a cell is dependent on the
      values                                                                                                
       <br>
         of the adjacent values in the matrix.  In this model of
      computation,                                                                                          
       <br>
         values may depend on many different
      values.</p>                                                                                                               
       <br>
                                                                                                                                                                       
       <br>
         <p>This model of computation may be a subset of
      Linda.</p>         </blockquote>
    However, Edward has recently updated Ptolemy II to include a
    PublisherPort that has an initialOutputs parameter that can act much
    like a SampleDelay.<br>
    <br>
    See
<a class="moz-txt-link-freetext" href="http://chess.eecs.berkeley.edu/ptexternal/src/ptII/doc/codeDoc/ptolemy/actor/PublisherPort.html">http://chess.eecs.berkeley.edu/ptexternal/src/ptII/doc/codeDoc/ptolemy/actor/PublisherPort.html</a><br>
    <br>
    There is also a SubscriberPort for receiving these data from the
    PublisherPort.<br>
    <br>
    We ended up removing the SPSDirector and are moving forward with
    PublisherPort and SubscriberPort.<br>
    <br>
    This code was developed last month, and I'm actively working on it
    today.<br>
    There are various demos with the name
    ptolemy/actor/lib/test/auto/PublisherPort*.xml<br>
    <br>
    To try out this code in Kepler, you would need to build a Kepler
    development version, see
<a class="moz-txt-link-freetext" href="https://kepler-project.org/developers/teams/build/systems/build-system/extension-build-system">https://kepler-project.org/developers/teams/build/systems/build-system/extension-build-system</a><br>
    <br>
    To instantiate a PublisherPort, start Kepler and do Tools ->
    Instantiate Entity and then type in the classname
    ptolemy.actor.PublisherPort<br>
    You will get an error message, but the PublisherPort will be
    created.<br>
    <br>
    To view the tests from Kepler, File -> Open
    kepler/ptolemy/src/ptolemy/actor/lib/test/auto<br>
    and then open the various PublisherPort*.xml demos.<br>
    <br>
    It would be interesting to implement some classic Linda models in
    Ptolemy II using the PublisherPorts.  I remember the article in
    Scientific American, but a quick search did not find it.  I'd be
    interested in getting feedback about how the
    PublisherPort/SubscriberPort compare and contrast with Linda<br>
    <br>
    BTW - The Linda Wiki article says:<br>
    <blockquote type="cite">Criticisms of Linda from the multiprocessing
      community tend to focus on the decreased speed of operations in
      Linda systems as compared to MPI systems.[citation needed] While
      not without justification, these claims were largely refuted for
      an important class of problems.[2] Detailed criticisms of the
      Linda model can also be found in Steven Ericsson-Zenith's book
      Process Interaction Models.[3]</blockquote>
    Edward's "Disciplined Message Passing" paper at
    <a class="moz-txt-link-freetext" href="http://chess.eecs.berkeley.edu/pubs/516.html">http://chess.eecs.berkeley.edu/pubs/516.html</a> might be of interest.<br>
    <br>
    _Christopher<br>
    <br>
    <br>
    <br>
    <div class="moz-cite-prefix">On 7/18/12 2:43 AM, Patrick Janssen
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAMxTbrjvN-jzN6jq+D7ZjwQH5_asGW-SUNYVWHP3Y=1g7wYOFg@mail.gmail.com"
      type="cite">I am interested in creating a Linda type of
      computational model, where actors operate in parallel on data
      stored in and retrieved from shared, virtual, associative memory.<br>
      <a moz-do-not-send="true"
        href="http://en.wikipedia.org/wiki/Linda_%28coordination_language%29">http://en.wikipedia.org/wiki/Linda_%28coordination_language%29</a>
      <br>
      <a moz-do-not-send="true"
        href="http://en.wikipedia.org/wiki/Tuple_space">http://en.wikipedia.org/wiki/Tuple_space</a><br>
      <br>
      What is the best way to do this? Any suggestions? (Or does Ptolemy
      have features more suited to this?)<br>
      <br>
      <div
style="padding:0px;margin-left:0px;margin-top:0px;overflow:hidden;word-wrap:break-word;color:black;font-size:10px;text-align:left;line-height:130%"></div>
      <br>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Kepler-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Kepler-users@kepler-project.org">Kepler-users@kepler-project.org</a>
<a class="moz-txt-link-freetext" href="http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-users">http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-users</a>
</pre>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Christopher Brooks, PMP                       University of California
CHESS Executive Director                      US Mail: 337 Cory Hall
Programmer/Analyst CHESS/Ptolemy/Trust        Berkeley, CA 94720-1774
ph: 510.643.9841                                (Office: 545Q Cory)
home: (F-Tu) 707.665.0131 cell: 707.332.0670 </pre>
    <br>
    <br>
  </body>
</html>