跳到主要内容
页面框架已切换为简体中文。尚未完成本地化的交互标签暂时使用英文;ASL/NDF 源、稳定标识和证据在所有语言中保持原文。

PTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE

PTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE

ASL 伪代码

下面直接显示完整的 ASL 所有者。

// PTO-UNIT: {"id":"PTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE","surface":"tile","classification":["model","legality","matrix-shape"],"depends_on":["PTO-TILE-MODEL-LEGALITY-MATRIX-FUNCTIONS","PTO-TILE-MODEL-LEGALITY-MATRIX-INFO-DESCRIPTOR","PTO-TILE-MODEL-LEGALITY-MEMORY-SCHEMA"]}readonly func TileMatrixShapeLegal(left: TileIndex,                                   right: TileIndex) => booleanbegin    return BundleTileOperationSelected() &&           TileMatrixCubeInfosMatchDimensions(               _Tiles[[left]], _Tiles[[right]],               _Tiles[[left]].valid_rows,               _Tiles[[right]].valid_columns,               _Tiles[[left]].valid_columns) &&           _Tiles[[left]].valid_rows * _Tiles[[right]].valid_columns <=               PTO_MODEL_TILE_ELEMENTS;end;
pure func TileOrdinaryMatrixInputTypeSupported(    data_type: TileDataType) => booleanbegin    return data_type == TileDataType_FP32 ||           data_type == TileDataType_TF32 ||           data_type == TileDataType_HF32 ||           data_type == TileDataType_FP16 ||           data_type == TileDataType_BF16 ||           data_type == TileDataType_HiF8 ||           data_type == TileDataType_E4M3 ||           data_type == TileDataType_E5M2 ||           data_type == TileDataType_E3M2 ||           data_type == TileDataType_E2M3 ||           data_type == TileDataType_E2M1X2 ||           data_type == TileDataType_E1M2X2 ||           data_type == TileDataType_S16 ||           data_type == TileDataType_S8 ||           data_type == TileDataType_S4X2 ||           data_type == TileDataType_U16 ||           data_type == TileDataType_U8 ||           data_type == TileDataType_U4X2;end;
pure func TileOrdinaryMatrixInputTypesSameClass(    left_type: TileDataType, right_type: TileDataType) => booleanbegin    if !TileOrdinaryMatrixInputTypeSupported(left_type) ||       !TileOrdinaryMatrixInputTypeSupported(right_type) then        return FALSE;    end;    return (TileDataTypeIsFloating(left_type) &&            TileDataTypeIsFloating(right_type)) ||           (TileDataTypeIsSigned(left_type) &&            TileDataTypeIsSigned(right_type)) ||           (TileDataTypeIsUnsignedInteger(left_type) &&            TileDataTypeIsUnsignedInteger(right_type));end;
pure func TileOrdinaryMatrixAccumulatorType(    left_type: TileDataType, right_type: TileDataType) => TileDataTypebegin    assert TileOrdinaryMatrixInputTypesSameClass(left_type, right_type);    return TileMatrixAccumulatorDataType(left_type);end;
readonly func BundleCubeDimensionValue(    dimension: BundleDimensionRegister) => integer {0..65535}begin    let index = BundleDimensionIndexOfRegister(dimension);    if !_BundleDimensionPresent[[index]] then return 1; end;    let raw = UInt(_BundleDimensions[[index]]);    if raw <= 65535 then return raw as integer {0..65535}; end;    return 0;end;
readonly func BundleTMATMULDimensionsLegal(    shared_count: integer {0..4}) => booleanbegin    let m = BundleCubeDimensionValue(BundleDimension_LB0);    let n = BundleCubeDimensionValue(BundleDimension_LB1);    let k = BundleCubeDimensionValue(BundleDimension_LB2);    if shared_count == 0 then        return m != 0 && n != 0 && k != 0;    end;    return m >= 1 && m <= 128 && IsNonzeroPowerOfTwo(n) &&           IsNonzeroPowerOfTwo(k);end;
readonly func TileMatrixInfosMatchDimensions(    left: TileInfo, right: TileInfo,    m: integer {1..65535}, n: integer {1..65535},    k: integer {1..65535}) => booleanbegin    return TileInfoDescriptorLegal(left) && TileInfoDescriptorLegal(right) &&           IsNonzeroPowerOfTwo(left.rows) &&           IsNonzeroPowerOfTwo(left.columns) &&           IsNonzeroPowerOfTwo(right.rows) &&           IsNonzeroPowerOfTwo(right.columns) &&           left.valid_rows == m && left.valid_columns == k &&           right.valid_rows == k && right.valid_columns == n;end;
readonly func TileMatrixInfoShapeLegal(left: TileInfo,                                       right: TileInfo) => booleanbegin    return BundleTileOperationSelected() &&           TileInfoDescriptorLegal(left) && TileInfoDescriptorLegal(right) &&           IsNonzeroPowerOfTwo(left.valid_rows) &&           IsNonzeroPowerOfTwo(left.valid_columns) &&           IsNonzeroPowerOfTwo(right.valid_rows) &&           IsNonzeroPowerOfTwo(right.valid_columns) &&           left.valid_columns == right.valid_rows &&           left.valid_rows * right.valid_columns <= PTO_MODEL_TILE_ELEMENTS;end;
readonly func TileOrdinaryMatrixInfosLegal(left: TileInfo,                                           right: TileInfo) => booleanbegin    if !TileMatrixInfoShapeLegal(left, right) then return FALSE; end;    let left_type = TileDataTypeFromEncoding(        CurrentBundleTileOperationDataTypeCode() as TileDataTypeEncoding);    let right_type = if _BundleDataAttributesPresent then        TileDataTypeFromEncoding(            _BundleDataAttributes.data_type as TileDataTypeEncoding)        else left_type;    return left.data_type == left_type && right.data_type == right_type &&           TileOrdinaryMatrixInputTypesSameClass(left_type, right_type);end;
readonly func TileMatrixInfoDestinationLegal(destination: TileIndex,                                              left: TileInfo,                                              right: TileInfo) => booleanbegin    if !TileDescriptorLegal(destination) ||       !TileMatrixInfoShapeLegal(left, right) then return FALSE; end;    let left_type = TileDataTypeFromEncoding(        CurrentBundleTileOperationDataTypeCode() as TileDataTypeEncoding);    let right_type = if _BundleDataAttributesPresent then        TileDataTypeFromEncoding(            _BundleDataAttributes.data_type as TileDataTypeEncoding)        else left_type;    if !TileOrdinaryMatrixInputTypesSameClass(left_type, right_type) then        return FALSE;    end;    let accumulator_type = TileOrdinaryMatrixAccumulatorType(        left_type, right_type);    let expected_destination_type = if _BundleFixedPointAttributes.valid &&        UInt(_BundleFixedPointAttributes.pre_quant_mode) != 0 then        BundleFPATROutputType(_BundleFixedPointAttributes.pre_quant_mode)    else accumulator_type;    return _Tiles[[destination]].valid_rows == left.valid_rows &&           _Tiles[[destination]].valid_columns == right.valid_columns &&           _Tiles[[destination]].data_type == expected_destination_type;end;
readonly func TileMatrixInfoBiasLegal(left: TileInfo, right: TileInfo,                                      bias: TileIndex,                                      mx: boolean) => booleanbegin    if !TileSourceContentsDefined(bias) ||       _Tiles[[bias]].valid_rows != 1 ||       _Tiles[[bias]].valid_columns != right.valid_columns ||       _Tiles[[bias]].layout != TileLayout_RowMajor then        return FALSE;    end;    let left_type = TileDataTypeFromEncoding(        CurrentBundleTileOperationDataTypeCode() as TileDataTypeEncoding);    let right_type = if _BundleDataAttributesPresent then        TileDataTypeFromEncoding(            _BundleDataAttributes.data_type as TileDataTypeEncoding)        else left_type;    let result_type = if mx then TileDataType_FP32 else        TileOrdinaryMatrixAccumulatorType(left_type, right_type);    return _Tiles[[bias]].data_type == result_type;end;
readonly func TileMatrixInfoAccumulatorLegal(destination: TileIndex,                                               accumulator: TileIndex,                                               left: TileInfo,                                               right: TileInfo) => booleanbegin    let output_converted = _BundleFixedPointAttributes.valid &&        UInt(_BundleFixedPointAttributes.pre_quant_mode) != 0;    let accumulator_type = TileOrdinaryMatrixAccumulatorType(        left.data_type, right.data_type);    return TileSourceContentsDefined(accumulator) &&           TileDescriptorLegal(accumulator) &&           TileMatrixInfoShapeLegal(left, right) &&           _Tiles[[accumulator]].valid_rows == left.valid_rows &&           _Tiles[[accumulator]].valid_columns == right.valid_columns &&           _Tiles[[accumulator]].data_type == accumulator_type &&           _Tiles[[accumulator]].layout == _Tiles[[destination]].layout &&           (output_converted ||            _Tiles[[accumulator]].capacity_bytes ==                _Tiles[[destination]].capacity_bytes);end;
readonly func TileMatrixInfoOptionalScalesLegal(    left: TileInfo, left_scale: TileInfo, left_scale_present: boolean,    right: TileInfo, right_scale: TileInfo, right_scale_present: boolean)    => booleanbegin    let primary_shape_legal = TileMatrixInfoShapeLegal(left, right) ||        TileMatrixCubeInfosMatchDimensions(            left, right, left.valid_rows,            right.valid_columns, left.valid_columns) ||        TileMatrixMixedInfosMatchDimensions(            left, right, left.valid_rows,            right.valid_columns, left.valid_columns);    if !primary_shape_legal then return FALSE; end;    let left_type = TileDataTypeFromEncoding(        CurrentBundleTileOperationDataTypeCode() as TileDataTypeEncoding);    let right_type = if _BundleDataAttributesPresent then        TileDataTypeFromEncoding(            _BundleDataAttributes.data_type as TileDataTypeEncoding)        else left_type;    if left.data_type != left_type || right.data_type != right_type ||       !TileMXOperandPairLegal(left_type, right_type) then        return FALSE;    end;    let left_scale_required = TileMXInputTypeNeedsScale(left_type);    let right_scale_required = TileMXInputTypeNeedsScale(right_type);    if left_scale_present != left_scale_required ||       right_scale_present != right_scale_required then        return FALSE;    end;    let left_groups = if left_scale_present then TileMXScaleGroupCount(        left.valid_columns as integer {1..65535}, left_type) else 1;    let right_groups = if right_scale_present then TileMXScaleGroupCount(        left.valid_columns as integer {1..65535}, right_type) else 1;    let left_scale_legal = !left_scale_present ||        (((left_scale.layout == TileLayout_CUBE_M32 && TileCubeDescriptorLegal(left_scale)) ||          (left_scale.layout == TileLayout_RowMajor &&           left_scale.location == TileLocation_Any &&           TileInfoDescriptorLegal(left_scale))) &&         left_scale.data_type == TileMXScaleCarrierType(left_type) &&         left_scale.valid_rows == left.valid_rows &&         left_scale.valid_columns == left_groups);    let right_scale_legal = !right_scale_present ||        (((right_scale.layout == TileLayout_CUBE_M32 && TileCubeDescriptorLegal(right_scale) &&           right_scale.valid_rows == right.valid_columns &&           right_scale.valid_columns == right_groups) ||          (right_scale.layout == TileLayout_RowMajor &&           right_scale.location == TileLocation_Any &&           TileInfoDescriptorLegal(right_scale) &&           right_scale.valid_rows == right_groups &&           right_scale.valid_columns == right.valid_columns)) &&         right_scale.data_type == TileMXScaleCarrierType(right_type));    return left_scale_legal && right_scale_legal;end;
readonly func TileMatrixInfoScalesLegal(left: TileInfo,                                         left_scale: TileInfo,                                         right: TileInfo,                                         right_scale: TileInfo) => booleanbegin    return TileMatrixInfoOptionalScalesLegal(        left, left_scale, TRUE, right, right_scale, TRUE);end;
readonly func TileOrdinaryMatrixOperandsLegal(left: TileIndex,                                              right: TileIndex) => booleanbegin    if !TileMatrixShapeLegal(left, right) then return FALSE; end;    let left_type = TileDataTypeFromEncoding(        CurrentBundleTileOperationDataTypeCode() as TileDataTypeEncoding);    let right_type = if _BundleDataAttributesPresent then        TileDataTypeFromEncoding(            _BundleDataAttributes.data_type as TileDataTypeEncoding)        else left_type;    return _Tiles[[left]].data_type == left_type &&           _Tiles[[right]].data_type == right_type &&           TileOrdinaryMatrixInputTypesSameClass(left_type, right_type);end;
readonly func TileMXMatrixOperandsLegal(left: TileIndex,                                        right: TileIndex) => booleanbegin    if !TileMatrixShapeLegal(left, right) then return FALSE; end;    let left_type = TileDataTypeFromEncoding(        CurrentBundleTileOperationDataTypeCode() as TileDataTypeEncoding);    let right_type = if _BundleDataAttributesPresent then        TileDataTypeFromEncoding(            _BundleDataAttributes.data_type as TileDataTypeEncoding)        else left_type;    return _Tiles[[left]].data_type == left_type &&           _Tiles[[right]].data_type == right_type &&           TileMXOperandPairLegal(left_type, right_type);end;
readonly func TileMatrixBiasShapeLegal(left: TileIndex, right: TileIndex,                                       bias: TileIndex) => booleanbegin    return TileSourceContentsDefined(bias) &&           _Tiles[[bias]].valid_rows == 1 &&           _Tiles[[bias]].valid_columns == _Tiles[[right]].valid_columns &&           _Tiles[[bias]].layout == TileLayout_RowMajor;end;
readonly func TileOrdinaryMatrixBiasLegal(left: TileIndex, right: TileIndex,                                          bias: TileIndex) => booleanbegin    let left_type = TileDataTypeFromEncoding(        CurrentBundleTileOperationDataTypeCode() as TileDataTypeEncoding);    let right_type = if _BundleDataAttributesPresent then        TileDataTypeFromEncoding(            _BundleDataAttributes.data_type as TileDataTypeEncoding)        else left_type;    return TileOrdinaryMatrixOperandsLegal(left, right) &&           TileMatrixBiasShapeLegal(left, right, bias) &&           _Tiles[[bias]].data_type == TileOrdinaryMatrixAccumulatorType(               left_type, right_type);end;
readonly func TileMXMatrixBiasLegal(left: TileIndex, right: TileIndex,                                    bias: TileIndex) => booleanbegin    return TileMXMatrixOperandsLegal(left, right) &&           TileMatrixBiasShapeLegal(left, right, bias) &&           _Tiles[[bias]].data_type == TileDataType_FP32;end;
readonly func TileMatrixScaleLegal(left: TileIndex, right: TileIndex,                                   left_scale: TileIndex,                                   right_scale: TileIndex) => booleanbegin    if !TileMXMatrixOperandsLegal(left, right) then return FALSE; end;    let left_scale_present =        TileMXInputTypeNeedsScale(_Tiles[[left]].data_type);    let right_scale_present =        TileMXInputTypeNeedsScale(_Tiles[[right]].data_type);    return TileMatrixInfoOptionalScalesLegal(        _Tiles[[left]], _Tiles[[left_scale]], left_scale_present,        _Tiles[[right]], _Tiles[[right_scale]], right_scale_present);end;
readonly func TileMatrixDestinationLegal(destination: TileIndex,                                         left: TileIndex,                                         right: TileIndex) => booleanbegin    if !TileCubeDescriptorLegal(_Tiles[[destination]]) ||       !TileMatrixShapeLegal(left, right) then return FALSE; end;    let left_type = TileDataTypeFromEncoding(        CurrentBundleTileOperationDataTypeCode() as TileDataTypeEncoding);    let right_type = if _BundleDataAttributesPresent then        TileDataTypeFromEncoding(            _BundleDataAttributes.data_type as TileDataTypeEncoding)        else left_type;    if !TileOrdinaryMatrixInputTypesSameClass(left_type, right_type) then        return FALSE;    end;    let accumulator_type = TileOrdinaryMatrixAccumulatorType(        left_type, right_type);    let expected_destination_type = if _BundleFixedPointAttributes.valid &&        UInt(_BundleFixedPointAttributes.pre_quant_mode) != 0 then        BundleFPATROutputType(_BundleFixedPointAttributes.pre_quant_mode)    else accumulator_type;    return _Tiles[[destination]].valid_rows == _Tiles[[left]].valid_rows &&           _Tiles[[destination]].valid_columns == _Tiles[[right]].valid_columns &&           _Tiles[[destination]].data_type == expected_destination_type &&           _Tiles[[destination]].layout == _Tiles[[left]].layout;end;
readonly func TileMatrixAccumulatorDestinationLegal(destination: TileIndex,                                                     left: TileIndex,                                                     right: TileIndex) => booleanbegin    if !TileCubeDescriptorLegal(_Tiles[[destination]]) ||       !TileMatrixShapeLegal(left, right) then return FALSE; end;    let accumulator_type = TileOrdinaryMatrixAccumulatorType(        _Tiles[[left]].data_type, _Tiles[[right]].data_type);    return _Tiles[[destination]].valid_rows == _Tiles[[left]].valid_rows &&           _Tiles[[destination]].valid_columns == _Tiles[[right]].valid_columns &&           _Tiles[[destination]].data_type == accumulator_type &&           _Tiles[[destination]].layout == _Tiles[[left]].layout;end;
readonly func TileOperandsLegal_TMATMUL(    destination: TileIndex, left: TileIndex, right: TileIndex) => booleanbegin    return TileOrdinaryMatrixOperandsLegal(left, right) &&           TileMatrixDestinationLegal(destination, left, right);end;
readonly func TileOperandsLegal_TMATMUL_BIAS(    destination: TileIndex, left: TileIndex, right: TileIndex,    bias: TileIndex) => booleanbegin    return TileOperandsLegal_TMATMUL(destination, left, right) &&           TileOrdinaryMatrixBiasLegal(left, right, bias);end;
readonly func TileOperandsLegal_TMATMUL_ACC(    destination: TileIndex, accumulator: TileIndex,    left: TileIndex, right: TileIndex) => booleanbegin    let output_converted = _BundleFixedPointAttributes.valid &&        UInt(_BundleFixedPointAttributes.pre_quant_mode) != 0;    return destination != accumulator &&           TileOperandsLegal_TMATMUL(destination, left, right) &&           TileCubeDescriptorLegal(_Tiles[[accumulator]]) &&           _Tiles[[accumulator]].contents_defined &&           TileMatrixAccumulatorDestinationLegal(accumulator, left, right) &&           _Tiles[[accumulator]].layout == _Tiles[[destination]].layout &&           (output_converted ||            _Tiles[[accumulator]].capacity_bytes ==                _Tiles[[destination]].capacity_bytes);end;
readonly func TileOperandsLegal_TMATMUL_MX(    destination: TileIndex, left: TileIndex, left_scale: TileIndex,    right: TileIndex, right_scale: TileIndex) => booleanbegin    return TileMatrixScaleLegal(left, right, left_scale, right_scale) &&           TileMatrixDestinationLegal(destination, left, right);end;
readonly func TileOperandsLegal_TMATMUL_MX_BIAS(    destination: TileIndex, left: TileIndex, left_scale: TileIndex,    right: TileIndex, right_scale: TileIndex,    bias: TileIndex) => booleanbegin    return TileOperandsLegal_TMATMUL_MX(               destination, left, left_scale, right, right_scale) &&           TileMXMatrixBiasLegal(left, right, bias);end;
readonly func TileOperandsLegal_TMATMUL_MX_ACC(    destination: TileIndex, accumulator: TileIndex,    left: TileIndex, left_scale: TileIndex,    right: TileIndex, right_scale: TileIndex) => booleanbegin    let output_converted = _BundleFixedPointAttributes.valid &&        UInt(_BundleFixedPointAttributes.pre_quant_mode) != 0;    return destination != accumulator &&           TileOperandsLegal_TMATMUL_MX(               destination, left, left_scale, right, right_scale) &&           TileCubeDescriptorLegal(_Tiles[[accumulator]]) &&           _Tiles[[accumulator]].contents_defined &&           TileMatrixAccumulatorDestinationLegal(accumulator, left, right) &&           _Tiles[[accumulator]].layout == _Tiles[[destination]].layout &&           (output_converted ||            _Tiles[[accumulator]].capacity_bytes ==                _Tiles[[destination]].capacity_bytes);end;
readonly func TileOperandsLegal_TGEMV(    destination: TileIndex, left_vector: TileIndex,    right_matrix: TileIndex) => booleanbegin    return TileOperandsLegal_TMATMUL(               destination, left_vector, right_matrix) &&           _Tiles[[left_vector]].valid_rows == 1;end;
readonly func TileOperandsLegal_TGEMV_BIAS(    destination: TileIndex, left_vector: TileIndex,    right_matrix: TileIndex,    bias: TileIndex) => booleanbegin    return TileOperandsLegal_TGEMV(               destination, left_vector, right_matrix) &&           TileOrdinaryMatrixBiasLegal(left_vector, right_matrix, bias);end;
readonly func TileOperandsLegal_TGEMV_ACC(    destination: TileIndex, accumulator: TileIndex,    left_vector: TileIndex, right_matrix: TileIndex) => booleanbegin    return TileOperandsLegal_TMATMUL_ACC(               destination, accumulator, left_vector, right_matrix) &&           _Tiles[[left_vector]].valid_rows == 1;end;
readonly func TileOperandsLegal_TGEMV_MX(    destination: TileIndex, left_vector: TileIndex,    left_scale: TileIndex, right_matrix: TileIndex,    right_scale: TileIndex) => booleanbegin    return TileOperandsLegal_TMATMUL_MX(               destination, left_vector, left_scale,               right_matrix, right_scale) &&           _Tiles[[left_vector]].valid_rows == 1;end;
readonly func TileOperandsLegal_TGEMV_MX_BIAS(    destination: TileIndex, left_vector: TileIndex,    left_scale: TileIndex, right_matrix: TileIndex,    right_scale: TileIndex,    bias: TileIndex) => booleanbegin    return TileOperandsLegal_TGEMV_MX(               destination, left_vector, left_scale,               right_matrix, right_scale) &&           TileMXMatrixBiasLegal(left_vector, right_matrix, bias);end;
readonly func TileOperandsLegal_TGEMV_MX_ACC(    destination: TileIndex, accumulator: TileIndex,    left_vector: TileIndex, left_scale: TileIndex,    right_matrix: TileIndex, right_scale: TileIndex) => booleanbegin    return TileOperandsLegal_TMATMUL_MX_ACC(destination, accumulator,               left_vector, left_scale, right_matrix, right_scale) &&           _Tiles[[left_vector]].valid_rows == 1;end;

