跳到主要内容

PTO-ARCH-PROFILE-MATRIX-POSTPROCESS

PTO-ARCH-PROFILE-MATRIX-POSTPROCESS

ASL 伪代码

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

// PTO-UNIT: {"id":"PTO-ARCH-PROFILE-MATRIX-POSTPROCESS","surface":"arch","classification":["profile","matrix-postprocess"],"depends_on":["PTO-ARCH-PROFILE-MATRIX-QUANTIZATION","PTO-ARCH-PROFILE-REFERENCE-PROFILE","PTO-TILE-MODEL-EXECUTION-MATRIX-SCALE"]}// Bit-exact B.FPATR conversion, activation, auxiliary reduction, and flags.// NDF-BEGIN: PTO-MATRIX-POSTPROCESS-BITEXACT-001// ndf: kind=contract level=L1 layer=architecture status=accepted// Matrix post-processing MUST reduce the raw accumulator before conversion,// select an activation-dependent multiplier before destination conversion,// canonicalize special results, and publish D, enabled auxiliary outputs, and// sticky flags as one non-faulting commit.// NDF-END: PTO-MATRIX-POSTPROCESS-BITEXACT-001
implementation func TileProfileMatrixCScale(    value: Word, exponent: bits(8)) => Wordbegin    let value_class = ClassifyFP32(value[31:0]);    if NumericValueClassIsNaN(value_class) ||       value_class == NumericValue_PositiveInfinity ||       value_class == NumericValue_NegativeInfinity ||       value_class == NumericValue_PositiveZero ||       value_class == NumericValue_NegativeZero then        return value;    end;    var scaled = ReferenceFP32FiniteValue(value[31:0]);    for step = 1 to UInt(exponent) looplimit 255 do        scaled = scaled / 2.0;    end;    let (encoded, flags) = ReferenceFP32FiniteEncoding(        scaled, NumericRound_RNE);    RecordNumericStatusFlags(flags);    return encoded;end;
pure func MatrixFloatingSignedZero(    data_type: TileDataType, negative: boolean) => Wordbegin    if !negative then return Zeros{PTO_XLEN}; end;    case data_type of        when TileDataType_FP32 => return Zeros{PTO_XLEN} + 0x80000000;        when TileDataType_FP16, TileDataType_BF16 =>            return Zeros{PTO_XLEN} + 0x8000;        when TileDataType_E4M3 => return Zeros{PTO_XLEN} + 0x80;        when TileDataType_HiF8 => return Zeros{PTO_XLEN};        otherwise => return Zeros{PTO_XLEN};    end;end;
pure func MatrixFloatingInfinity(    data_type: TileDataType, negative: boolean) => Wordbegin    case data_type of        when TileDataType_FP32 =>            return Zeros{PTO_XLEN} +                (if negative then 0xff800000 else 0x7f800000);        when TileDataType_FP16 =>            return Zeros{PTO_XLEN} +                (if negative then 0xfc00 else 0x7c00);        when TileDataType_BF16 =>            return Zeros{PTO_XLEN} +                (if negative then 0xff80 else 0x7f80);        when TileDataType_HiF8 =>            return Zeros{PTO_XLEN} +                (if negative then 0xef else 0x6f);        otherwise =>            let (available, quiet_nan) =                HardwareNumericCanonicalNaNResult(data_type);            assert available;            return quiet_nan;    end;end;
pure func MatrixFloatingLargestFinite(    data_type: TileDataType, negative: boolean) => Wordbegin    case data_type of        when TileDataType_FP32 =>            return Zeros{PTO_XLEN} +                (if negative then 0xff7fffff else 0x7f7fffff);        when TileDataType_FP16 =>            return Zeros{PTO_XLEN} +                (if negative then 0xfbff else 0x7bff);        when TileDataType_BF16 =>            return Zeros{PTO_XLEN} +                (if negative then 0xff7f else 0x7f7f);        when TileDataType_E4M3 =>            return Zeros{PTO_XLEN} +                (if negative then 0xfe else 0x7e);        when TileDataType_HiF8 =>            return Zeros{PTO_XLEN} +                (if negative then 0xee else 0x6e);        otherwise => unreachable;    end;end;
func MatrixEncodeReal(    value: real, data_type: TileDataType,    control: NumericExecutionControl) => (Word, bits(5))begin    if TileDataTypeIsInteger(data_type) then        return ReferenceMatrixIntegerEncoding(value, data_type, control);    end;    return ReferenceMatrixFloatingEncoding(value, data_type, control);end;
func MatrixPostQuantSpecialValue(    value: Word, source_type: TileDataType,    destination_type: TileDataType,    control: NumericExecutionControl)    => (boolean, Word, bits(5))begin    if !TileDataTypeIsFloating(source_type) then        return (FALSE, Zeros{PTO_XLEN}, Zeros{5});    end;    let value_class = TileNumericValueClass(source_type, value);    if NumericValueClassIsNaN(value_class) then        if TileDataTypeIsInteger(destination_type) then            return (TRUE,                if control.saturating then Zeros{PTO_XLEN}                else TileIntegerMinimum(destination_type),                Zeros{5} + 1);        end;        if control.saturating then            return (TRUE, Zeros{PTO_XLEN},                if value_class == NumericValue_SignalingNaN then                    Zeros{5} + 1 else Zeros{5});        end;        let (available, quiet_nan) =            HardwareNumericCanonicalNaNResult(destination_type);        assert available;        return (TRUE, quiet_nan,            if value_class == NumericValue_SignalingNaN then                Zeros{5} + 1 else Zeros{5});    elsif NumericValueClassIsInfinity(value_class) then        let negative = value_class == NumericValue_NegativeInfinity;        if TileDataTypeIsInteger(destination_type) then            let endpoint = if !control.saturating then                TileIntegerMinimum(destination_type)            else if negative then                TileIntegerMinimum(destination_type)            else                TileIntegerMaximum(destination_type);            return (TRUE, endpoint,                if control.saturating then Zeros{5} + 0x14                else Zeros{5} + 1);        elsif control.saturating then            return (TRUE,                MatrixFloatingLargestFinite(destination_type, negative),                Zeros{5} + 0x14);        else            return (TRUE,                MatrixFloatingInfinity(destination_type, negative),                if destination_type == TileDataType_E4M3 then                    Zeros{5} + 0x14 else Zeros{5});        end;    end;    return (FALSE, Zeros{PTO_XLEN}, Zeros{5});end;
pure func MatrixValueClassNegative(    value_class: NumericValueClass) => booleanbegin    return value_class == NumericValue_NegativeNormal ||           value_class == NumericValue_NegativeSubnormal ||           value_class == NumericValue_NegativeInfinity ||           value_class == NumericValue_NegativeZero;end;
pure func MatrixSelectedMultiplier(    source_negative: boolean, relu_mode: bits(3),    quant_scale: real, relu_param: Word) => realbegin    if !source_negative || UInt(relu_mode) == 0 then        return quant_scale;    elsif UInt(relu_mode) == 1 then        return 0.0;    end;    return FP19FiniteValue(relu_param[18:0]);end;
func MatrixActivationWithFlags(    value: real, source_negative: boolean, relu_mode: bits(3),    quant_scale: real, relu_param: Word) => (real, bits(5))begin    let multiplier = MatrixSelectedMultiplier(        source_negative, relu_mode, quant_scale, relu_param);    return (value * multiplier, Zeros{5});end;
pure func MatrixFPATREffectiveControl(    pre_quant_mode: bits(6), control: NumericExecutionControl)    => NumericExecutionControlbegin    var result = control;    let mode = UInt(pre_quant_mode);    if mode == 25 || mode == 28 then        result.rounding_mode = NumericRound_RHB;    elsif BundleFPATRModeFixedRounding(pre_quant_mode) then        result.rounding_mode = NumericRound_RNE;    end;    return result;end;
func MatrixPostQuantBaseWithFlags(    value: Word, pre_quant_mode: bits(6), output_type: TileDataType,    relu_mode: bits(3), quant_param: Word, relu_param: Word,    control: NumericExecutionControl)    => (Word, bits(5))begin    if UInt(pre_quant_mode) == 0 && UInt(relu_mode) == 0 then        return (value, Zeros{5});    end;    if BundleFPATRModeIsShift(pre_quant_mode) then        let shift = UInt(quant_param[35:32]) + 1;        return MatrixShiftS32ToS16(            value[31:0], shift as integer {1..16});    end;
    let source_type = if UInt(pre_quant_mode) == 0 then output_type    else if BundleFPATRModeUsesS32Accumulator(        pre_quant_mode) then TileDataType_S32 else TileDataType_FP32;    let source_class = if source_type == TileDataType_FP32 then        TileNumericValueClass(source_type, value)    else        NumericValue_PositiveNormal;    let source_negative = if source_type == TileDataType_S32 then        SInt(value[31:0]) < 0    else        MatrixValueClassNegative(source_class);    let scale = if BundleFPATRModeUsesScalarParameter(pre_quant_mode) ||                   BundleFPATRModeUsesVectorParameter(pre_quant_mode) then        FP19FiniteValue(quant_param[31:13])    else        1.0;    let multiplier = MatrixSelectedMultiplier(        source_negative, relu_mode, scale, relu_param);    let (special, special_result, special_flags) =        MatrixPostQuantSpecialValue(            value, source_type, output_type, control);    if special &&       !(source_class == NumericValue_NegativeInfinity &&         multiplier == 0.0) then        return (special_result, special_flags);    end;
    let source_value = if source_type == TileDataType_S32 then        Real(SInt(value[31:0]))    else if source_type == TileDataType_U32 then        Real(UInt(value[31:0]))    else if source_class == NumericValue_NegativeInfinity then        0.0    else        ReferenceFP32FiniteValue(value[31:0]);    let (activated, activation_flags) = MatrixActivationWithFlags(        source_value, source_negative, relu_mode, scale, relu_param);    let offset = MatrixQuantOffset(        quant_param, BundleFPATRModeOffsetWidth(pre_quant_mode));    let intermediate_width =        BundleFPATRModeOffsetWidth(pre_quant_mode);    if source_class == NumericValue_NegativeZero &&       multiplier != 0.0 && offset == 0 &&       TileDataTypeIsFloating(output_type) then        return (            MatrixFloatingSignedZero(output_type, TRUE),            activation_flags);    end;    if intermediate_width != 0 then        let (encoded, encoding_flags) = MatrixQuantizedAffine(            activated, 1.0, offset, intermediate_width,            output_type, control);        return (encoded, activation_flags OR encoding_flags);    end;    let (encoded, encoding_flags) = MatrixEncodeReal(        activated + Real(offset), output_type, control);    return (encoded, activation_flags OR encoding_flags);end;
