Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 25 additions & 8 deletions proposals/0029-cooperative-vector.md
Original file line number Diff line number Diff line change
Expand Up @@ -249,9 +249,13 @@ row/column of the matrix is valid memory.

The **matrix stride** is 16-byte aligned.

This operation doesn't perform bounds checking for matrix loads. If any part of
the matrix load is out of bounds then the entire matrix load will return zero.
When the **matrix resource** has bounds checking, bounds are only checked at
matrix granularity. If any part of the matrix load is out of bounds then the
entire matrix load will return zero.

If the **matrix resource** does not have bounds checking, such as when it is
supplied through a root descriptor, and any part of the matrix load is out of
bounds, the operation is undefined.

##### Bias Vector

Expand All @@ -265,8 +269,13 @@ Only non-packed interpretations are valid for bias vectors.
The base address of **bias vector resource** and **bias vector offset** must be
64-byte aligned.

This operation doesn't perform bounds checking for bias loads. If any part of
the vector load is out of bounds then the entire vector load will return zero.
When the **bias vector resource** has bounds checking, bounds are only checked
at bias vector granularity. If any part of the bias vector load is out of bounds
then the entire bias vector load will return zero.

If the **bias vector resource** does not have bounds checking, such as when it
is supplied through a root descriptor, and any part of the bias vector load is
out of bounds, the operation is undefined.

#### Return Type

Expand Down Expand Up @@ -336,8 +345,12 @@ row/column of the matrix is valid memory. Implementations may write to the
contents of the padding between the end of the matrix and the 16-byte boundary,
so developers should not use this padding space for anything else.

If any part of the matrix write is out-of-bounds, the whole operation is
skipped.
When the **matrix resource** has bounds checking, if any part of the matrix
write is out-of-bounds, the whole operation is skipped.

If the **matrix resource** does not have bounds checking, such as when it is
supplied through a root descriptor, and any part of the matrix store is out of
bounds, the operation is undefined.

Not all combinations of vector element type and matrix interpretations are
supported by all implementations. [CheckFeatureSupport] can be used to
Expand Down Expand Up @@ -386,8 +399,12 @@ Implementations may write to the contents of the padding between the end of the
matrix and the 16-byte boundary, so developers should not use this padding space
for anything else.

If any part of the vector write is out-of-bounds, the whole operation is
skipped.
When the **output array resource** bas bounds checking, if any part of the
output array write is out-of-bounds, the whole operation is skipped.

If the **output array resource** does not have bounds checking, such as when it
is supplied through a root descriptor, and any part of the bias vector store is
out of bounds, the operation is undefined.

[CheckFeatureSupport] can be used to determine which vector element types can be
accumulated. A list of types that are guaranteed to be supported on all devices
Expand Down