Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"Runtime Error: Reshape Operation Fails Due to Mismatched Tensor Volume" #1377

Open
kamalrajkannan78 opened this issue Nov 22, 2024 · 0 comments
Labels
bug Something isn't working
Milestone

Comments

@kamalrajkannan78
Copy link

kamalrajkannan78 commented Nov 22, 2024

Description

  • Adaptive avgpool2d op faces Invalid arguments to reshape runtime error. Tested the ttir graph directly in ttrt following these steps, in that case got this runtime error as well.
    TT-Metail issue -> #16447

TTIR Graph:

module @AdaptiveAvgPool2D attributes {tt.system_desc = #tt.system_desc<[{role = host, target_triple = "x86_64-pc-linux-gnu"}], [{arch = <wormhole_b0>, grid = 8x8, l1_size = 1499136, num_dram_channels = 12, dram_channel_size = 1073741824, noc_l1_address_align_bytes = 16, pcie_address_align_bytes = 32, noc_dram_address_align_bytes = 32, l1_unreserved_base = 1024, erisc_l1_unreserved_base = 1024, dram_unreserved_base = 1024, dram_unreserved_end = 1073741824, physical_cores = {worker = [ 0x0,  0x1,  0x2,  0x3,  0x4,  0x5,  0x6,  0x7,  1x0,  1x1,  1x2,  1x3,  1x4,  1x5,  1x6,  1x7,  2x0,  2x1,  2x2,  2x3,  2x4,  2x5,  2x6,  2x7,  3x0,  3x1,  3x2,  3x3,  3x4,  3x5,  3x6,  3x7,  4x0,  4x1,  4x2,  4x3,  4x4,  4x5,  4x6,  4x7,  5x0,  5x1,  5x2,  5x3,  5x4,  5x5,  5x6,  5x7,  6x0,  6x1,  6x2,  6x3,  6x4,  6x5,  6x6,  6x7,  7x0,  7x1,  7x2,  7x3,  7x4,  7x5,  7x6,  7x7] dram = [ 8x0,  9x0,  10x0,  8x1,  9x1,  10x1,  8x2,  9x2,  10x2,  8x3,  9x3,  10x3]}, supported_data_types = [<f32>, <f16>, <bf16>, <bfp_f8>, <bfp_bf8>, <bfp_f4>, <bfp_bf4>, <bfp_f2>, <bfp_bf2>, <u32>, <u16>, <u8>], supported_tile_sizes = [ 4x16,  16x16,  32x16,  4x32,  16x32,  32x32], num_cbs = 32}], [0], [3 : i32], [ 0x0x0x0]>} {
  func.func @forward(%arg0: tensor<1x1088x7x7xf32> {ttir.name = "input"}) -> (tensor<1x1088x1x1xf32> {ttir.name = "AdaptiveAvgPool2D.output_avg_pool2d_0"}) {
    %0 = tensor.empty() : tensor<1x1x1088x49xf32>
    %1 = "ttir.reshape"(%arg0, %0) <{operand_constraints = [#tt.operand_constraint<dram|l1|scalar|tile|none|interleaved|single_bank|height_sharded|width_sharded|block_sharded|any_layout|any_device|any_device_tile|l1_block_sharded>, #tt.operand_constraint<dram|l1|scalar|tile|none|interleaved|single_bank|height_sharded|width_sharded|block_sharded|any_layout|any_device|any_device_tile|l1_block_sharded>], shape = [1 : i32, 1 : i32, 1088 : i32, 49 : i32]}> : (tensor<1x1088x7x7xf32>, tensor<1x1x1088x49xf32>) -> tensor<1x1x1088x49xf32>
    %2 = tensor.empty() : tensor<1x1x49x1088xf32>
    %3 = "ttir.transpose"(%1, %2) <{dim0 = -2 : si32, dim1 = -1 : si32, operand_constraints = [#tt.operand_constraint<dram|l1|scalar|tile|none|interleaved|single_bank|height_sharded|width_sharded|block_sharded|any_layout|any_device|any_device_tile|l1_block_sharded>, #tt.operand_constraint<dram|l1|scalar|tile|none|interleaved|single_bank|height_sharded|width_sharded|block_sharded|any_layout|any_device|any_device_tile|l1_block_sharded>]}> : (tensor<1x1x1088x49xf32>, tensor<1x1x49x1088xf32>) -> tensor<1x1x49x1088xf32>
    %4 = tensor.empty() : tensor<1x1x1x1088xf32>
    %5 = "ttir.mean"(%3, %4) <{keep_dim = true, operand_constraints = [#tt.operand_constraint<dram|l1|scalar|tile|none|interleaved|single_bank|height_sharded|width_sharded|block_sharded|any_layout|any_device|any_device_tile|l1_block_sharded>, #tt.operand_constraint<dram|l1|scalar|tile|none|interleaved|single_bank|height_sharded|width_sharded|block_sharded|any_layout|any_device|any_device_tile|l1_block_sharded>]}> {dim = -2 : si32} : (tensor<1x1x49x1088xf32>, tensor<1x1x1x1088xf32>) -> tensor<1x1x1x1088xf32>
    %6 = tensor.empty() : tensor<1x1088x1x1xf32>
    %7 = "ttir.reshape"(%5, %6) <{operand_constraints = [#tt.operand_constraint<dram|l1|scalar|tile|none|interleaved|single_bank|height_sharded|width_sharded|block_sharded|any_layout|any_device|any_device_tile|l1_block_sharded>, #tt.operand_constraint<dram|l1|scalar|tile|none|interleaved|single_bank|height_sharded|width_sharded|block_sharded|any_layout|any_device|any_device_tile|l1_block_sharded>], shape = [1 : i32, 1088 : i32, 1 : i32, 1 : i32]}> : (tensor<1x1x1x1088xf32>, tensor<1x1088x1x1xf32>) -> tensor<1x1088x1x1xf32>
    return %7 : tensor<1x1088x1x1xf32>
  }
}

Reproduce

git checkout mramanathan/adaptive_avgpool2d
git submodule update --recursive
pytest forge/test/mlir/test_ops.py -k "avgpool2d" -svv

Observed Behaviour

E       RuntimeError: TT_FATAL @ /proj_sw/user_dev/kkannan/tt-forge-fe/third_party/tt-mlir/third_party/tt-metal/src/tt-metal/ttnn/cpp/ttnn/tensor/tensor_utils.cpp:483: new_volume == old_volume
E       info:
E       Invalid arguments to reshape

Logs

TTRT log

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant