Skip to content

[request] Unambiguous "uniform" and "non-uniform" terminology #80

@jeremyong

Description

@jeremyong

Is your feature request related to a problem? Please describe.
This is a followup request to this issue: microsoft/DirectX-Specs#149. In particular, the section on "non-uniform" and "uniform" which show up in various contexts, but do not have consistent meaning.

Describe the solution you'd like
I would like there to be several distinct terms in a category of terminology to describe uniformity. As far as I can tell, uniformity can be described along two axes:

  • Uniform kind (Are we describing a property of a value, or the program's control flow?)
  • Uniform scope (Does the uniformity property encompass only active lanes? Inactive lanes? Helper lanes? Some combination of the above?). A scope could also encompass a wave, or an entire thread group.

Control-flow-uniformity is useful to indicate if a particular instruction or statement requires that lanes invoking the instruction must be invoking the statement simultaneously. For example, a group barrier statement. In contrast, data-uniformity may be needed to describe a needed property of various inputs to different functions (e.g. indices used to index a global descriptor heap). In some cases, a combination of the two may be needed.

In the second axis, the uniform scope indicates whether the property extends to inactive lanes or helper lanes, or both. In addition, the scope may be restricted to individual waves, thread groups, entire dispatches, or some other as-yet-to-be-determined construct. This would allow finer grained specification of the property than what can be currently communicated easily.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status

Triaged

Relationships

None yet

Development

No branches or pull requests

Issue actions