{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":703771906,"defaultBranch":"main","name":"mlir-tcp","ownerLogin":"cruise-automation","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2023-10-11T22:15:39.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/6834651?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1716325090.0","currentOid":""},"activityList":{"items":[{"before":"5833c63de3c497c9cbb508bfffcf8d1b8e55568f","after":null,"ref":"refs/heads/muhammad.abubakar/remove_index_array_type","pushedAt":"2024-05-21T20:58:10.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mabubakarpurdue","name":"Muhammad Abubakar","path":"/mabubakarpurdue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13784395?s=80&v=4"}},{"before":"bd89529ec777ac0fab9584c588837f52f2f9e0f6","after":"3d9e71643302a648ac644c044f358949c2d73820","ref":"refs/heads/main","pushedAt":"2024-05-21T20:58:09.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mabubakarpurdue","name":"Muhammad Abubakar","path":"/mabubakarpurdue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13784395?s=80&v=4"},"commit":{"message":"Remove index array type (#71)\n\nRemove index array type since it is not being used\r\n\r\n---------\r\n\r\nCo-authored-by: Muhammad Abubakar \r\nCo-authored-by: Sambhav Jain ","shortMessageHtmlLink":"Remove index array type (#71)"}},{"before":"3083aaf1279d3c2f032c3e1ebb06305309763f9c","after":"5833c63de3c497c9cbb508bfffcf8d1b8e55568f","ref":"refs/heads/muhammad.abubakar/remove_index_array_type","pushedAt":"2024-05-21T20:16:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sjain-stanford","name":"Sambhav Jain","path":"/sjain-stanford","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/19234106?s=80&v=4"},"commit":{"message":"fixes for linker error","shortMessageHtmlLink":"fixes for linker error"}},{"before":"17322d08fb63a7a1881b73db0a0f397287b42c10","after":"3083aaf1279d3c2f032c3e1ebb06305309763f9c","ref":"refs/heads/muhammad.abubakar/remove_index_array_type","pushedAt":"2024-05-16T19:48:33.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mabubakarpurdue","name":"Muhammad Abubakar","path":"/mabubakarpurdue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13784395?s=80&v=4"},"commit":{"message":"remove index array type","shortMessageHtmlLink":"remove index array type"}},{"before":null,"after":"17322d08fb63a7a1881b73db0a0f397287b42c10","ref":"refs/heads/muhammad.abubakar/remove_index_array_type","pushedAt":"2024-05-16T19:45:41.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mabubakarpurdue","name":"Muhammad Abubakar","path":"/mabubakarpurdue","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13784395?s=80&v=4"},"commit":{"message":"remove IndexArray Type","shortMessageHtmlLink":"remove IndexArray Type"}},{"before":"06eb8b5cff361ebbe89d13cf0b5022a9181075a6","after":"bd89529ec777ac0fab9584c588837f52f2f9e0f6","ref":"refs/heads/main","pushedAt":"2024-05-14T16:11:35.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sjain-stanford","name":"Sambhav Jain","path":"/sjain-stanford","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/19234106?s=80&v=4"},"commit":{"message":"[TorchToTcp] Mark torch ops with non-fp inputs dynamically legal (#70)\n\nThis helps avoid legalization errors after Torch -> Tcp, for ops like\r\n`aten.neg` and `aten.sigmoid` with integer inputs, that do not convert\r\nto Tcp (due to type restrictions) and fail legalization, preventing\r\nfurther dialect conversions (to Tosa for instance).","shortMessageHtmlLink":"[TorchToTcp] Mark torch ops with non-fp inputs dynamically legal (#70)"}},{"before":"553b1278228bcd54df729dc5aa6b8bf912a9f5ca","after":"06eb8b5cff361ebbe89d13cf0b5022a9181075a6","ref":"refs/heads/main","pushedAt":"2024-05-01T05:57:48.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sjain-stanford","name":"Sambhav Jain","path":"/sjain-stanford","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/19234106?s=80&v=4"},"commit":{"message":"[NFC] Bump pip requirements (#69)\n\nAs titled.","shortMessageHtmlLink":"[NFC] Bump pip requirements (#69)"}},{"before":"04f327c698dd6f588ce09d8d9c99533c1e9855f9","after":"553b1278228bcd54df729dc5aa6b8bf912a9f5ca","ref":"refs/heads/main","pushedAt":"2024-04-28T06:46:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"navahgar","name":"Raghavan Raman","path":"/navahgar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2213641?s=80&v=4"},"commit":{"message":"Add op for Gather (#68)\n\nThis PR adds the `tcp.gather` op. The design and semantics of this op\r\nare defined in\r\n[docs/gather.md](https://github.com/cruise-automation/mlir-tcp/blob/main/docs/gather.md).\r\n\r\nMore specifically, this PR includes:\r\n* The definition of the `tcp.gather` op.\r\n* Lowering from Torch to Tcp for the `torch.gather` op.\r\n* Lowering from Tcp to Linalg for the `tcp.gather` op.\r\n* Lit tests for the op and the lowerings.\r\n* AOT test the Tcp gather op.\r\n* Renames the op in the design document.\r\n\r\nThis PR does not update the lowering we have from aten.gather to\r\ntcp.custom(\"aten.gather\") pattern\r\n[here](https://github.com/cruise-automation/mlir-tcp/blob/b812717001121df6974687e2b2e7e82b900390dd/lib/Conversion/TorchToTcp/TcpCustomOp.cpp#L29-L45).\r\nWe should be able to control how `aten.gather` gets lowered by fixing\r\nthe order in which the conversion passes are called in the pipeline.","shortMessageHtmlLink":"Add op for Gather (#68)"}},{"before":"ea409354f4c00f064fa5b19849b5f1f36cf348ed","after":"04f327c698dd6f588ce09d8d9c99533c1e9855f9","ref":"refs/heads/main","pushedAt":"2024-04-13T03:40:41.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sjain-stanford","name":"Sambhav Jain","path":"/sjain-stanford","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/19234106?s=80&v=4"},"commit":{"message":"[LLVM Integrate] Bump llvm, torch-mlir, stablehlo (#67)\n\n[LLVM](https://github.com/llvm/llvm-project/tree/a952c123880eb1168f1021b116485e27170d48ca)\r\n(April 11)\r\n\r\n[Torch-MLIR](https://github.com/llvm/torch-mlir/tree/45eaeaaf3640f1f7f7b4743cf5844c3b9d519fdf)\r\n(April 12)\r\n\r\n[StableHlo](https://github.com/openxla/stablehlo/tree/271e8634de184fbfafd677d3876170feb6d08c97)\r\n(March 28)","shortMessageHtmlLink":"[LLVM Integrate] Bump llvm, torch-mlir, stablehlo (#67)"}},{"before":"36f617e0d6d47579dc36e0a28e717692061620c3","after":"ea409354f4c00f064fa5b19849b5f1f36cf348ed","ref":"refs/heads/main","pushedAt":"2024-04-09T08:22:23.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sjain-stanford","name":"Sambhav Jain","path":"/sjain-stanford","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/19234106?s=80&v=4"},"commit":{"message":"[NFC] Project maintenance (#65)\n\n- [x] Fix googletest sha warning\r\n- [x] Bump pip deps\r\n- [x] Move bazelrc common configs up top","shortMessageHtmlLink":"[NFC] Project maintenance (#65)"}},{"before":"86077cf74b44f44eab2554202180de3520f7abf7","after":"36f617e0d6d47579dc36e0a28e717692061620c3","ref":"refs/heads/main","pushedAt":"2024-04-09T05:15:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"navahgar","name":"Raghavan Raman","path":"/navahgar","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2213641?s=80&v=4"},"commit":{"message":"Add ops for rounding (#66)\n\nThis PR adds two Tcp ops for rounding.\r\n\r\n`tcp.round` - rounds the input value, with halfway cases rounded away\r\nfrom zero.\r\n`tcp.round_even` - rounds in the input value, with halfway cases rounded\r\nto the nearest even integer.\r\n\r\nThis PR includes the following:\r\n* The definition of the two ops in Tcp for rounding.\r\n* Lowering from TorchToTcp for the `torch.round` op.\r\n* Lowerings from TcpToLinalg for both the Tcp rounding ops.\r\n* Lit tests for the ops and their lowerings.\r\n* AOT tests for both the Tcp rounding ops.\r\n\r\nSince `torch.round` rounds halfway cases to even, it maps directly to\r\n`tcp.round_even`. There is no direct way to represent the other case\r\n(rounding away from zero) in PyTorch.\r\n\r\nThe AOT test for `tcp.round_even` is through `torch.round`, whereas the\r\nAOT test for `tcp.round` is from a Tcp IR representation.","shortMessageHtmlLink":"Add ops for rounding (#66)"}},{"before":"826922b0cfe8e8810be57e1fb4f92fe9779c765b","after":"86077cf74b44f44eab2554202180de3520f7abf7","ref":"refs/heads/main","pushedAt":"2024-03-28T21:28:46.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sjain-stanford","name":"Sambhav Jain","path":"/sjain-stanford","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/19234106?s=80&v=4"},"commit":{"message":"[T-REX] Add more elementwise ops to AOT test-suite and bugfix for `tcp.sqrt` with integer inputs (#61)\n\nAdds the following ops to T-REX (Tcp Reference EXecution engine):\r\n\r\n- scalar add, sub, mul, div\r\n- sub tensor with alpha\r\n- div tensor with mixed ranks\r\n- tanh\r\n- clamp\r\n- relu (lowers to tcp.clamp)\r\n- sqrt_int, sqrt_float\r\n\r\nThis exposed another bug in TcpToLinalg for lowering `tcp.sqrt`\r\nspecifically for integer inputs. We were blanket converting `tcp.sqrt`\r\nto `math.sqrt`\r\n([here](https://sourcegraph.com/github.com/cruise-automation/mlir-tcp@1da94c618220d16104627ac5af6145fc5b1a9022/-/blob/lib/Conversion/TcpToLinalg/Elementwise.cpp?L110)),\r\nbut `math.sqrt` doesn't support integer inputs.\r\n```\r\nbazel-out/k8-fastbuild/bin/test/AotCompile/_internal_sqrt_int_tcp.mlir:3:10: error: 'math.sqrt' op operand #0 must be floating-point-like, but got 'i32' \r\n %0 = tcp.sqrt %arg0 : tensor -> tensor \r\n ^ \r\nbazel-out/k8-fastbuild/bin/test/AotCompile/_internal_sqrt_int_tcp.mlir:3:10: note: see current operation: %4 = \"math.sqrt\"(%arg1) <{fastmath = #arith.fastmath}> : (i32) -> i32 \r\nTarget //test/AotCompile:sqrt_int_compile_execute_test failed to build\r\n```\r\n\r\nI considered two potential fixes:\r\n1. Add `arith::SIToFPOp` cast when lowering tcp.sqrt in TcpToLinalg, or\r\n1. Add `tcp::CastOp` in TorchToTcp and let our lowering to Linalg\r\nconvert this to `arith::SIToFPOp` automatically.\r\n\r\nI've implemented 2 because it brings tcp.sqrt consistent with the math\r\ndialect op (only support float inputs), and the various casting\r\nsemantics is easier handled using a single tcp::Cast op rather than\r\nwriting custom conversion to the plethora of arith cast ops, maximizing\r\ncode reuse. This is also consistent with how TorchToArith handles it\r\n(see\r\n[test](https://sourcegraph.com/github.com/llvm/torch-mlir@0a581a97a759d34950d48aa7b03ab0a048b60259/-/blob/test/Conversion/TorchToArith/basic.mlir?L250:30-250:49)).","shortMessageHtmlLink":"[T-REX] Add more elementwise ops to AOT test-suite and bugfix for `tc…"}},{"before":"4b5ceea1df6c3eec84c8000a205d18348aaa671a","after":"826922b0cfe8e8810be57e1fb4f92fe9779c765b","ref":"refs/heads/main","pushedAt":"2024-03-26T14:28:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sjain-stanford","name":"Sambhav Jain","path":"/sjain-stanford","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/19234106?s=80&v=4"},"commit":{"message":"[TorchToTcp] [AOT] Add test coverage for broadcast with rank increase (#64)\n\nAs titled.","shortMessageHtmlLink":"[TorchToTcp] [AOT] Add test coverage for broadcast with rank increase ("}},{"before":"1e5544d1f2ef6acf19b98688f7c56955f0b7b8bf","after":null,"ref":"refs/heads/aaron.stgeorge/aten_broadcast_to_much","pushedAt":"2024-03-23T15:10:54.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"sjain-stanford","name":"Sambhav Jain","path":"/sjain-stanford","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/19234106?s=80&v=4"}},{"before":"c8724cfec347afbca2eb3721a9077b4876a90665","after":"4b5ceea1df6c3eec84c8000a205d18348aaa671a","ref":"refs/heads/main","pushedAt":"2024-03-23T15:10:53.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sjain-stanford","name":"Sambhav Jain","path":"/sjain-stanford","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/19234106?s=80&v=4"},"commit":{"message":"[TorchToTcp] Don't broadcast axes that don't change size (#62)\n\nRan into this a bug in Cruse internal repo, the changes here fix the\r\nissue. Here's an example of incorrect lowering:\r\n```mlir\r\n %4 = torch.aten.broadcast_to %3, %1 : !torch.vtensor<[1,2,1,2],f32>, !torch.list -> !torch.vtensor<[4,2,4,2],f32>\r\n```\r\nwas lowering to \r\n```mlir\r\n%13 = tcp.broadcast %4, %6, %8, %10, %12 {axes = [0, 1, 2, 3]} : tensor<1x2x1x2xf32>, index, index, index, index -> tensor<4x2x4x2xf32>\r\n```\r\naxes 1 and 3 should not be broadcasted as those axes stay the same\r\nshape. The correct lowering is\r\n```mlir\r\n%13 = tcp.broadcast %4, %6, %10 {axes = [0, 2]} : tensor<1x2x1x2xf32>, index, index -> tensor<4x2x4x2xf32>\r\n```\r\n\r\n---------\r\n\r\nCo-authored-by: Sambhav Jain ","shortMessageHtmlLink":"[TorchToTcp] Don't broadcast axes that don't change size (#62)"}},{"before":"1c84aa7da0ccacfa83883c951f2ae44f147f6e0e","after":"1e5544d1f2ef6acf19b98688f7c56955f0b7b8bf","ref":"refs/heads/aaron.stgeorge/aten_broadcast_to_much","pushedAt":"2024-03-23T14:50:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sjain-stanford","name":"Sambhav Jain","path":"/sjain-stanford","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/19234106?s=80&v=4"},"commit":{"message":"address comments","shortMessageHtmlLink":"address comments"}},{"before":"1f4ea7bffa01df0ea66acac6653e9669fba357a7","after":"1c84aa7da0ccacfa83883c951f2ae44f147f6e0e","ref":"refs/heads/aaron.stgeorge/aten_broadcast_to_much","pushedAt":"2024-03-23T00:02:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"AaronStGeorge","name":"Aaron St George","path":"/AaronStGeorge","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2278731?s=80&v=4"},"commit":{"message":"Address comments","shortMessageHtmlLink":"Address comments"}},{"before":"4c7f9313aea8db4ca9d82c52ba88aa4af5e5cdc6","after":"1f4ea7bffa01df0ea66acac6653e9669fba357a7","ref":"refs/heads/aaron.stgeorge/aten_broadcast_to_much","pushedAt":"2024-03-22T23:59:51.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"AaronStGeorge","name":"Aaron St George","path":"/AaronStGeorge","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2278731?s=80&v=4"},"commit":{"message":"Add documentation and checks for size of broadcast dims","shortMessageHtmlLink":"Add documentation and checks for size of broadcast dims"}},{"before":"1da94c618220d16104627ac5af6145fc5b1a9022","after":"c8724cfec347afbca2eb3721a9077b4876a90665","ref":"refs/heads/main","pushedAt":"2024-03-22T21:39:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sjain-stanford","name":"Sambhav Jain","path":"/sjain-stanford","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/19234106?s=80&v=4"},"commit":{"message":"[TorchToTcp] [AOT] Lower `aten.expand` op to `tcp.broadcast` (#63)\n\n`torch.broadcast_to` when exported using dynamo generates an\r\n`aten.expand` op (not `aten.broadcast_to`):\r\n```ll\r\nmodule { \r\n func.func @func_main(%arg0: !torch.vtensor<[1,2],f32>) -> !torch.vtensor<[3,2],f32> { \r\n %int3 = torch.constant.int 3 \r\n %int2 = torch.constant.int 2 \r\n %0 = torch.prim.ListConstruct %int3, %int2 : (!torch.int, !torch.int) -> !torch.list \r\n %false = torch.constant.bool false \r\n %1 = torch.aten.expand %arg0, %0, %false : !torch.vtensor<[1,2],f32>, !torch.list, !torch.bool -> !torch.vtensor<[3,2],f32> \r\n return %1 : !torch.vtensor<[3,2],f32> \r\n } \r\n} \r\n```\r\n\r\nThis PR adds conversion of `aten.expand` to `tcp.broadcast` and onboards\r\nto AOT compile+execute framework. The test is disabled from CI right\r\nnow, since it fails as it stands today. Validated that it passes with\r\n@AaronStGeorge 's fixes\r\n(https://github.com/cruise-automation/mlir-tcp/pull/62), pretty cool\r\nthat Aaron caught this downstream, and we would've caught it much\r\nearlier if we had the AOT framework sooner :)\r\n```\r\nbazel-out/k8-fastbuild/bin/test/AotCompile/_internal_broadcast_to_execute_test.cpp:139: Failure \r\nExpected equality of these values: \r\n Result.Output0.data[i] \r\n Which is: 1.3712965 \r\n refOutput0.data()[i] \r\n Which is: 1.6557889 \r\n \r\nbazel-out/k8-fastbuild/bin/test/AotCompile/_internal_broadcast_to_execute_test.cpp:139: Failure \r\nExpected equality of these values: \r\n Result.Output0.data[i] \r\n Which is: 1.3712965 \r\n refOutput0.data()[i] \r\n Which is: 1.6557889 \r\n```","shortMessageHtmlLink":"[TorchToTcp] [AOT] Lower aten.expand op to tcp.broadcast (#63)"}},{"before":"3f4fb1fa38999f5546fbbbbc1db54557dee7cc3c","after":"4c7f9313aea8db4ca9d82c52ba88aa4af5e5cdc6","ref":"refs/heads/aaron.stgeorge/aten_broadcast_to_much","pushedAt":"2024-03-22T20:15:59.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"AaronStGeorge","name":"Aaron St George","path":"/AaronStGeorge","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2278731?s=80&v=4"},"commit":{"message":"Add documentation and checks for size of broadcast dims","shortMessageHtmlLink":"Add documentation and checks for size of broadcast dims"}},{"before":"5abf73aad144d77f0f9a2d9b0ef7b8146093d3ff","after":"3f4fb1fa38999f5546fbbbbc1db54557dee7cc3c","ref":"refs/heads/aaron.stgeorge/aten_broadcast_to_much","pushedAt":"2024-03-22T20:14:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"AaronStGeorge","name":"Aaron St George","path":"/AaronStGeorge","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2278731?s=80&v=4"},"commit":{"message":"Add documentation and checks for size of broadcast dims","shortMessageHtmlLink":"Add documentation and checks for size of broadcast dims"}},{"before":null,"after":"5abf73aad144d77f0f9a2d9b0ef7b8146093d3ff","ref":"refs/heads/aaron.stgeorge/aten_broadcast_to_much","pushedAt":"2024-03-21T22:00:27.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"AaronStGeorge","name":"Aaron St George","path":"/AaronStGeorge","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2278731?s=80&v=4"},"commit":{"message":"Don't broadcast if dim size hasn't changed","shortMessageHtmlLink":"Don't broadcast if dim size hasn't changed"}},{"before":"870c542bdecf2c0ac1b000acf37a1b32156d2945","after":"1da94c618220d16104627ac5af6145fc5b1a9022","ref":"refs/heads/main","pushedAt":"2024-03-16T06:12:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sjain-stanford","name":"Sambhav Jain","path":"/sjain-stanford","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/19234106?s=80&v=4"},"commit":{"message":"[AOT] Replace individual aot_compile definitions with starlark list comprehension (#60)\n\nReduces boilerplate and makes onboarding to aot_compile a one-line\r\nchange :)","shortMessageHtmlLink":"[AOT] Replace individual aot_compile definitions with starlark list c…"}},{"before":"0eab075f8ca8c19eb88902862b33eb5955ad0a0a","after":"870c542bdecf2c0ac1b000acf37a1b32156d2945","ref":"refs/heads/main","pushedAt":"2024-03-15T21:34:46.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sjain-stanford","name":"Sambhav Jain","path":"/sjain-stanford","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/19234106?s=80&v=4"},"commit":{"message":"[NFC] Link to AOT readme from main readme (#59)","shortMessageHtmlLink":"[NFC] Link to AOT readme from main readme (#59)"}},{"before":"d493bbb75b2e2485bca1bfbaa13db1633bebd14a","after":"0eab075f8ca8c19eb88902862b33eb5955ad0a0a","ref":"refs/heads/main","pushedAt":"2024-03-15T00:38:06.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sjain-stanford","name":"Sambhav Jain","path":"/sjain-stanford","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/19234106?s=80&v=4"},"commit":{"message":"LIT test for `decompose-tensor-ops` pass (#58)\n\nThe lit test was missed in\r\nhttps://github.com/cruise-automation/mlir-tcp/pull/50 which added the\r\npass to decompose tensor concat ops and only included AOT e2e tests.","shortMessageHtmlLink":"LIT test for decompose-tensor-ops pass (#58)"}},{"before":"0cd677e4f702d0099af47c74291953b38fac00cf","after":"d493bbb75b2e2485bca1bfbaa13db1633bebd14a","ref":"refs/heads/main","pushedAt":"2024-03-14T22:53:11.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sjain-stanford","name":"Sambhav Jain","path":"/sjain-stanford","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/19234106?s=80&v=4"},"commit":{"message":"[AOT] Support `aten.add.Tensor` with `alpha`, and bufferize arith ops in llvm lowering (#56)\n\nThis required two fixes to get working:\r\n1. FIx legality conditions in TcpToLinalg\r\n(https://github.com/cruise-automation/mlir-tcp/pull/54)\r\n2. Add arith-bufferize pass in our pipeline (this PR)\r\n\r\nTorch dialect program:\r\n```ll\r\nmodule { \r\n func.func @func_main(%arg0: !torch.vtensor<[?,3],f32>, %arg1: !torch.vtensor<[?,3],f32>) -> !torch.vtensor<[?,3],f32> { \r\n %int2 = torch.constant.int 2 \r\n %0 = torch.aten.add.Tensor %arg0, %arg1, %int2 : !torch.vtensor<[?,3],f32>, !torch.vtensor<[?,3],f32>, !torch.int -> !torch.vtensor<[?,3],f32> \r\n return %0 : !torch.vtensor<[?,3],f32> \r\n } \r\n} \r\n```\r\n\r\nTCP dialect program:\r\n```ll\r\nmodule { \r\n func.func @func_main(%arg0: tensor, %arg1: tensor) -> tensor { \r\n %0 = tcp.const {value = dense<2> : tensor} : tensor \r\n %c0 = arith.constant 0 : index \r\n %c3 = arith.constant 3 : index \r\n %1 = tcp.cast %0 {in_int_signedness = #tcp} : tensor -> tensor \r\n %expanded = tensor.expand_shape %1 [] : tensor into tensor<1x1xf32> \r\n %dim = tensor.dim %arg1, %c0 : tensor \r\n %2 = tcp.broadcast %expanded, %dim, %c3 {axes = [0, 1]} : tensor<1x1xf32>, index, index -> tensor \r\n %3 = tcp.mul %2, %arg1 : tensor, tensor -> tensor \r\n %4 = tcp.add %arg0, %3 : tensor, tensor -> tensor \r\n return %4 : tensor \r\n } \r\n}\r\n```","shortMessageHtmlLink":"[AOT] Support aten.add.Tensor with alpha, and bufferize arith ops…"}},{"before":"958fbadb97a4186d53ca96859908b211fedb0482","after":"0cd677e4f702d0099af47c74291953b38fac00cf","ref":"refs/heads/main","pushedAt":"2024-03-14T20:21:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sjain-stanford","name":"Sambhav Jain","path":"/sjain-stanford","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/19234106?s=80&v=4"},"commit":{"message":"Adopt new dynamic_shapes API from torch.export (#57)\n\n`constraints` was soft-deprecated for a while now, superseded by\r\n`dynamic_shapes` but https://github.com/pytorch/pytorch/pull/120860\r\nhard-deprecates it. This PR adopts the new API and pulls in torch-mlir\r\nfixes: https://github.com/llvm/torch-mlir/pull/3026.","shortMessageHtmlLink":"Adopt new dynamic_shapes API from torch.export (#57)"}},{"before":"031e5bc322096b3b828e82c44db190e4284a0ee1","after":"958fbadb97a4186d53ca96859908b211fedb0482","ref":"refs/heads/main","pushedAt":"2024-03-14T16:36:25.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sjain-stanford","name":"Sambhav Jain","path":"/sjain-stanford","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/19234106?s=80&v=4"},"commit":{"message":"More legality fixes in dialect conversions + code consistency cleanup (#55)\n\n- [StablehloToTcp] Don't mark entire stablehlo dialect illegal; instead\r\nonly mark the ops being converted illegal.\r\n- [TcpToArith] Mark `tcp::ConstOp` illegal.\r\n- [NFC] Minor code consistency cleanup","shortMessageHtmlLink":"More legality fixes in dialect conversions + code consistency cleanup ("}},{"before":"f20a89ed77a04a6593a632b54b60384e117959a9","after":"031e5bc322096b3b828e82c44db190e4284a0ee1","ref":"refs/heads/main","pushedAt":"2024-03-14T02:19:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sjain-stanford","name":"Sambhav Jain","path":"/sjain-stanford","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/19234106?s=80&v=4"},"commit":{"message":"TcpToLinalg legality fixes: Mark only the Tcp ops with conversions as illegal (#54)\n\nTcpToLinalg conversion previously marked Tcp dialect as illegal, despite\r\ndoing a partial conversion. So if there are any leftover Tcp ops after\r\nTcpToLinalg, they'd fail legalization (e.g. `tcp.const`). This is not\r\ncorrect and this partial conversion should only mark the Tcp ops it does\r\nconvert as illegal. This PR fixes that.","shortMessageHtmlLink":"TcpToLinalg legality fixes: Mark only the Tcp ops with conversions as…"}},{"before":"e95da9cd422f183c9c2d06532797e171ffff2633","after":"f20a89ed77a04a6593a632b54b60384e117959a9","ref":"refs/heads/main","pushedAt":"2024-03-12T18:46:15.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"sjain-stanford","name":"Sambhav Jain","path":"/sjain-stanford","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/19234106?s=80&v=4"},"commit":{"message":"[AOT] Add tensor slicing to the aot_compile suite (#52)\n\nFor the included tensor slice example, this is the Dynamo exported Torch\r\ndialect:\r\n```ll\r\nmodule { \r\n func.func @func_main(%arg0: !torch.vtensor<[?,3],f32>) -> !torch.vtensor<[2,1],f32> { \r\n %int0 = torch.constant.int 0 \r\n %int0_0 = torch.constant.int 0 \r\n %int2 = torch.constant.int 2 \r\n %int1 = torch.constant.int 1 \r\n %0 = torch.aten.slice.Tensor %arg0, %int0, %int0_0, %int2, %int1 : !torch.vtensor<[?,3],f32>, !torch.int, !torch.int, !torch.int, !torch.int -> !torch.vtensor<[2,3],f32> \r\n %int1_1 = torch.constant.int 1 \r\n %int0_2 = torch.constant.int 0 \r\n %int1_3 = torch.constant.int 1 \r\n %int1_4 = torch.constant.int 1 \r\n %1 = torch.aten.slice.Tensor %0, %int1_1, %int0_2, %int1_3, %int1_4 : !torch.vtensor<[2,3],f32>, !torch.int, !torch.int, !torch.int, !torch.int -> !torch.vtensor<[2,1],f32> \r\n return %1 : !torch.vtensor<[2,1],f32> \r\n } \r\n} \r\n```\r\nand the TCP program using `tensor.extract_slice`s and a bunch of arith\r\nops for indexing:\r\n```ll\r\nmodule { \r\n func.func @func_main(%arg0: tensor) -> tensor<2x1xf32> { \r\n %c0 = arith.constant 0 : index \r\n %c0_i64 = arith.constant 0 : i64 \r\n %dim = tensor.dim %arg0, %c0 : tensor \r\n %0 = arith.index_cast %dim : index to i64 \r\n %1 = arith.cmpi slt, %0, %c0_i64 : i64 \r\n %2 = arith.select %1, %0, %c0_i64 : i64 \r\n %3 = arith.index_cast %2 : i64 to index \r\n %extracted_slice = tensor.extract_slice %arg0[%3, 0] [2, 3] [1, 1] : tensor to tensor<2x3xf32> \r\n %extracted_slice_0 = tensor.extract_slice %extracted_slice[0, 0] [2, 1] [1, 1] : tensor<2x3xf32> to tensor<2x1xf32> \r\n return %extracted_slice_0 : tensor<2x1xf32> \r\n } \r\n} \r\n```\r\nLLVM IRs and host assembly are not shown but the e2e execute test works!","shortMessageHtmlLink":"[AOT] Add tensor slicing to the aot_compile suite (#52)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEUEg1VgA","startCursor":null,"endCursor":null}},"title":"Activity · cruise-automation/mlir-tcp"}