From aa9d94d995248df4e4388159bb888497026a6be4 Mon Sep 17 00:00:00 2001 From: Anupama Chandrasekhar Date: Wed, 16 Jul 2025 12:54:46 -0700 Subject: [PATCH 1/2] Updates per Tex's feedback --- proposals/0029-cooperative-vector.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/proposals/0029-cooperative-vector.md b/proposals/0029-cooperative-vector.md index bbd1aed1..ccd17006 100644 --- a/proposals/0029-cooperative-vector.md +++ b/proposals/0029-cooperative-vector.md @@ -249,8 +249,9 @@ 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. ##### Bias Vector @@ -265,8 +266,9 @@ 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. #### Return Type @@ -336,8 +338,8 @@ 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. Not all combinations of vector element type and matrix interpretations are supported by all implementations. [CheckFeatureSupport] can be used to @@ -386,8 +388,8 @@ 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. [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 From aaac5de55117c22f837f99e706c8e57bdb0c7d46 Mon Sep 17 00:00:00 2001 From: Anupama Chandrasekhar Date: Wed, 16 Jul 2025 13:20:45 -0700 Subject: [PATCH 2/2] Update no BC resource behavior --- proposals/0029-cooperative-vector.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/proposals/0029-cooperative-vector.md b/proposals/0029-cooperative-vector.md index ccd17006..ca38d57d 100644 --- a/proposals/0029-cooperative-vector.md +++ b/proposals/0029-cooperative-vector.md @@ -253,6 +253,9 @@ 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 @@ -270,6 +273,10 @@ 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 This operation returns a vector of size `NUMo` and contains elements of type @@ -341,6 +348,10 @@ so developers should not use this padding space for anything else. 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 determine which combinations are supported. A list of combinations that are @@ -391,6 +402,10 @@ for anything else. 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 can be found in [Minimum Support Set].