[Swift-user] Coordination between app calls in foreach loop
Mihael Hategan
hategan at mcs.anl.gov
Fri Sep 20 16:37:25 CDT 2013
I can confirm this bug. Apps don't properly wait for arrays.
Mihael
On Fri, 2013-09-20 at 14:08 -0500, Ketan Maheshwari wrote:
> Hi,
>
> I am working with APS user Hemant Sharma (in CC) on one of his projects.
> Hemant wrote a Swift script which has about three foreach invocations which
> he wants to run one after other.
>
> In order to achieve this coordination, Hemant is using an int[] in one loop
> which is passed as input to the app call of another loop. He observes that
> the coordination is not maintained and both app calls happen simultaneously
> resulting in application error.
>
> Here is a quick reproduction I tried and I observe indeed that coordination
> is not happening:
>
> $ cat dummy.swift
> type file;
>
> app (file out) A (string in1){
> dummyA in1 stdout=@out;
> }
>
> app (file out) B (string in1, int[] _art){
> dummyB in1 stdout=@out;
> }
>
> file outfileA[]<simple_mapper; location="outdir",
> prefix="a.",suffix=".out">;
> file outfileB[]<simple_mapper; location="outdir",
> prefix="b.",suffix=".out">;
>
> int art[];
> foreach i in [0:3]{
> outfileA[i] = A ("astring");
> art[i]=i;
> }
>
> foreach j in [0:3]{
> outfileB[j] = B ("bstring", art);
> }
>
> Since the art array is wholly required in app B, one would expect the first
> foreach to finish befor the call to B gets invoked. This is not happening
> in my simple test where I ask the executable called by A to sleep for 5 sec
> and that called by B to print timestamp and quit.
>
> I see in the resulting files that the timestamps in B precede those in A.
>
> This looks like a bug to me. Swift is 0.94 swift-r7091 cog-r3789.
>
> Thanks,
> Hi,
>
>
> I am working with APS user Hemant Sharma (in CC) on one of his
> projects. Hemant wrote a Swift script which has about three foreach
> invocations which he wants to run one after other.
>
>
> In order to achieve this coordination, Hemant is using an int[] in one
> loop which is passed as input to the app call of another loop. He
> observes that the coordination is not maintained and both app calls
> happen simultaneously resulting in application error.
>
>
> Here is a quick reproduction I tried and I observe indeed that
> coordination is not happening:
>
> $ cat dummy.swift
> type file;
>
> app (file out) A (string in1){
> dummyA in1 stdout=@out;
> }
>
> app (file out) B (string in1, int[] _art){
> dummyB in1 stdout=@out;
> }
>
> file outfileA[]<simple_mapper; location="outdir",
> prefix="a.",suffix=".out">;
> file outfileB[]<simple_mapper; location="outdir",
> prefix="b.",suffix=".out">;
>
> int art[];
> foreach i in [0:3]{
> outfileA[i] = A ("astring");
> art[i]=i;
> }
>
> foreach j in [0:3]{
> outfileB[j] = B ("bstring", art);
> }
>
>
> Since the art array is wholly required in app B, one would expect the
> first foreach to finish befor the call to B gets invoked. This is not
> happening in my simple test where I ask the executable called by A to
> sleep for 5 sec and that called by B to print timestamp and quit.
>
>
> I see in the resulting files that the timestamps in B precede those in
> A.
>
>
> This looks like a bug to me. Swift is 0.94 swift-r7091 cog-r3789.
>
>
>
> Thanks,
>
> _______________________________________________
> Swift-user mailing list
> Swift-user at ci.uchicago.edu
> https://lists.ci.uchicago.edu/cgi-bin/mailman/listinfo/swift-user
More information about the Swift-user
mailing list