架构行为

该内部模型单元不在双语读者指南迁移范围内;请直接阅读本页的 ASL/NDF 所有者与验证证据。

NDF 条款

正文来自 owning ASL。拖拽或按钮只临时改变当前页面显示顺序。

No NDF clause is attached to this unit.

Evidence index

12 matching entries

Executable evidence3
  • PTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE compiles as an independent normative unit
    1. surfaceTILE
    2. ownerPTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE
    3. categorySTATIC-INVARIANT
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-TILE-MODEL-LEGALITY-MATRIX-SHAPE-STATIC-001
    Path
    tests/asl/tile/model/legality/matrix-shape/tile-static-matrix-shape-contract-001.asl
    Kind / role
    static-invariant
    Pass condition
    the complete model and this unit's static invariant compile
    SHA-256
    8b8b0332ed905744f10b06a47279ddf399f49d4c55e6aa29cbae9dced9d3b0de
    Open exact source ↗ for PTO-AVS-TILE-MODEL-LEGALITY-MATRIX-SHAPE-STATIC-001
  • Covers Matrix Numeric Contract Legality.
    1. surfaceTILE
    2. ownerPTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE
    3. categoryBOUNDARY
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-TILE-TESTMATRIXNUMERICCONTRACTLEGALITY-BOUNDARY-001
    Path
    tests/asl/tile/model/legality/matrix-shape/tile-bound-numeric-contract-legality-001.asl
    Kind / role
    boundary
    Pass condition
    TestMatrixNumericContractLegality completes without assertion failure
    SHA-256
    d4d9b5031c8aa7a489d4f27b32048beeb7373fac00f8e51de2eb6393e52fb4c8
    Open exact source ↗ for PTO-AVS-TILE-TESTMATRIXNUMERICCONTRACTLEGALITY-BOUNDARY-001
  • Covers Matrix Physical Accumulator Classes.
    1. surfaceTILE
    2. ownerPTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE
    3. categoryEXECUTION
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-TILE-TESTMATRIXPHYSICALACCUMULATORCLASSES-EXECUTION-001
    Path
    tests/asl/tile/model/legality/matrix-shape/tile-exec-physical-accumulator-classes-001.asl
    Kind / role
    execution
    Pass condition
    TestMatrixPhysicalAccumulatorClasses completes without assertion failure
    SHA-256
    df3babc5baee2dd58ee1d77ac539a64c852ae0e9c1c8eb885735b0a7d53f11d4
    Open exact source ↗ for PTO-AVS-TILE-TESTMATRIXPHYSICALACCUMULATORCLASSES-EXECUTION-001
