PTO-TILE-MODEL-EXECUTION-CUBE
PTO-TILE-MODEL-EXECUTION-CUBEASL pseudocode
The complete ASL owner is shown directly below.
// 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;
Architecture behavior
This internal model unit is documented through its normative ASL/NDF owners and validation evidence; it has no reader-guide migration target.
NDF clauses
Bodies come from owning ASL. Dragging or buttons change only this page-session view order.
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"
]
}Sources and release identity
Show commit, paths, hashes, version, and canonical owners
- Release
0.58.5· Release candidate- Commit
7dc8b7e5b121d2b2499a2273bebff29e2cd86812- Original ASL
- asl/tile/model/execution/cube.asl
- ASL SHA-256
c3b6207cabb062ee8e16ccb458d99514f856b5e36ecd7c5203797ccf9a6005a9- Generated documentation
- docs/tile/model/execution/cube.md · embedded in this page
- Documentation SHA-256
43207ffaf6e5267eee3361d1b41b96f05d6420ac4a8e8dbbcf7f151796ec7255
Exact owners
- ASL PTO-TILE-MODEL-EXECUTION-CUBE
asl/tile/model/execution/cube.asl