implementation func TileProfileMatrixPostProcessWithFlags(    value: Word, pre_quant_mode: bits(6), relu_mode: bits(3),    group_n_code: bits(4), output_type: TileDataType,    quant_param: Word, relu_param: Word,    control: NumericExecutionControl) => (Word, bits(5))begin    let effective_control = MatrixFPATREffectiveControl(        pre_quant_mode, control);    return MatrixPostQuantBaseWithFlags(        value, pre_quant_mode, output_type, relu_mode,        quant_param, relu_param, effective_control);end;
implementation func TileProfileMatrixPostProcess(    value: Word, pre_quant_mode: bits(6), relu_mode: bits(3),    group_n_code: bits(4), output_type: TileDataType,    quant_param: Word, relu_param: Word,    control: NumericExecutionControl) => Wordbegin    let (result, -) = TileProfileMatrixPostProcessWithFlags(        value, pre_quant_mode, relu_mode, group_n_code,        output_type, quant_param, relu_param, control);    return result;end;
implementation func TileProfileMatrixReductionStep(    current: Word, candidate: Word, max_abs: boolean,    data_type: TileDataType) => Wordbegin    let (result, -) = TileProfileMatrixReductionStepWithFlags(        current, candidate, max_abs, data_type);    return result;end;
pure func MatrixReductionAbsoluteWithFlags(    value: Word, data_type: TileDataType) => (Word, bits(5))begin    if data_type == TileDataType_U32 then        return (ZeroExtend{PTO_XLEN}(value[31:0]), Zeros{5});    elsif data_type == TileDataType_S32 then        if value[31] == '0' then            return (SignExtend{PTO_XLEN}(value[31:0]), Zeros{5});        end;        let magnitude = Zeros{32} - value[31:0];        if value[31:0] == '10000000000000000000000000000000' then            return (Zeros{PTO_XLEN} + 0x7fffffff, Zeros{5} + 4);        end;        return (            SignExtend{PTO_XLEN}(magnitude),            Zeros{5});    end;    let (result, invalid) = TileFixedUnaryValue(        TileUnary_ABS, data_type, value);    return (result, if invalid then Zeros{5} + 1 else Zeros{5});end;
implementation func TileProfileMatrixReductionStepWithFlags(    current: Word, candidate: Word, max_abs: boolean,    data_type: TileDataType) => (Word, bits(5))begin    let (lhs_abs, lhs_flags) = if max_abs then        MatrixReductionAbsoluteWithFlags(current, data_type)    else        (current, Zeros{5});    let (rhs_abs, rhs_flags) = if max_abs then        MatrixReductionAbsoluteWithFlags(candidate, data_type)    else        (candidate, Zeros{5});    let lhs = if max_abs then lhs_abs else current;    let rhs = if max_abs then rhs_abs else candidate;    let (selected, -, flags) = TileReductionStepWithFlags(        TileReduction_MAX, data_type, lhs, rhs);    return (selected, flags OR lhs_flags OR rhs_flags);end;

