GT4Py Parallel Model thoughts
Feedback to https://github.com/GridTools/concepts/wiki/GTScript-Parallel-model from a front-end perspective

  • “vertical intervals are executed sequentially in the order defined by the iteration policy of the computation (where PARALLEL means that order is not relevant and thus it will be implementation-specific),” sounds unclear — it kind of sounds like the execution order of intervals inside a computation is set by an iteration policy, rather than the order of k-levels inside an interval is set by the policy, e.g:

with computation(BACKWARD):
  with interval(...):
    a=b[0,0,1]
  with interval(...):
    c=d[1,0,1]
  • will do the second interval before the first one. The examples do clear this up, though

Hannes: This has changed since to read: “vertical intervals are executed sequentially in the order defined by the iteration policy of the computation”

  • Variable declarations — this makes sense as written, but has something changed recently in master? Temporary variables seem to behave as scalars when they can, but they are still full fields? 

Rhea was relying on re-assigning to a temporary int field (which implicitly employed a floor()) - now we have full control over the data types

  • The compute domain example is good — did not realize this when first started with gt4py, so emphasizing in the jupyter notebook and initial docs would help users I think.
  • compute domain — is not being able to make a variable assignment a function of itself a consequence of the parallel model? It might be helpful to describe that situation
  • what code ‘violates’ the parallel model? a list of examples could help
  • conditionals in parallel model?