[kepler-dev] Ports

Edward A. Lee eal at eecs.berkeley.edu
Sun Aug 1 12:07:30 PDT 2010


I think that if your actor does this in the constructor,
it should work:

         output.setWidthEquals(input, false);

This assumes that the output is a multiport, and it constrains
the width inference algorithm to yield the same width on the
output as on the input.

Edward


On 8/1/10 11:57 AM, Ivens wrote:
> Hi...
>
>
> First, thank you all for your help.
> Ilkay and Edward, I read part of the documents you sent and that made me
> understand more about the conversions... fortunatelly i could solve the
> problem i had.
>
> but another one appeared.
> please, take a look at the picture below:
>
>
>
> addsubproblem.jpg
> i forgot to mention that the big "square" is a CompositeActor
>
> my actor should receive both tokens 2 and 3 and deliver them to
> AddOrSubtract Actor.
> AddOrSubtract actor should *add* them and deliver the result to Display
> Display should show 5.
>
> my actor has two ports (an input one, and an output one)
> both are multiport.
>
> its fire() method is similar to this:
>
> for(i = 0; i < input.getWidth(); i++) {
>    Token t = input.get(i);
>    output.send(i, t);
> }
>
> i dont know why, but input.getWidth() returns *2,* because my actor
> receives 2 tokens
> but when i send the tokens,
>
> send(0, t) works
> send(1, t) does not work,
>
> because there is not a channel 1 in the ouput of my actor, and then
> Display shows only the first token
> (when i add a second line (or channel) from my actor to AddOrSubtract,
> everthing runs correctly)
>
> my question is:
> as i receive 2 tokens (from 2 different channels) through the same line,
> is there a way to correctly deliver those tokens to AddOrSubtract actor,
> so that it can add those tokens and deliver them to Display...?
>
> note that i cannot add more lines between myActor and AddOrSubtract
> and the line between those actors must have width = 0
>
>
> Thank you for your help one more time
>
> Ivens
>
>
> On Sat, Jul 31, 2010 at 8:23 AM, Edward A. Lee <eal at eecs.berkeley.edu
> <mailto:eal at eecs.berkeley.edu>> wrote:
>
>
>     The type system is explained in Chapter 5 here:
>
>     http://www.eecs.berkeley.edu/Pubs/TechRpts/2008/EECS-2008-29.html
>
>     Edward
>
>
>
>     On 7/30/10 8:01 AM, Ivens wrote:
>
>         Hi (again),
>
>         I read Kepler User Manual to discover how Port Constraints work
>         but i
>         could not understand.
>         I looked some actors in Kepler and I noticed that Parameters are
>         passed
>         to setTypeAtLeast(...) method...
>         so... i dont know how these Constrainst work...
>
>         can you please explain me?
>
>         thanks
>
>         On Fri, Jul 30, 2010 at 10:32 AM, Ivens <ivensportugal at gmail.com
>         <mailto:ivensportugal at gmail.com>
>         <mailto:ivensportugal at gmail.com
>         <mailto:ivensportugal at gmail.com>>> wrote:
>
>             When i tried to link an UNKNOWN port to a GENERAL port, i
>         got error
>             messages...
>             why?
>
>
>             help.JPG
>
>
>
>             error.JPG
>
>             On Fri, Jul 30, 2010 at 10:00 AM, Ivens
>         <ivensportugal at gmail.com <mailto:ivensportugal at gmail.com>
>         <mailto:ivensportugal at gmail.com
>         <mailto:ivensportugal at gmail.com>>> wrote:
>
>                 Hi ilkay,
>
>                 yes i can add the actor do Display, and it works well.
>                 But Display Actor has a port from General Type and
>         accepts every
>                 type of Token.
>
>                 The problem is... my actor must send the Token he
>         received...
>                 but i dont know the type of that Token.
>
>                 For instance:
>                 suppose i have (SDF Director) a String Constant ---
>         myActor ---
>                 String to Int --- Display
>
>                 my actor must get a String from String Constant (which
>         is easy
>                 using an input Port from GENERAL type) and send this String
>                 Token through a STRING type Port, because String to Int must
>                 receive a StringToken.
>
>                 But..
>                 Suppose (SDF Director)   Const --- myActor ---
>         AddOrSubtract ---
>                 Display
>
>                 my actor must get a Integer and send it through a
>         INTEGER type
>                 Port, because AddOrSubtract expects that.
>
>                 In other words, the output Port may be generic...
>                 but if i declare it as GENERAL, it won't work
>
>                 and i cannot use output.setTypeAtLeast(input), because
>         my input
>                 port is GENERAL.
>
>                 did you understand?
>
>                 On Wed, Jul 28, 2010 at 4:42 PM, Ilkay Altintas
>         <altintas at sdsc.edu <mailto:altintas at sdsc.edu>
>         <mailto:altintas at sdsc.edu <mailto:altintas at sdsc.edu>>> wrote:
>
>                     Hi,
>
>                     The general data type is the most inclusive of the
>         types.
>                       Can you link your actor to display?
>
>                     There's some more information on the type system
>         conversions
>                     in the ptolemy documentation  (section 4.5.4:
>         Conversions)
>                     at:
>         http://www.eecs.berkeley.edu/Pubs/TechRpts/2008/EECS-2008-28.html
>
>                     -ilkay
>
>
>                     --
>                     Ilkay ALTINTAS
>                     Deputy Coordinator for Research, San Diego Supercomputer
>                     Center (SDSC)
>                     Lab Director, Scientific Workflow Automation
>         Technologies
>                     (SWAT @ SDSC)
>
>                     University of California, San Diego
>                     9500 Gilman Drive, MC: 0505  La Jolla, CA  92093-0505
>                     Phone: (858) 210-5877                     Fax: (858)
>         534-8303
>                     Web: http://users.sdsc.edu/~altintas
>                     Skype: ilkay.altintas
>
>
>
>
>
>
>
>
>                     On Jul 28, 2010, at 10:32 AM, Ivens wrote:
>
>                         Hi,
>
>                         I wrote an Actor in Java that has 2 ports: one
>         is input
>                         and the other one is output.
>                         Both are from GENERAL type. (deal with GENERAL
>         tokens)
>
>                         The output port sends the same data the input
>         port receives.
>                         And then, i connect the output port to any other
>         Kepler
>                         Actor (for instance, String to Int.string)
>
>                         When i click 'play' to start the execution, i get an
>                         error message.
>                         i think that is because my output port is from
>         GENERAL
>                         type... and it is connected to a port from
>         STRING type
>
>                         So, i changed that type to UNKNOWN... but the error
>                         persists...
>                         Can you help me?
>
>                         Thanks
>                         _______________________________________________
>                         Kepler-dev mailing list
>         Kepler-dev at kepler-project.org <mailto:Kepler-dev at kepler-project.org>
>         <mailto:Kepler-dev at kepler-project.org
>         <mailto:Kepler-dev at kepler-project.org>>
>
>         http://mercury.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-dev
>
>
>
>
>
>
>
>         _______________________________________________
>         Kepler-dev mailing list
>         Kepler-dev at kepler-project.org <mailto:Kepler-dev at kepler-project.org>
>         http://mercury.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-dev
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: eal.vcf
Type: text/x-vcard
Size: 330 bytes
Desc: not available
URL: <http://mercury.nceas.ucsb.edu/kepler/pipermail/kepler-dev/attachments/20100801/d601f189/attachment.vcf>


More information about the Kepler-dev mailing list