架构行为

目的与范围

用途与范围

本单元实现 B.FPATR 的逐位精确矩阵累加器后处理。它协调 C 缩放、预量化、激活、目标编码、辅助归约以及数值标志的累计。

概念与架构状态

处理控制

  • TileProfileMatrixCScale 返回缩放后的 Word。有限值重新编码产生标志时,它会在返回编码值前通过 RecordNumericStatusFlags 记录这些标志。
  • MatrixFPATREffectiveControl 应用指令束属性解析后得到的有效舍入与饱和控制。
  • MatrixSelectedMultiplier、MatrixActivationWithFlags 与 MatrixEncodeReal 分别负责选择乘数、执行激活和完成最终编码。
规则与交互

阶段顺序与状态

原始累加器在转换前完成归约;目标转换前选择由激活方式决定的乘数;特殊结果经过规范化;最后把 D、已启用的辅助输出和粘滞标志作为一次不产生故障的提交发布。

实现依次执行预量化、激活和目标编码,并累计这些内部阶段产生的标志。格式辅助函数为所选路径选择已编码的带符号零、无穷或最大有限值表示。

边界与未定义范围

边界

带有 WithFlags 的入口同时给出结果值和五位状态;包装入口可以只返回结果值。辅助归约使用独立的步骤函数,其中绝对值路径会报告自己的标志。具体指令束的合法性与发布行为仍由矩阵操作所有者负责。

