<div dir="ltr">Hello,<div><br></div><div>I'm using an iterate loop like this:</div><div><br></div><div>  progress[0] = 0.;</div><div>  step = 5;</div><div>  iterate i {</div><div>    // Build executable</div><div>    if (i == 0){</div><div>      // Run from initial condition</div><div>      output[i] = run_new();</div><div>    } else {</div><div>      // Resume from old run</div><div>      output[i] = run_old(output[i-1]);</div><div>    }</div><div>    // Expensive post-processing</div><div>    refined[i] = post_process(output[i]);</div><div>    progress[i+1] = progress[i] + step;</div><div>  } until (progress[i] < 100.);</div><div><br></div><div>run_old doesn't depend on refined, but will not run until the post_process application completes (which is a while; it is expensive).  I'm inferring that iterate is sequential at the iteration-granularity.</div><div><br></div><div>Is this intentional?  I think that iterate is the natural way to express this computation, but the serialization of run_old wrt post_process is very expensive.  Is there a case where the assumption that iterations are evaluated sequentially changes the result of the program?</div><div><br></div><div>Max</div></div>