Commit-scoped evidence5
  • spec/evidence/release-traceability-readiness.json · closedPTO-EVIDENCE-RELEASE-TRACEABILITY
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-RELEASE-TRACEABILITY
    Path
    spec/evidence/release-traceability-readiness.json
    Kind / role
    ASL/NDF/documentation/AVS traceability
    SHA-256
    c7327021d39dc67ac5564bc55073b3870a397d79ac8d9648284d56e33bc14a3e
    Open exact source ↗ for PTO-EVIDENCE-RELEASE-TRACEABILITY
  • spec/evidence/instruction-contract-closure.json · closedPTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSURE
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSURE
    Path
    spec/evidence/instruction-contract-closure.json
    Kind / role
    mnemonic and encoding contract closure
    SHA-256
    3ef2bb62421c79dff8fa77a1c7983923b523244b8090812883ef81286ca8106a
    Open exact source ↗ for PTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSURE
  • spec/evidence/architecture-readiness.json · openPTO-EVIDENCE-ARCHITECTURE-READINESS
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-ARCHITECTURE-READINESS
    Path
    spec/evidence/architecture-readiness.json
    Kind / role
    architecture maturity and blockers
    SHA-256
    4b0b85199101251bea744e0f3591cc31906909dc80d5ab651c417a936036a004
    Open exact source ↗ for PTO-EVIDENCE-ARCHITECTURE-READINESS
  • spec/evidence/release-gate-readiness.json · ready-for-exact-head-verificationPTO-EVIDENCE-RELEASE-GATE-READINESS
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-RELEASE-GATE-READINESS
    Path
    spec/evidence/release-gate-readiness.json
    Kind / role
    exact-head gate readiness
    SHA-256
    a0f4d2b6920c08981ea55fd8ef820708a40d4feb5402c5150e8e9ab532d84ce0
    Open exact source ↗ for PTO-EVIDENCE-RELEASE-GATE-READINESS
  • spec/release-manifest.json · draftPTO-EVIDENCE-RELEASE-MANIFEST
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-RELEASE-MANIFEST
    Path
    spec/release-manifest.json
    Kind / role
    release content and encoding fingerprints
    SHA-256
    1a64c109ed7a90351c41e2a418b3c0ebaf8ad975838986d2101385186b85c0d8
    Open exact source ↗ for PTO-EVIDENCE-RELEASE-MANIFEST