使用示例

示例性流水线示例

本示例块只用于帮助阅读:先应用上文规则,再到规范 ASL 所有者中确认结果。它不会增加任何架构契约。

相关规范所有者

相关所有者

  • 矩阵量化单元拥有逐位精确舍入和格式转换辅助函数。
  • 参考配置档与矩阵缩放所有者提供本阶段使用的配置档钩子和已解析缩放输入。

NDF 条款

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

    1. surfaceARCH
    2. ownerPTO-ARCH-PROFILE-MATRIX-POSTPROCESS
    3. categoryMATRIX-POSTPROCESS-BITEXACT
    4. case001

    规范契约

    contract · L1 · accepted

    Matrix post-processing MUST reduce the raw accumulator before conversion, select an activation-dependent multiplier before destination conversion, canonicalize special results, and publish D, enabled auxiliary outputs, and sticky flags as one non-faulting commit.

    来源与引用
    完整稳定 ID
    PTO-MATRIX-POSTPROCESS-BITEXACT-001
    来源路径
    asl/arch/profile/matrix-postprocess.asl
    适用单元
    PTO-ARCH-PROFILE-MATRIX-POSTPROCESS
    源 SHA-256
    f69bbad94a6064490398c10817a50f8a7249d7a32b5ab95f807761e14363b30c
    条款 SHA-256
    d53b7b9242d9dece4a8dbdd5c3f050bc743992a428f2b62ae502dd3ca9690c33
    打开精确 canonical source ↗

