[PATCH] D85603: IR: Add convergence control operand bundle and intrinsics

Sameer Sahasrabuddhe via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Nov 7 03:42:54 PST 2020


sameerds added a comment.

In D85603#2379258 <https://reviews.llvm.org/D85603#2379258>, @nhaehnle wrote:

> Roughly speaking, there are subgroup ops with "implicit" thread set (what Vinod calls textually aligned, and what this proposal mostly focuses on, because they require the most additional explanation) and subgroup ops with "explicit" thread set (sm70+).

That's an excellent way to "lift" sm70+ operations into the semantics being handled by this proposal. The bottomline seems to be that the proposed formalism achieves the following:

1. Dynamic instances capture the thread sets that are implicitly determined by control flow graph.
  1. This covers both kinds of operations, with and without explicit thread sets as arguments.
  2. No assumptions are made about thread grouping in the underlying hardware.
2. There is a straightforward way for a frontend to insert these intrinsics while ensuring correctness and not overly constraining optimization.
3. Generic optimizations are safe as long as they preserve the mapping of threads to dynamic instances (basic rule 4).
  1. The mapping is usually altered by changes to surrounding control flow, and hence such changes are forbidden in general.
  2. This does not preclude more informed optimizations that are aware of their impact on the set of threads at a dynamic instance.
  3. Optimizations can also benefit from attributes that indicate how this set of threads is allowed to change.
4. None of the above has been established beyond all doubt, but the current understanding is sufficient to justify the "experimental" tag.

Is that a reasonable summary at this point?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D85603/new/

https://reviews.llvm.org/D85603



More information about the llvm-commits mailing list