Decision history4
  • Cooperative Shared CUBE Inputs and Transpose · accepted
    1. decision recordADR
    2. case0072

    Decision record

    Loading ADR-0072…

    Sources and references
    Complete stable ID
    ADR-0072
    Path
    docs/status/decisions/0072-cooperative-shared-cube-transpose.md
    Affected units
    PTO-ARCH-PROFILE-RESET, PTO-BLOCK-B-FPATR, PTO-BLOCK-BSTART-TGEMV-ACC, PTO-BLOCK-BSTART-TGEMV-BIAS, PTO-BLOCK-BSTART-TGEMV, PTO-BLOCK-BSTART-TGEMVMX-ACC, PTO-BLOCK-BSTART-TGEMVMX-BIAS, PTO-BLOCK-BSTART-TGEMVMX, PTO-BLOCK-BSTART-TMATMUL-ACC, PTO-BLOCK-BSTART-TMATMUL-BIAS, PTO-BLOCK-BSTART-TMATMUL, PTO-BLOCK-BSTART-TMATMULMX-ACC, PTO-BLOCK-BSTART-TMATMULMX-BIAS, PTO-BLOCK-BSTART-TMATMULMX, PTO-BLOCK-MODEL-DISPATCH-COMMANDS, PTO-BLOCK-MODEL-DISPATCH-CUBE-TMATMUL, PTO-BLOCK-MODEL-DISPATCH-SHARED-CUBE-MATRIX, PTO-BLOCK-MODEL-LIFECYCLE-RESET, PTO-BLOCK-MODEL-SCHEMA-ATTRIBUTES, PTO-BLOCK-MODEL-STATE-DESCRIPTOR-STATE, PTO-BLOCK-MODEL-STATE-TYPES, PTO-TILE-TMATMUL, PTO-TILE-TMATMUL-ACC, PTO-TILE-TMATMUL-BIAS, PTO-TILE-TMATMUL-MX, PTO-TILE-TMATMUL-MX-ACC, PTO-TILE-TMATMUL-MX-BIAS, PTO-TILE-TGEMV, PTO-TILE-TGEMV-ACC, PTO-TILE-TGEMV-BIAS, PTO-TILE-TGEMV-MX, PTO-TILE-TGEMV-MX-ACC, PTO-TILE-TGEMV-MX-BIAS, PTO-TILE-MODEL-LEGALITY-MATRIX-INFO-DESCRIPTOR, PTO-TILE-MODEL-LEGALITY-MATRIX-OPERANDS, PTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE, PTO-TILE-MODEL-STATE-SHARED-REGISTERS
    Affected NDF
    PTO-B-FPATR-MATRIX-POSTPROCESS-001, PTO-CUBE-SHARED-TRANSPOSE-001, PTO-BSTART-TGEMV-ACC-CONTRACT-001, PTO-BSTART-TGEMV-BIAS-CONTRACT-001, PTO-BSTART-TGEMV-CONTRACT-001, PTO-BSTART-TGEMVMX-ACC-CONTRACT-001, PTO-BSTART-TGEMVMX-BIAS-CONTRACT-001, PTO-BSTART-TGEMVMX-CONTRACT-001, PTO-BSTART-TMATMUL-ACC-CONTRACT-001, PTO-BSTART-TMATMUL-BIAS-CONTRACT-001, PTO-BSTART-TMATMUL-CONTRACT-001, PTO-BSTART-TMATMULMX-ACC-CONTRACT-001, PTO-BSTART-TMATMULMX-BIAS-CONTRACT-001, PTO-BSTART-TMATMULMX-CONTRACT-001, PTO-TGEMV-CONTRACT-001, PTO-TGEMV-ACC-CONTRACT-001, PTO-TGEMV-BIAS-CONTRACT-001, PTO-TGEMV-MX-CONTRACT-001, PTO-TGEMV-MX-ACC-CONTRACT-001, PTO-TGEMV-MX-BIAS-CONTRACT-001, PTO-TMATMUL-CONTRACT-001, PTO-TMATMUL-ACC-CONTRACT-001, PTO-TMATMUL-BIAS-CONTRACT-001, PTO-TMATMUL-MX-CONTRACT-001, PTO-TMATMUL-MX-ACC-CONTRACT-001, PTO-TMATMUL-MX-BIAS-CONTRACT-001
    SHA-256
    9bc7340fea777ee543d4b9393f8f6002b55106833e55ff6d388f8beac504dd09
    Open exact decision source ↗ for ADR-0072
  • CUBE Accumulator and Atomic Output Contract · accepted
    1. decision recordADR
    2. case0073

    Decision record

    Loading ADR-0073…

    Sources and references
    Complete stable ID
    ADR-0073
    Path
    docs/status/decisions/0073-cube-accumulator-atomic-output.md
    Affected units
    PTO-BLOCK-BSTART-TGEMV-ACC, PTO-BLOCK-BSTART-TGEMVMX-ACC, PTO-BLOCK-BSTART-TMATMUL-ACC, PTO-BLOCK-BSTART-TMATMULMX-ACC, PTO-BLOCK-MODEL-DISPATCH-CUBE-TMATMUL, PTO-BLOCK-MODEL-OPERANDS-TILE-BINDINGS, PTO-TILE-TMATMUL-ACC, PTO-TILE-TMATMUL-MX-ACC, PTO-TILE-TGEMV-ACC, PTO-TILE-TGEMV-MX-ACC, PTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE
    Affected NDF
    PTO-CUBE-ACCUMULATOR-OUTPUT-001, PTO-BSTART-TGEMV-ACC-CONTRACT-001, PTO-BSTART-TGEMVMX-ACC-CONTRACT-001, PTO-BSTART-TMATMUL-ACC-CONTRACT-001, PTO-BSTART-TMATMULMX-ACC-CONTRACT-001, PTO-TGEMV-ACC-CONTRACT-001, PTO-TGEMV-MX-ACC-CONTRACT-001, PTO-TMATMUL-ACC-CONTRACT-001, PTO-TMATMUL-MX-ACC-CONTRACT-001
    SHA-256
    d63ba89014fe901b5055fc38bbd5578aa1b571c1038321a903f20cc6e9756fef
    Open exact decision source ↗ for ADR-0073
  • Cooperative Group-M Distribution and Inactive PE Semantics · accepted
    1. decision recordADR
    2. case0100

    Decision record

    Loading ADR-0100…

    Sources and references
    Complete stable ID
    ADR-0100
    Path
    docs/status/decisions/0100-cooperative-group-m-distribution.md
    Affected units
    PTO-BLOCK-MODEL-DISPATCH-CUBE-DESTINATION, PTO-BLOCK-MODEL-DISPATCH-CUBE-TMATMUL, PTO-BLOCK-MODEL-DISPATCH-SHARED-CUBE-MATRIX, PTO-BLOCK-MODEL-DISPATCH-TILE-EXECUTION, PTO-BLOCK-MODEL-OPERANDS-LOCAL-GENERATION, PTO-BLOCK-MODEL-OPERANDS-PORTABLE-CARRIERS, PTO-BLOCK-MODEL-OPERANDS-SUBVIEW-DESCRIPTOR, PTO-TILE-MODEL-LEGALITY-MATRIX-OPERANDS, PTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE
    Affected NDF
    PTO-CUBE-GROUP-M-DISTRIBUTION-001, PTO-B-ASSEMBLE-CONSUMER-READINESS-001
    SHA-256
    adcfcca401a69fb4e7635fbe4d65d33b36fb2744b3fbedf6d7862cadbc8e7232
    Open exact decision source ↗ for ADR-0100
  • Matrix Scale Cell Layouts, HiF4 Scale Words, and CScale · accepted
    1. decision recordADR
    2. case0101

    Decision record

    Loading ADR-0101…

    Sources and references
    Complete stable ID
    ADR-0101
    Path
    docs/status/decisions/0101-matrix-scale-and-cscale.md
    Affected units
    PTO-ARCH-DATA-TYPES-FORMAT-HIF4-SCALE, PTO-ARCH-PROFILE-MATRIX-POSTPROCESS, PTO-BLOCK-B-FPATR, PTO-BLOCK-MODEL-DISPATCH-CUBE-TMATMUL, PTO-BLOCK-MODEL-DISPATCH-MATRIX-SCALE, PTO-BLOCK-MODEL-DISPATCH-SHARED-CUBE-MATRIX, PTO-BLOCK-MODEL-SCHEMA-ATTRIBUTES, PTO-BLOCK-MODEL-STATE-TYPES, PTO-TILE-MODEL-EXECUTION-CUBE, PTO-TILE-MODEL-EXECUTION-MATRIX-SCALE, PTO-TILE-MODEL-LEGALITY-MATRIX-FUNCTIONS, PTO-TILE-MODEL-LEGALITY-MATRIX-OPERANDS, PTO-TILE-MODEL-LEGALITY-MATRIX-POSTPROCESS, PTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE, PTO-TILE-MODEL-SHAPE-CUBE-CELL
    Affected NDF
    PTO-B-FPATR-MATRIX-POSTPROCESS-001, PTO-CUBE-CSCALE-001, PTO-CUBE-HIF4-SCALE-001, PTO-CUBE-MATRIX-SCALE-001, PTO-CUBE-MATRIX-SCALE-CELL-001, PTO-CUBE-SHARED-TRANSPOSE-001
    SHA-256
    a5c962437636c0d3f4f3585d3b529fcc9821d4b00c540243c2351978196e9be0
    Open exact decision source ↗ for ADR-0101

