[ExM Users] Implicit blocking on foreach construct?

Tim Armstrong tim.g.armstrong at gmail.com
Thu Mar 19 07:38:24 CDT 2015


Welcome to the dark side.  Let us know as more questions come up.

If you have any suggestions for where the documentation is particularly
lacking/confusing also, please don't hesitate to tell us.

- Tim

On 19 March 2015 at 05:32, Timothy Stitt (TGAC) <Timothy.Stitt at tgac.ac.uk>
wrote:

>   Tim,
>
>  Thanks. Following your suggestions/example I was able to massage my own
> code to do what I need now. It took a couple of days working with Swift/T
> but the whole data-flow mindset has now kicked in and  briefly banished the
> typical sequential instruction thinking. It all makes sense now.
>
>  Cheers.
>
> ---
>
> *Timothy Stitt PhD* / Head of Scientific Computing
>
> The Genome Analysis Centre (TGAC)
>
> http://www.tgac.ac.uk/
>
>
>  p: +44 1603 450378
>
> e: timothy.stitt at tgac.ac.uk
>
>   From: Tim Armstrong <tim.g.armstrong at gmail.com>
> Date: Tuesday, 17 March 2015 21:20
> To: Timothy Stitt <timothy.stitt at tgac.ac.uk>
> Cc: "exm-user at lists.mcs.anl.gov" <exm-user at lists.mcs.anl.gov>
> Subject: Re: [ExM Users] Implicit blocking on foreach construct?
>
>     Hi Tim,
>   It's possible if you reformulate the problem in terms of data flow-
> there's no direct way in Swift to ask "is the loop finished" - but there is
> a way to ask "is the data being computed by the loop finished".
>
> The "wait" construct - it lets you execute a block of code after a bit of
> data is assigned.
>
>  E.g. a trivial example is
>
>  int x = do_some_computation();
>  wait (x) {
>    trace("x is done!");
>  }
>
>  If you're building an array of files or similar, it's a little more
> complicated:
>
> import io;
> import files;
>
> file x[];
>
> wait deep (x) {
>   trace("Done");
> }
>
> foreach i in [1:10] {
>   file tmp<"/tmp/swift-tmp-" + i + ".txt">;
>
>   tmp = write("");
>
>   x[i] = tmp;
> }
>
>  This only prints "Done" once all of the files have been written.  The
> wait deep ensures that everything in the array is completely built.
>
>  I'm also not sure about your use case, but Swift has some built-in
> support for generating temporary files - Justin Wozniak was recently
> working on improving that.
>
>  - Tim
>
> On 17 March 2015 at 15:08, Timothy Stitt (TGAC) <Timothy.Stitt at tgac.ac.uk>
> wrote:
>
>>  Hi all,
>>
>>  Is there a way to add explicit blocking to the end of the foreach
>> construct? I have the following logic which doesn't work right now as the
>> delete_files() routine is assumed to be concurrent with the foreach block
>> when I want it to execute after the foreach block is completed for all
>> workers:
>>
>>  foreach { do some work creating temp files}
>> delete_files() // delete temp files using an app function
>>
>>  Thanks,
>>
>>  Tim.
>>
>> ---
>>
>> *Timothy Stitt PhD* / Head of Scientific Computing
>>
>> The Genome Analysis Centre (TGAC)
>>
>> http://www.tgac.ac.uk/
>>
>>
>>  p: +44 1603 450378
>>
>> e: timothy.stitt at tgac.ac.uk
>>
>> _______________________________________________
>> ExM-user mailing list
>> ExM-user at lists.mcs.anl.gov
>> https://lists.mcs.anl.gov/mailman/listinfo/exm-user
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/exm-user/attachments/20150319/beb3ac77/attachment-0001.html>


More information about the ExM-user mailing list