[Swift-user] regarding Swift/Turbine compiler

Hao Yang yanghao0614 at gmail.com
Fri Nov 9 16:58:00 CST 2012


Hi, Tim:

I was reading Turbine paper, Swift/T guide website  and some code.

Thank you a lot for the clarification. In the example you gave, how to
choose a good unrolling factor ? As greater unrolling factor can save more
lookups but also generate greater code size and instructions.

Another question is how to call external binaries inside app function? I
didn't find information on the Swift/T guide website.

Thank you.


On Fri, Nov 9, 2012 at 9:54 AM, Tim Armstrong <tim.g.armstrong at gmail.com>wrote:

> Hi Hao,
>   Sorry for the confusion - which documentation are you looking at, out of
> curiosity?
>
> Basically, my advice would be to not worry about annotating the loops
> unless you are seeing performance problems.  The default settings for
> foreach loops should give good performance in most use cases. By default
> they use a recursive loop splitting algorithm that is a good balance
> between parallelism and control-flow overhead.
>
> Here are a few rules of thumb about specific options:
>
>    - The @unroll annotation is mainly useful if you have inter-iteration
>    dependencies, as it can allow the compiler to optimize across loop
>    iterations.  E.g. in the example below it could save an array lookup by
>    optimizing across iterations after unrolling:
>
> foreach x, i in A {
>    B[i] = A[i] + A[i+1];
>
> }
>
>    - The @async annotation is rarely if ever useful: it tends to add
>    additional overhead from more task spawns without meaningfully increasing
>    parallelism, since any leaf functions within the loop body are spawned off
>    as tasks regardless.
>
> - Tim
>
> On Fri, Nov 9, 2012 at 1:39 AM, Hao Yang <yanghao0614 at gmail.com> wrote:
>
>> Hi, all:
>>
>> I am trying Swift/Turbine Compiler (STC). It seems that for foreach
>> loops, the default mode is to run  every iteration locally, if @async
>> annotation is provided, then the iterations will be launched on other
>> remote turbine engines, if there is app function inside a iteration, the
>> iterations will be launched on workers. I am wondering what is the criteria
>> for making these decisions (whether to run locally, on other engines or on
>> workers) if the goal is to optimize the performance?  If @unroll annotation
>> is used to optimize performance, how can one choose a good unrolling
>> factor?
>>
>> Thank you.
>>
>> --
>> Best Regards,
>> Hao Yang
>> Networked Systems Laboratory
>> Electrical and Computer Engineering
>> The University of British Columbia
>>
>>
>>
>> _______________________________________________
>> Swift-user mailing list
>> Swift-user at ci.uchicago.edu
>> https://lists.ci.uchicago.edu/cgi-bin/mailman/listinfo/swift-user
>>
>
>


-- 
Best Regards,
Hao Yang
Networked Systems Laboratory
Electrical and Computer Engineering
The University of British Columbia
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/swift-user/attachments/20121109/1deeb701/attachment.html>


More information about the Swift-user mailing list