Unit metadata

Open 4 generated metadata fields
id
PTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE
surface
tile
classification
[
  "model",
  "legality",
  "matrix-shape"
]
depends_on
[
  "PTO-TILE-MODEL-LEGALITY-MATRIX-FUNCTIONS",
  "PTO-TILE-MODEL-LEGALITY-MATRIX-INFO-DESCRIPTOR",
  "PTO-TILE-MODEL-LEGALITY-MEMORY-SCHEMA"
]
Open generated traceability record
{
  "classification": [
    "model",
    "legality",
    "matrix-shape"
  ],
  "documentation": "docs/tile/model/legality/matrix-shape.md",
  "id": "PTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE",
  "mnemonic": null,
  "readiness_subjects": [
    "ADR-0072",
    "ADR-0073",
    "ADR-0100",
    "ADR-0101"
  ],
  "semantic_tests": [
    "PTO-AVS-TILE-TESTMATRIXNUMERICCONTRACTLEGALITY-BOUNDARY-001",
    "PTO-AVS-TILE-TESTMATRIXPHYSICALACCUMULATORCLASSES-EXECUTION-001"
  ],
  "source": "asl/tile/model/legality/matrix-shape.asl",
  "surface": "tile",
  "tests": [
    "PTO-AVS-TILE-MODEL-LEGALITY-MATRIX-SHAPE-STATIC-001",
    "PTO-AVS-TILE-TESTMATRIXNUMERICCONTRACTLEGALITY-BOUNDARY-001",
    "PTO-AVS-TILE-TESTMATRIXPHYSICALACCUMULATORCLASSES-EXECUTION-001"
  ]
}

来源与发布信息

展开 commit、路径、hash、版本和规范所有者
发布
0.58.5 · 候选发布
Commit
7dc8b7e5b121d2b2499a2273bebff29e2cd86812
ASL SHA-256
de080a69a6b193f3748d33f3a4b989ce2b724fe69864cbc21957b8864b1e4c2e
生成文档
docs/tile/model/legality/matrix-shape.md · 已融合到当前页面
文档 SHA-256
6aab9e2c122ddf23dd374d600a23878d5134d95643fbcd96099fa7ae11d96ae2

精确所有者