[Mlir-commits] [mlir] [mlir] [tensor] Crash in getPackOpResultTypeShape for tensor.pack/unpack ops. (PR #90641)

Sayan Saha llvmlistbot at llvm.org
Fri May 3 05:00:20 PDT 2024


sahas3 wrote:

Thanks, the repro is in the first comment in this MR. Copying it here again for clarity:

> Windows build of `mlir` with Visual Studio (19.36.32538 for x64) using with the following command:
> 
> `cmake.exe -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS=mlir -DLLVM_ENABLE_EH=ON -DLLVM_ENABLE_RTTI=1 -DLLVM_TARGETS_TO_BUILD=host ../llvm`
> 
> is leading to a crash when calling canonicalization on `tensor.pack`/`tensor.unpack` ops `mlir-opt --canonicalize input.mlir` where the `input.mlir` is as follows (this is taken from one of the filecheck tests for `tensor.pack`):
> 
> ```
> func.func @pack_unpack(%arg0: tensor<128x256xf32>) -> tensor<128x256xf32> {
>           %pack_dest = tensor.empty() : tensor<8x16x8x32xf32>
>           %unpack_dest = tensor.empty() : tensor<128x256xf32>
>           %tp = tensor.pack %arg0 outer_dims_perm = [1, 0] inner_dims_pos = [0, 1] inner_tiles = [8, 32] into %pack_dest : tensor<128x256xf32> -> tensor<8x16x8x32xf32>
>           %tup = tensor.unpack %tp outer_dims_perm = [1, 0] inner_dims_pos = [0, 1] inner_tiles = [8, 32] into %unpack_dest : tensor<8x16x8x32xf32> -> tensor<128x256xf32>
>           return %tup : tensor<128x256xf32>
>         }
> ```
> 
> The crash is seemingly coming from invalid memory access during iterating over `innerDimsPos` within `getPackOpResultTypeShape`.
> 
> This crash is also causing the following tests to fail:
> 
> ```
> MLIR :: Dialect/Linalg/canonicalize.mlir                                                                                                                    
> MLIR :: Dialect/Linalg/data-layout-propagation.mlir                                                                                                         
> MLIR :: Dialect/Linalg/generalize-tensor-pack-tile.mlir                                                                                                     
> MLIR :: Dialect/Linalg/generalize-tensor-pack.mlir                                                                                                          
> MLIR :: Dialect/Linalg/generalize-tensor-unpack-tile.mlir                                                                                                   
> MLIR :: Dialect/Linalg/generalize-tensor-unpack.mlir                                                                                                        
> MLIR :: Dialect/Linalg/transform-lower-pack.mlir                                                                                                            
> MLIR :: Dialect/Linalg/transform-op-fuse.mlir                                                                                                               
> MLIR :: Dialect/Linalg/transform-op-pack.mlir                                                                                                               
> MLIR :: Dialect/Linalg/transform-pack-greedily.mlir                                                                                                         
> MLIR :: Dialect/Tensor/canonicalize.mlir                                                                                                                   
> MLIR :: Dialect/Tensor/fold-into-pack-and-unpack.mlir                                                                                                       
> MLIR :: Dialect/Tensor/invalid.mlir                                                                                                                         
> MLIR :: Dialect/Tensor/ops.mlir                                                                                                                             
> MLIR :: Dialect/Tensor/simplify-pack-unpack.mlir                                                                                                           
> MLIR :: Dialect/Tensor/tiling.mlir
> ```

Note the repo needs to be build on Windows with the specific settings as mentioned above to repro the crash.

https://github.com/llvm/llvm-project/pull/90641


More information about the Mlir-commits mailing list