页面框架已切换为简体中文。尚未完成本地化的交互标签暂时使用英文;ASL/NDF 源、稳定标识和证据在所有语言中保持原文。
PTO-TILE-MODEL-EXECUTION-CUBE
PTO-TILE-MODEL-EXECUTION-CUBEASL 伪代码
下面直接显示完整的 ASL 所有者。
// PTO-UNIT: {"id":"PTO-TILE-MODEL-EXECUTION-CUBE","surface":"tile","classification":["model","execution","cube"],"depends_on":["PTO-TILE-MODEL-MEMORY-RESTART","PTO-TILE-MODEL-EXECUTION-COMPLEX","PTO-TILE-MODEL-EXECUTION-MATRIX-SCALE"]}// PTO-REQ-CUBE-001: profile-defined matrix arithmetic with portable integer// defaults. CUBE operations name their Local destination D explicitly. ACC// forms also name their Local accumulator input C explicitly;// C is snapshotted before D is written so D == C has read-old/write-new// behavior.
impdef func TileProfileMatrixAccumulate(accumulator: Word, left: Word, right: Word, destination_type: TileDataType, left_type: TileDataType, right_type: TileDataType, control: NumericExecutionControl) => Wordbegin return accumulator + MultiplyWord(left, right);end;
impdef func TileProfileMatrixBias(value: Word, bias: Word, destination_type: TileDataType, bias_type: TileDataType) => Wordbegin return value + bias;end;
impdef func TileProfileMatrixScaledAccumulate( accumulator: Word, left: Word, right: Word, left_scale: Word, right_scale: Word, left_scale_present: boolean, right_scale_present: boolean, destination_type: TileDataType, left_type: TileDataType, right_type: TileDataType, left_scale_type: TileDataType, right_scale_type: TileDataType) => Wordbegin let scaled_left = if left_scale_present then MultiplyWord(left, left_scale) else left; let scaled_right = if right_scale_present then MultiplyWord(right, right_scale) else right; return accumulator + MultiplyWord(scaled_left, scaled_right);end;
func MarkLocalTileValidRegionDefined(tile: TileInfo) => TileInfobegin var result = tile; result.defined_elements = Zeros{PTO_MODEL_TILE_ELEMENTS}; result.packed_defined_elements = ZeroPackedTileDefinedElements(); for row = 0 to result.valid_rows - 1 looplimit 65536 do for column = 0 to result.valid_columns - 1 looplimit 65536 do let element = TileStorageIndex(result, row as integer {0..65535}, column as integer {0..65535}); result.defined_elements[element] = '1'; end; end; result.defined_valid_elements = (result.valid_rows * result.valid_columns) as integer {0..524288}; result.contents_defined = TRUE; return result;end;
func MatrixProductResultFromTiles(destination: TileIndex, accumulator: TileIndex, left_tile: TileInfo, right_tile: TileInfo, accumulate: boolean, c_scale: TileIndex, c_scale_present: boolean) => TileInfobegin let destination_tile = _Tiles[[destination]]; let accumulator_tile = _Tiles[[accumulator]]; let selected_data_type = TileDataTypeFromEncoding( CurrentBundleTileOperationDataTypeCode() as TileDataTypeEncoding); let accumulator_data_type = TileMatrixAccumulatorDataType(selected_data_type); let expected_destination_type = if _BundleFixedPointAttributes.valid && UInt(_BundleFixedPointAttributes.pre_quant_mode) != 0 then BundleFPATROutputType(_BundleFixedPointAttributes.pre_quant_mode) else accumulator_data_type; let output_converted = _BundleFixedPointAttributes.valid && UInt(_BundleFixedPointAttributes.pre_quant_mode) != 0; assert left_tile.allocated && left_tile.contents_defined; assert right_tile.allocated && right_tile.contents_defined; assert left_tile.valid_columns == right_tile.valid_rows; assert destination_tile.allocated; assert destination_tile.valid_rows == left_tile.valid_rows; assert destination_tile.valid_columns == right_tile.valid_columns; assert destination_tile.data_type == expected_destination_type; if accumulate then assert accumulator_tile.allocated && accumulator_tile.contents_defined; assert accumulator_tile.valid_rows == left_tile.valid_rows; assert accumulator_tile.valid_columns == right_tile.valid_columns; assert accumulator_tile.data_type == accumulator_data_type; assert accumulator_tile.layout == destination_tile.layout; assert output_converted || accumulator_tile.capacity_bytes == destination_tile.capacity_bytes; end; if c_scale_present then assert accumulate && TileMatrixLocalCScaleSchemaLegal( c_scale, left_tile.valid_rows as integer {1..65535}); end;
let left_payload = left_tile.payload; let right_payload = right_tile.payload; var result: TileInfo = destination_tile; result.contents_defined = FALSE; result.defined_elements = Zeros{PTO_MODEL_TILE_ELEMENTS}; result.defined_valid_elements = 0; result.packed_defined_elements = ZeroPackedTileDefinedElements(); result.location = TileLocation_Matrix; var result_payload: TilePayload = destination_tile.payload; let control = NumericExecutionControl { rounding_mode = DecodeBundleRoundingSelection( _BundleDataAttributes.rounding_mode).rounding_mode, saturating = _BundleDataAttributes.saturating }; for row = 0 to left_tile.valid_rows - 1 looplimit 65536 do for column = 0 to right_tile.valid_columns - 1 looplimit 65536 do let result_element = TileStorageIndex(result, row as integer {0..65535}, column as integer {0..65535}); var sum: Word = MatrixInitialAccumulatorValue( accumulator_tile, accumulate, row as integer {0..65535}, column as integer {0..65535}, c_scale, c_scale_present); for inner = 0 to left_tile.valid_columns - 1 looplimit 65536 do let left_element = TileStorageIndex(left_tile, row as integer {0..65535}, inner as integer {0..65535}); let right_element = TileStorageIndex(right_tile, inner as integer {0..65535}, column as integer {0..65535}); sum = TileProfileMatrixAccumulate(sum, left_payload[[left_element]], right_payload[[right_element]], accumulator_data_type, left_tile.data_type, right_tile.data_type, control); end; result_payload[[result_element]] = sum; end; end; result.payload = result_payload; return MarkLocalTileValidRegionDefined(result);end;
func MatrixProductResult(destination: TileIndex, accumulator: TileIndex, left: TileIndex, right: TileIndex, accumulate: boolean) => TileInfobegin return MatrixProductResultFromTiles(destination, accumulator, _Tiles[[left]], _Tiles[[right]], accumulate, 0, FALSE);end;
func MatrixBiasResult(input: TileInfo, bias: TileIndex, intermediate_type: TileDataType) => TileInfobegin let bias_tile = _Tiles[[bias]]; let bias_payload = bias_tile.payload; assert bias_tile.allocated && bias_tile.contents_defined; assert bias_tile.valid_rows == 1; assert bias_tile.valid_columns == input.valid_columns; assert bias_tile.layout == TileLayout_RowMajor; var result = input; var result_payload = input.payload; for row = 0 to input.valid_rows - 1 looplimit 65536 do for column = 0 to input.valid_columns - 1 looplimit 65536 do let result_element = TileStorageIndex(input, row as integer {0..65535}, column as integer {0..65535}); let bias_element = TileStorageIndex(bias_tile, 0, column as integer {0..65535}); result_payload[[result_element]] = TileProfileMatrixBias( input.payload[[result_element]], bias_payload[[bias_element]], intermediate_type, bias_tile.data_type); end; end; result.payload = result_payload; return result;end;
func MatrixMXProductResultFromTiles(destination: TileIndex, accumulator: TileIndex, left_tile: TileInfo, left_scale_tile: TileInfo, left_scale_present: boolean, right_tile: TileInfo, right_scale_tile: TileInfo, right_scale_present: boolean, accumulate: boolean, c_scale: TileIndex, c_scale_present: boolean) => TileInfobegin let destination_tile = _Tiles[[destination]]; let accumulator_tile = _Tiles[[accumulator]]; let selected_data_type = TileDataTypeFromEncoding( CurrentBundleTileOperationDataTypeCode() as TileDataTypeEncoding); let accumulator_data_type = TileMatrixAccumulatorDataType(selected_data_type); let expected_destination_type = if _BundleFixedPointAttributes.valid && UInt(_BundleFixedPointAttributes.pre_quant_mode) != 0 then BundleFPATROutputType(_BundleFixedPointAttributes.pre_quant_mode) else accumulator_data_type; let output_converted = _BundleFixedPointAttributes.valid && UInt(_BundleFixedPointAttributes.pre_quant_mode) != 0; assert left_tile.allocated && left_tile.contents_defined; assert right_tile.allocated && right_tile.contents_defined; assert !left_scale_present || (left_scale_tile.allocated && left_scale_tile.contents_defined); assert !right_scale_present || (right_scale_tile.allocated && right_scale_tile.contents_defined); assert left_tile.valid_columns == right_tile.valid_rows; assert destination_tile.allocated; assert destination_tile.valid_rows == left_tile.valid_rows; assert destination_tile.valid_columns == right_tile.valid_columns; assert destination_tile.data_type == expected_destination_type; if accumulate then assert accumulator_tile.allocated && accumulator_tile.contents_defined; assert accumulator_tile.valid_rows == left_tile.valid_rows; assert accumulator_tile.valid_columns == right_tile.valid_columns; assert accumulator_tile.data_type == accumulator_data_type; assert accumulator_tile.layout == destination_tile.layout; assert output_converted || accumulator_tile.capacity_bytes == destination_tile.capacity_bytes; end; if c_scale_present then assert accumulate && TileMatrixLocalCScaleSchemaLegal( c_scale, left_tile.valid_rows as integer {1..65535}); end;
let left_payload = left_tile.payload; let right_payload = right_tile.payload; let left_scale_payload = left_scale_tile.payload; let right_scale_payload = right_scale_tile.payload; var result: TileInfo = destination_tile; result.contents_defined = FALSE; result.defined_elements = Zeros{PTO_MODEL_TILE_ELEMENTS}; result.defined_valid_elements = 0; result.packed_defined_elements = ZeroPackedTileDefinedElements(); result.location = TileLocation_Matrix; var result_payload = destination_tile.payload; for row = 0 to left_tile.valid_rows - 1 looplimit 65536 do for column = 0 to right_tile.valid_columns - 1 looplimit 65536 do let result_element = TileStorageIndex(result, row as integer {0..65535}, column as integer {0..65535}); var sum: Word = MatrixInitialAccumulatorValue( accumulator_tile, accumulate, row as integer {0..65535}, column as integer {0..65535}, c_scale, c_scale_present); for inner = 0 to left_tile.valid_columns - 1 looplimit 65536 do let left_element = TileStorageIndex(left_tile, row as integer {0..65535}, inner as integer {0..65535}); let right_element = TileStorageIndex(right_tile, inner as integer {0..65535}, column as integer {0..65535}); let left_scale_element = if left_scale_present then MatrixLeftScaleElement( left_scale_tile, left_tile.data_type, row as integer {0..65535}, inner as integer {0..65535}) else 0; let right_scale_element = if right_scale_present then MatrixRightScaleElement( right_scale_tile, right_tile.data_type, column as integer {0..65535}, inner as integer {0..65535}) else 0; let left_scale_value = if left_scale_present then left_scale_payload[[left_scale_element]] else Zeros{PTO_XLEN}; let right_scale_value = if right_scale_present then right_scale_payload[[right_scale_element]] else Zeros{PTO_XLEN}; sum = TileProfileMatrixScaledAccumulate( sum, left_payload[[left_element]], right_payload[[right_element]], left_scale_value, right_scale_value, left_scale_present, right_scale_present, accumulator_data_type, left_tile.data_type, right_tile.data_type, left_scale_tile.data_type, right_scale_tile.data_type); end; result_payload[[result_element]] = sum; end; end; result.payload = result_payload; return MarkLocalTileValidRegionDefined(result);end;
func MatrixMXProductResult(destination: TileIndex, accumulator: TileIndex, left: TileIndex, left_scale: TileIndex, right: TileIndex, right_scale: TileIndex, accumulate: boolean) => TileInfobegin let left_scale_present = TileMXInputTypeNeedsScale(_Tiles[[left]].data_type); let right_scale_present = TileMXInputTypeNeedsScale(_Tiles[[right]].data_type); return MatrixMXProductResultFromTiles( destination, accumulator, _Tiles[[left]], _Tiles[[left_scale]], left_scale_present, _Tiles[[right]], _Tiles[[right_scale]], right_scale_present, accumulate, 0, FALSE);end;
func MatrixMXProductResultWithOptionalScales( destination: TileIndex, accumulator: TileIndex, left: TileInfo, left_scale: TileInfo, left_scale_present: boolean, right: TileInfo, right_scale: TileInfo, right_scale_present: boolean, accumulate: boolean, c_scale: TileIndex, c_scale_present: boolean) => TileInfobegin return MatrixMXProductResultFromTiles(destination, accumulator, left, left_scale, left_scale_present, right, right_scale, right_scale_present, accumulate, c_scale, c_scale_present);end;
func TMATMULShared(destination: TileIndex, accumulator: TileIndex, left: TileInfo, right: TileInfo, bias: TileIndex, use_bias: boolean, accumulate: boolean, c_scale: TileIndex, c_scale_present: boolean)begin let intermediate_type = TileOrdinaryMatrixAccumulatorType( left.data_type, right.data_type); let product = MatrixProductResultFromTiles(destination, accumulator, left, right, accumulate, c_scale, c_scale_present); let result = if use_bias then MatrixBiasResult(product, bias, intermediate_type) else product; CommitMatrixResult(destination, result, intermediate_type);end;
func TMATMULMXShared(destination: TileIndex, accumulator: TileIndex, left: TileInfo, left_scale: TileInfo, right: TileInfo, right_scale: TileInfo, bias: TileIndex, use_bias: boolean, accumulate: boolean)begin let intermediate_type = TileDataType_FP32; let product = MatrixMXProductResultFromTiles(destination, accumulator, left, left_scale, TRUE, right, right_scale, TRUE, accumulate, 0, FALSE); let result = if use_bias then MatrixBiasResult(product, bias, intermediate_type) else product; CommitMatrixResult(destination, result, intermediate_type);end;
func TMATMULMXSharedWithOptionalScales( destination: TileIndex, accumulator: TileIndex, left: TileInfo, left_scale: TileInfo, left_scale_present: boolean, right: TileInfo, right_scale: TileInfo, right_scale_present: boolean, bias: TileIndex, use_bias: boolean, accumulate: boolean, c_scale: TileIndex, c_scale_present: boolean)begin let intermediate_type = TileDataType_FP32; let product = MatrixMXProductResultWithOptionalScales( destination, accumulator, left, left_scale, left_scale_present, right, right_scale, right_scale_present, accumulate, c_scale, c_scale_present); let result = if use_bias then MatrixBiasResult(product, bias, intermediate_type) else product; CommitMatrixResult(destination, result, intermediate_type);end;
func TMATMUL(destination: TileIndex, left: TileIndex, right: TileIndex)begin let result = MatrixProductResult(destination, destination, left, right, FALSE); CommitMatrixResult(destination, result, TileOrdinaryMatrixAccumulatorType( _Tiles[[left]].data_type, _Tiles[[right]].data_type));end;
func TMATMUL_BIAS(destination: TileIndex, left: TileIndex, right: TileIndex, bias: TileIndex)begin let intermediate_type = TileOrdinaryMatrixAccumulatorType( _Tiles[[left]].data_type, _Tiles[[right]].data_type); let product = MatrixProductResult(destination, destination, left, right, FALSE); let result = MatrixBiasResult(product, bias, intermediate_type); CommitMatrixResult(destination, result, intermediate_type);end;
func TMATMUL_ACC(destination: TileIndex, accumulator: TileIndex, left: TileIndex, right: TileIndex)begin let result = MatrixProductResult(destination, accumulator, left, right, TRUE); CommitMatrixResult(destination, result, TileOrdinaryMatrixAccumulatorType( _Tiles[[left]].data_type, _Tiles[[right]].data_type));end;
func TMATMUL_MX(destination: TileIndex, left: TileIndex, left_scale: TileIndex, right: TileIndex, right_scale: TileIndex)begin let result = MatrixMXProductResult(destination, destination, left, left_scale, right, right_scale, FALSE); CommitMatrixResult(destination, result, TileDataType_FP32);end;
func TMATMUL_MX_BIAS(destination: TileIndex, left: TileIndex, left_scale: TileIndex, right: TileIndex, right_scale: TileIndex, bias: TileIndex)begin let product = MatrixMXProductResult(destination, destination, left, left_scale, right, right_scale, FALSE); let result = MatrixBiasResult(product, bias, TileDataType_FP32); CommitMatrixResult(destination, result, TileDataType_FP32);end;
func TMATMUL_MX_ACC(destination: TileIndex, accumulator: TileIndex, left: TileIndex, left_scale: TileIndex, right: TileIndex, right_scale: TileIndex)begin let result = MatrixMXProductResult(destination, accumulator, left, left_scale, right, right_scale, TRUE); CommitMatrixResult(destination, result, TileDataType_FP32);end;
func TGEMV(destination: TileIndex, left_vector: TileIndex, right_matrix: TileIndex)begin assert _Tiles[[left_vector]].valid_rows == 1; let result = MatrixProductResult(destination, destination, left_vector, right_matrix, FALSE); CommitMatrixResult(destination, result, TileOrdinaryMatrixAccumulatorType( _Tiles[[left_vector]].data_type, _Tiles[[right_matrix]].data_type));end;
func TGEMV_BIAS(destination: TileIndex, left_vector: TileIndex, right_matrix: TileIndex, bias: TileIndex)begin let intermediate_type = TileOrdinaryMatrixAccumulatorType( _Tiles[[left_vector]].data_type, _Tiles[[right_matrix]].data_type); assert _Tiles[[left_vector]].valid_rows == 1; let product = MatrixProductResult(destination, destination, left_vector, right_matrix, FALSE); let result = MatrixBiasResult(product, bias, intermediate_type); CommitMatrixResult(destination, result, intermediate_type);end;
func TGEMV_ACC(destination: TileIndex, accumulator: TileIndex, left_vector: TileIndex, right_matrix: TileIndex)begin assert _Tiles[[left_vector]].valid_rows == 1; let result = MatrixProductResult(destination, accumulator, left_vector, right_matrix, TRUE); CommitMatrixResult(destination, result, TileOrdinaryMatrixAccumulatorType( _Tiles[[left_vector]].data_type, _Tiles[[right_matrix]].data_type));end;
func TGEMV_MX(destination: TileIndex, left_vector: TileIndex, left_scale: TileIndex, right_matrix: TileIndex, right_scale: TileIndex)begin assert _Tiles[[left_vector]].valid_rows == 1; let result = MatrixMXProductResult(destination, destination, left_vector, left_scale, right_matrix, right_scale, FALSE); CommitMatrixResult(destination, result, TileDataType_FP32);end;
func TGEMV_MX_BIAS(destination: TileIndex, left_vector: TileIndex, left_scale: TileIndex, right_matrix: TileIndex, right_scale: TileIndex, bias: TileIndex)begin assert _Tiles[[left_vector]].valid_rows == 1; let product = MatrixMXProductResult(destination, destination, left_vector, left_scale, right_matrix, right_scale, FALSE); let result = MatrixBiasResult(product, bias, TileDataType_FP32); CommitMatrixResult(destination, result, TileDataType_FP32);end;
func TGEMV_MX_ACC(destination: TileIndex, accumulator: TileIndex, left_vector: TileIndex, left_scale: TileIndex, right_matrix: TileIndex, right_scale: TileIndex)begin assert _Tiles[[left_vector]].valid_rows == 1; let result = MatrixMXProductResult(destination, accumulator, left_vector, left_scale, right_matrix, right_scale, TRUE); CommitMatrixResult(destination, result, TileDataType_FP32);end;
架构行为
该内部模型单元不在双语读者指南迁移范围内;请直接阅读本页的 ASL/NDF 所有者与验证证据。
NDF 条款
正文来自 owning ASL。拖拽或按钮只临时改变当前页面显示顺序。
No NDF clause is attached to this unit.
Evidence index
12 matching entries
Executable evidence5
CUBE aliases, composite preflight, and MX rejection are effect safe
- surfaceTILE
- ownerPTO-TILE-MODEL-EXECUTION-CUBE
- categoryBOUNDARY
- case002
Show exact test source
Sources and references
- Complete stable ID
PTO-AVS-TILE-CUBE-PREFLIGHT-BOUND-002- Path
tests/asl/tile/model/execution/cube/tile-bound-preflight-002.asl- Kind / role
- boundary
- Pass condition
- alias, preflight, and applicability rejection assertions hold
- SHA-256
8a25302eef50a31015691493f464bf8c3d80657dbf3d88dcdd0f6432cc9ee593
CUBE selectors and raw carrier types enforce assigned legality
- surfaceTILE
- ownerPTO-TILE-MODEL-EXECUTION-CUBE
- categoryBOUNDARY
- case001
Show exact test source
Sources and references
- Complete stable ID
PTO-AVS-TILE-CUBE-SELECTORS-BOUND-001- Path
tests/asl/tile/model/execution/cube/tile-bound-totality-001.asl- Kind / role
- boundary
- Pass condition
- selector, type, and placement assertions hold
- SHA-256
06adeaf18564ef4a525cffdaf68b38354462ed86033e874dc6c53ab74687e381
PTO-TILE-MODEL-EXECUTION-CUBE compiles as an independent normative unit
- surfaceTILE
- ownerPTO-TILE-MODEL-EXECUTION-CUBE
- categorySTATIC-INVARIANT
- case001
Show exact test source
Sources and references
- Complete stable ID
PTO-AVS-TILE-MODEL-EXECUTION-CUBE-STATIC-001- Path
tests/asl/tile/model/execution/cube/tile-static-cube-contract-001.asl- Kind / role
- static-invariant
- Pass condition
- the complete model and this unit's static invariant compile
- SHA-256
fd9dd8102a0da44356e571839ef289abbac473221d6c4ed4459f4d0009594085
Covers Tile Matmul.
- surfaceTILE
- ownerPTO-TILE-MODEL-EXECUTION-CUBE
- categoryEXECUTION
- case001
Show exact test source
Sources and references
- Complete stable ID
PTO-AVS-TILE-TESTTILEMATMUL-EXECUTION-001- Path
tests/asl/tile/model/execution/cube/tile-exec-matmul-001.asl- Kind / role
- execution
- Pass condition
- TestTileMatmul completes without assertion failure
- SHA-256
3f8e34e66c7f62dbe1c0ae34e3eb1e13ceb7ae588f5230be84ee44fba1c44303
TMATMUL reads and writes logical coordinates through persistent CUBE storage mappings
- surfaceTILE
- ownerPTO-TILE-MODEL-EXECUTION-CUBE
- categoryEXECUTION
- case003
Show exact test source
Sources and references
- Complete stable ID
PTO-AVS-TILE-TMATMUL-CUBE-STORAGE-003- Path
tests/asl/tile/model/execution/cube/tile-exec-tmatmul-cube-storage-003.asl- Kind / role
- execution
- Requirements
- PTO-CUBE-LOCAL-MATRIX-001
- Pass condition
- M16 A N8 B and M16 D produce the exact 2 by 2 product while preserving their non-row-major physical payload order
- SHA-256
e3436bee5f86cc292fb819824a31c1152c964f79b02bd45a9ada96285d2d976f
Commit-scoped evidence5
spec/evidence/release-traceability-readiness.json · closed
PTO-EVIDENCE-RELEASE-TRACEABILITYSources 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
spec/evidence/instruction-contract-closure.json · closed
PTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSURESources 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
spec/evidence/architecture-readiness.json · open
PTO-EVIDENCE-ARCHITECTURE-READINESSSources and references
- Complete stable ID
PTO-EVIDENCE-ARCHITECTURE-READINESS- Path
spec/evidence/architecture-readiness.json- Kind / role
- architecture maturity and blockers
- SHA-256
4b0b85199101251bea744e0f3591cc31906909dc80d5ab651c417a936036a004
spec/evidence/release-gate-readiness.json · ready-for-exact-head-verification
PTO-EVIDENCE-RELEASE-GATE-READINESSSources 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
spec/release-manifest.json · draft
PTO-EVIDENCE-RELEASE-MANIFESTSources and references
- Complete stable ID
PTO-EVIDENCE-RELEASE-MANIFEST- Path
spec/release-manifest.json- Kind / role
- release content and encoding fingerprints
- SHA-256
1a64c109ed7a90351c41e2a418b3c0ebaf8ad975838986d2101385186b85c0d8
Decision history2
Re-encode B.IOT and B.IOS size and PE mode fields · accepted
- decision recordADR
- case0096
Decision record
Loading ADR-0096…
Sources and references
- Complete stable ID
ADR-0096- Path
docs/status/decisions/0096-b-iot-b-ios-sizecode-pemode.md- Affected units
- PTO-ARCH-DATA-TYPES-INTEGER, PTO-ARCH-FEATURES-TILE-ALLOCATION, PTO-ARCH-MEMORY-MODEL-GLOBAL-MEMORY-ACCESS, PTO-ARCH-PROFILE-RESET, PTO-ARCH-PROGRAMMING-MODEL-CORE-PE-TOPOLOGY, PTO-BLOCK-B-IOS, PTO-BLOCK-B-IOT, PTO-BLOCK-MODEL-DISPATCH-COMMANDS, PTO-BLOCK-MODEL-DISPATCH-CUBE-TMATMUL, PTO-BLOCK-MODEL-DISPATCH-DESTINATION-SHAPE, PTO-BLOCK-MODEL-DISPATCH-SHARED-CUBE-MATRIX, PTO-BLOCK-MODEL-DISPATCH-SHARED-TLSU, PTO-BLOCK-MODEL-OPERANDS-SHARED-BINDINGS, PTO-BLOCK-MODEL-OPERANDS-TILE-BINDINGS, PTO-BLOCK-MODEL-SCHEMA-PROFILE-ENCODING, PTO-BLOCK-MODEL-STATE-TYPES, PTO-TILE-MODEL-DEFINEDNESS-ELEMENTS, PTO-TILE-MODEL-DEFINEDNESS-PACKED-BOUNDARY, PTO-TILE-MODEL-EXECUTION-COMPARISON, PTO-TILE-MODEL-EXECUTION-COMPLEX, PTO-TILE-MODEL-EXECUTION-CUBE, PTO-TILE-MODEL-EXECUTION-ELEMENTWISE, PTO-TILE-MODEL-EXECUTION-EXPANSION, PTO-TILE-MODEL-EXECUTION-FUSED-MULTIPLY-ADD, PTO-TILE-MODEL-EXECUTION-GENERATION, PTO-TILE-MODEL-EXECUTION-IMAGE-TO-COLUMN, PTO-TILE-MODEL-EXECUTION-INDEXED-REARRANGEMENT, PTO-TILE-MODEL-EXECUTION-REARRANGEMENT, PTO-TILE-MODEL-EXECUTION-REDUCTION, PTO-TILE-MODEL-EXECUTION-SORTING, PTO-TILE-MODEL-EXECUTION-UNARY, PTO-TILE-MODEL-LEGALITY-ALLOCATION-CAPACITY, PTO-TILE-MODEL-LEGALITY-DESCRIPTOR-SHAPE, PTO-TILE-MODEL-LEGALITY-IMAGE-TO-COLUMN, PTO-TILE-MODEL-LEGALITY-INDEXED-REARRANGEMENT, PTO-TILE-MODEL-LEGALITY-MATRIX-INFO-DESCRIPTOR, PTO-TILE-MODEL-LEGALITY-MATRIX-POSTPROCESS, PTO-TILE-MODEL-LEGALITY-PE-MASK, PTO-TILE-MODEL-MEMORY-LOAD-STORE, PTO-TILE-MODEL-MEMORY-SHARED-MOVEMENT, PTO-TILE-MODEL-NUMERIC-FORMATS, PTO-TILE-MODEL-ORDERING-SORTING, PTO-TILE-MODEL-SHAPE-VALID-REGION, PTO-TILE-MODEL-STATE-ALLOCATION, PTO-TILE-MODEL-STATE-DESCRIPTORS, PTO-TILE-MODEL-STATE-FEATURE-MAP-DESCRIPTORS, PTO-TILE-MODEL-STATE-SHARED-REGISTERS, PTO-TILE-MODEL-STATE-TYPES, PTO-TILE-TLOAD
- Affected NDF
- PTO-ARCH-GM-ACCESS-001, PTO-B-IOS-SHARED-STATE-001, PTO-B-IOT-STREAM-001, PTO-CUBE-ACCUMULATOR-OUTPUT-001, PTO-TLOAD-CUBE-001, PTO-TLOAD-MEMORY-001
- SHA-256
c4b4fb7bc17878f710015207dc19ddaf22a0cf6989d185b16844714c71e23f62
Matrix Scale Cell Layouts, HiF4 Scale Words, and CScale · accepted
- decision recordADR
- 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
Unit metadata
Open 4 generated metadata fields
Open generated traceability record
{
"classification": [
"model",
"execution",
"cube"
],
"documentation": "docs/tile/model/execution/cube.md",
"id": "PTO-TILE-MODEL-EXECUTION-CUBE",
"mnemonic": null,
"readiness_subjects": [
"ADR-0096",
"ADR-0101"
],
"semantic_tests": [
"PTO-AVS-TILE-CUBE-PREFLIGHT-BOUND-002",
"PTO-AVS-TILE-CUBE-SELECTORS-BOUND-001",
"PTO-AVS-TILE-TESTTILEMATMUL-EXECUTION-001",
"PTO-AVS-TILE-TMATMUL-CUBE-STORAGE-003"
],
"source": "asl/tile/model/execution/cube.asl",
"surface": "tile",
"tests": [
"PTO-AVS-TILE-CUBE-PREFLIGHT-BOUND-002",
"PTO-AVS-TILE-CUBE-SELECTORS-BOUND-001",
"PTO-AVS-TILE-MODEL-EXECUTION-CUBE-STATIC-001",
"PTO-AVS-TILE-TESTTILEMATMUL-EXECUTION-001",
"PTO-AVS-TILE-TMATMUL-CUBE-STORAGE-003"
]
}来源与发布信息
展开 commit、路径、hash、版本和规范所有者
- 发布
0.58.5· 候选发布- Commit
7dc8b7e5b121d2b2499a2273bebff29e2cd86812- ASL SHA-256
c3b6207cabb062ee8e16ccb458d99514f856b5e36ecd7c5203797ccf9a6005a9- 生成文档
- docs/tile/model/execution/cube.md · 已融合到当前页面
- 文档 SHA-256
43207ffaf6e5267eee3361d1b41b96f05d6420ac4a8e8dbbcf7f151796ec7255
精确所有者
- ASL PTO-TILE-MODEL-EXECUTION-CUBE
asl/tile/model/execution/cube.asl