Evidence index

20 matching entries

Executable evidence9
  • Matrix post-processing combines conversion, activation, reduction, and status without identity fallback
    1. surfaceARCH
    2. ownerPTO-ARCH-PROFILE-MATRIX-POSTPROCESS
    3. categoryEXECUTION
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-ARCH-MATRIX-POST-001
    Path
    tests/asl/arch/profile/matrix-postprocess/arch-exec-matrix-postprocess-001.asl
    Kind / role
    execution
    Requirements
    PTO-MATRIX-POSTPROCESS-BITEXACT-001
    Pass condition
    representative S8 activation and maximum reduction return exact values and flags
    SHA-256
    92669a95060a3b8714455a3f9963aeede37677257743c6098cf45a6af57758de
    Open exact source ↗ for PTO-AVS-ARCH-MATRIX-POST-001
  • Matrix activation selects the negative-path multiplier before destination conversion
    1. surfaceARCH
    2. ownerPTO-ARCH-PROFILE-MATRIX-POSTPROCESS
    3. categoryEXECUTION
    4. case002
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-ARCH-MATRIX-POSTPROCESS-PIPELINE-002
    Path
    tests/asl/arch/profile/matrix-postprocess/arch-exec-matrix-postprocess-pipeline-002.asl
    Kind / role
    execution
    Requirements
    PTO-MATRIX-POSTPROCESS-BITEXACT-001
    Pass condition
    an FP32 value at a double-rounding boundary produces the single-round FP16 result and exact flags
    SHA-256
    29d156198af9caef5156e22bb229ffab7286670561b6228df661121249708a90
    Open exact source ↗ for PTO-AVS-ARCH-MATRIX-POSTPROCESS-PIPELINE-002
  • PTO-ARCH-PROFILE-MATRIX-POSTPROCESS compiles as an independent normative unit
    1. surfaceARCH
    2. ownerPTO-ARCH-PROFILE-MATRIX-POSTPROCESS
    3. categorySTATIC-INVARIANT
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-ARCH-PROFILE-MATRIX-POSTPROCESS-STATIC-001
    Path
    tests/asl/arch/profile/matrix-postprocess/arch-static-matrix-postprocess-contract-001.asl
    Kind / role
    static-invariant
    Requirements
    PTO-MATRIX-POSTPROCESS-BITEXACT-001
    Pass condition
    the complete model and this unit's static invariant compile
    SHA-256
    7f3949620ad409c9911878179425bdf2233a8d259ff2f765ff99f61aeea01392
    Open exact source ↗ for PTO-AVS-ARCH-PROFILE-MATRIX-POSTPROCESS-STATIC-001
  • B.FPATR floating signed zero participates in the complete affine pipeline
    1. surfaceBLOCK
    2. ownerB.FPATR
    3. categoryEXECUTION
    4. case009
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-BLOCK-B-FPATR-ZERO-AFFINE-009
    Path
    tests/asl/block/attributes/B.FPATR/block-exec-b-fpatr-zero-affine-009.asl
    Kind / role
    execution
    Requirements
    PTO-INST-BLOCK-B-FPATR, PTO-MATRIX-POSTPROCESS-BITEXACT-001
    Pass condition
    positive and negative FP32 zero publish the assigned positive negative or zero S8 offset
    SHA-256
    f2fbb807f80841402374fda9bf213be973ba03c06448e6f5b63100f72d868f17
    Open exact source ↗ for PTO-AVS-BLOCK-B-FPATR-ZERO-AFFINE-009
  • Matrix vector parameter preflight rejects subnormal FP19 carriers
    1. surfaceTILE
    2. ownerPTO-TILE-MODEL-LEGALITY-MATRIX-POSTPROCESS
    3. categoryBOUNDARY
    4. case002
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-TILE-MATRIX-PARAMS-002
    Path
    tests/asl/tile/model/legality/matrix-postprocess/tile-bound-matrix-params-002.asl
    Kind / role
    boundary
    Requirements
    PTO-MATRIX-POSTPROCESS-BITEXACT-001, PTO-FP19-PARAMETER-CARRIER-001
    Pass condition
    normal quantization and activation carriers pass while subnormal and nonzero-unused-bit words reject
    SHA-256
    9103c56ebc98d0f221d43e774a367f91d6e5c7cd530cfaa2b88dc95daec57f49
    Open exact source ↗ for PTO-AVS-TILE-MATRIX-PARAMS-002
  • matrix postprocess computes raw D RowMaxOut and partial GroupMaxOut before one publication
    1. surfaceTILE
    2. ownerPTO-TILE-MODEL-EXECUTION-POSTPROCESS
    3. categoryEXECUTION
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-TILE-MODEL-EXECUTION-POSTPROCESS-AUX-EXECUTION-001
    Path
    tests/asl/tile/model/execution/postprocess/tile-exec-postprocess-aux-001.asl
    Kind / role
    execution
    Requirements
    PTO-MATRIX-POSTPROCESS-BITEXACT-001
    Pass condition
    legal U32 outputs observe raw values RowMaxIn and exact full plus partial groups
    SHA-256
    6ef6b64a850a6909c5a28c2eab0b4155dd555044ee0fc0d066441c64a5c3170a
    Open exact source ↗ for PTO-AVS-TILE-MODEL-EXECUTION-POSTPROCESS-AUX-EXECUTION-001
  • single-element RowMax and GroupMax apply MaxAbs before publication
    1. surfaceTILE
    2. ownerPTO-TILE-MODEL-EXECUTION-POSTPROCESS
    3. categoryEXECUTION
    4. case002
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-TILE-POST-MAXABS-SINGLE-002
    Path
    tests/asl/tile/model/execution/postprocess/tile-exec-postprocess-maxabs-single-002.asl
    Kind / role
    execution
    Requirements
    PTO-MATRIX-POSTPROCESS-BITEXACT-001
    Pass condition
    a negative one-element S32 accumulator publishes its positive magnitude to both auxiliary outputs
    SHA-256
    d986c36499a47c94a87f10e4854cc11a611fb33e4aa9f8f07baf619ea52f5bb0
    Open exact source ↗ for PTO-AVS-TILE-POST-MAXABS-SINGLE-002
  • matrix GroupMax executes one partial group when GroupN exceeds N
    1. surfaceTILE
    2. ownerPTO-TILE-MODEL-EXECUTION-POSTPROCESS
    3. categoryEXECUTION
    4. case004
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-TILE-POSTPROCESS-GROUP-LARGE-004
    Path
    tests/asl/tile/model/execution/postprocess/tile-exec-postprocess-group-large-004.asl
    Kind / role
    execution
    Requirements
    PTO-MATRIX-POSTPROCESS-BITEXACT-001
    Pass condition
    a one by three U32 accumulator with GroupN eight publishes one maximum value
    SHA-256
    d85357a8178860f0d81961453d6ba041aa3d9a81e7989d3bf5ab297c871ac511
    Open exact source ↗ for PTO-AVS-TILE-POSTPROCESS-GROUP-LARGE-004
  • matrix postprocess rejects a late GroupMax capacity failure before any publication
    1. surfaceTILE
    2. ownerPTO-TILE-MODEL-EXECUTION-POSTPROCESS
    3. categoryATOMICITY
    4. case003
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-TILE-POSTPROCESS-ROLLBACK-003
    Path
    tests/asl/tile/model/execution/postprocess/tile-atomic-postprocess-rollback-003.asl
    Kind / role
    atomicity
    Requirements
    PTO-MATRIX-POSTPROCESS-BITEXACT-001
    Pass condition
    D RowMaxOut GroupMaxOut allocation flags capacity and source payload remain unchanged
    SHA-256
    eb6bfb4b57227a8805ff5b5189112fc0d2e85e64efa2ec7dc18de907e4bbf51d
    Open exact source ↗ for PTO-AVS-TILE-POSTPROCESS-ROLLBACK-003
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 history6
  • PTO v0 concrete reference profile · accepted
    1. decision recordADR
    2. case0005

    Decision record

    Loading ADR-0005…

    Sources and references
    Complete stable ID
    ADR-0005
    Path
    docs/status/decisions/0005-pto-v0-concrete-reference-profile.md
    Affected units
    PTO-ARCH-PROFILE-APPLICABILITY, PTO-ARCH-PROFILE-E8M0-CONVERSION, PTO-ARCH-PROFILE-EXTENSION-FIRST-USE, PTO-ARCH-PROFILE-MATRIX-POSTPROCESS, PTO-ARCH-PROFILE-MATRIX-QUANTIZATION, PTO-ARCH-PROFILE-REFERENCE-PROFILE, PTO-ARCH-PROFILE-REFERENCE-QUANTIZATION, PTO-ARCH-PROFILE-RESET, PTO-ARCH-PROFILE-TRAP-CONTEXT-RECOVERY
    Affected NDF
    PTO-ARCH-EXTENSION-FIRST-USE-PROFILE-001, PTO-MATRIX-POSTPROCESS-BITEXACT-001, PTO-MATRIX-QUANT-BITEXACT-001, PTO-TCVT-E8M0-PROFILE-001
    SHA-256
    a83528c2fc744cc120c2a0a32c82410059638ea88936fa65ac0eb36a0274d87c
    Open exact decision source ↗ for ADR-0005
  • Numeric profile identity and bounded variation framework · accepted
    1. decision recordADR
    2. case0037

    Decision record

    Loading ADR-0037…

    Sources and references
    Complete stable ID
    ADR-0037
    Path
    docs/status/decisions/0037-numeric-profile-identity-and-variation-framework.md
    Affected units
    PTO-ARCH-PROFILE-APPLICABILITY, PTO-ARCH-PROFILE-E8M0-CONVERSION, PTO-ARCH-PROFILE-MATRIX-POSTPROCESS, PTO-ARCH-PROFILE-MATRIX-QUANTIZATION, PTO-ARCH-PROFILE-REFERENCE-PROFILE, PTO-ARCH-PROFILE-REFERENCE-QUANTIZATION
    Affected NDF
    PTO-MATRIX-POSTPROCESS-BITEXACT-001, PTO-MATRIX-QUANT-BITEXACT-001, PTO-TCVT-E8M0-PROFILE-001
    SHA-256
    b09efd36ccfc7258d1743c974f42b875ead42137c503f576a12f471f65b52e30
    Open exact decision source ↗ for ADR-0037
  • Numeric variation-point ownership · accepted
    1. decision recordADR
    2. case0042

    Decision record

    Loading ADR-0042…

    Sources and references
    Complete stable ID
    ADR-0042
    Path
    docs/status/decisions/0042-numeric-variation-point-ownership.md
    Affected units
    PTO-ARCH-PROFILE-APPLICABILITY, PTO-ARCH-PROFILE-E8M0-CONVERSION, PTO-ARCH-PROFILE-MATRIX-POSTPROCESS, PTO-ARCH-PROFILE-MATRIX-QUANTIZATION, PTO-ARCH-PROFILE-REFERENCE-PROFILE, PTO-ARCH-PROFILE-REFERENCE-QUANTIZATION
    Affected NDF
    PTO-MATRIX-POSTPROCESS-BITEXACT-001, PTO-MATRIX-QUANT-BITEXACT-001, PTO-TCVT-E8M0-PROFILE-001
    SHA-256
    f25df23306837e4199f6b7c03f70de853a693fdc6435c65ead57b2a174076081
    Open exact decision source ↗ for ADR-0042
  • Hardware special-value result checkpoint · accepted
    1. decision recordADR
    2. case0050

    Decision record

    Loading ADR-0050…

    Sources and references
    Complete stable ID
    ADR-0050
    Path
    docs/status/decisions/0050-hardware-special-value-checkpoint.md
    Affected units
    PTO-ARCH-DATA-TYPES-FORMAT-DESCRIPTOR, PTO-ARCH-DATA-TYPES-NUMERIC-FORMATS, PTO-ARCH-PROFILE-MATRIX-POSTPROCESS, PTO-SCALAR-FMAX, PTO-SCALAR-FMIN, PTO-TILE-TMAX, PTO-TILE-TMIN
    Affected NDF
    PTO-FMAX-DECISION-BINDING-001, PTO-FMIN-DECISION-BINDING-001, PTO-MATRIX-POSTPROCESS-BITEXACT-001, PTO-NUMERIC-FINITE-DECOMPOSITION-001, PTO-NUMERIC-FORMAT-DESCRIPTOR-001, PTO-TMAX-CONTRACT-001, PTO-TMIN-CONTRACT-001
    SHA-256
    08cfdeb16bf245980c9db849994e181e5079efc53475762cdad1df9f555993b5
    Open exact decision source ↗ for ADR-0050
  • B.FPATR Complete-Bundle Matrix PostProcess · accepted
    1. decision recordADR
    2. case0064

    Decision record

    Loading ADR-0064…

    Sources and references
    Complete stable ID
    ADR-0064
    Path
    docs/status/decisions/0064-b-fpatr-complete-bundle-postprocess.md
    Affected units
    PTO-ARCH-PROFILE-MATRIX-POSTPROCESS, PTO-ARCH-PROFILE-MATRIX-QUANTIZATION, PTO-BLOCK-B-FPATR
    Affected NDF
    PTO-B-FPATR-MATRIX-POSTPROCESS-001, PTO-MATRIX-POSTPROCESS-BITEXACT-001, PTO-MATRIX-QUANT-BITEXACT-001
    SHA-256
    853e7fe83cf78a1fbf1fe1668ce6dbf64e5da29ddb301865ed03e8af8f99cad1
    Open exact decision source ↗ for ADR-0064
  • 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-ARCH-PROFILE-MATRIX-POSTPROCESS
surface
arch
classification
[
  "profile",
  "matrix-postprocess"
]
depends_on
[
  "PTO-ARCH-PROFILE-MATRIX-QUANTIZATION",
  "PTO-ARCH-PROFILE-REFERENCE-PROFILE",
  "PTO-TILE-MODEL-EXECUTION-MATRIX-SCALE"
]
Open generated traceability record
{
  "classification": [
    "profile",
    "matrix-postprocess"
  ],
  "documentation": "docs/arch/profile/matrix-postprocess.md",
  "id": "PTO-ARCH-PROFILE-MATRIX-POSTPROCESS",
  "mnemonic": null,
  "readiness_subjects": [
    "ADR-0005",
    "ADR-0037",
    "ADR-0042",
    "ADR-0050",
    "ADR-0064",
    "ADR-0101"
  ],
  "semantic_tests": [
    "PTO-AVS-ARCH-MATRIX-POST-001",
    "PTO-AVS-ARCH-MATRIX-POSTPROCESS-PIPELINE-002"
  ],
  "source": "asl/arch/profile/matrix-postprocess.asl",
  "surface": "arch",
  "tests": [
    "PTO-AVS-ARCH-MATRIX-POST-001",
    "PTO-AVS-ARCH-MATRIX-POSTPROCESS-PIPELINE-002",
    "PTO-AVS-ARCH-PROFILE-MATRIX-POSTPROCESS-STATIC-001"
  ]
}

来源与发布信息

展开 commit、路径、hash、版本和规范所有者
发布
0.58.5 · 候选发布
Commit
7dc8b7e5b121d2b2499a2273bebff29e2cd86812
ASL SHA-256
f69bbad94a6064490398c10817a50f8a7249d7a32b5ab95f807761e14363b30c
文档 SHA-256
3682219687b712a6c0a5077380f226bb45e28090761a98248d34a874ae04af42

精确所有者