Skip to content

Commit 564ce4d

Browse files
gflegartensorflower-gardener
authored andcommitted
Make sure memory copies get eliminated after bufferization
Bufferization of gml_st.set_yield will introduce a copy from source into output. Add a canonicalizer pass after it to identify copies into itself, and eliminate those. PiperOrigin-RevId: 484208007
1 parent a0da83f commit 564ce4d

File tree

1 file changed

+2
-3
lines changed

1 file changed

+2
-3
lines changed

tensorflow/compiler/xla/mlir_hlo/lib/Transforms/hlo_to_gpu_pipeline.cc

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,6 @@ void mlir::createHloToGpuPipeline(OpPassManager& pm,
6262
pm.addNestedPass<FuncOp>(gml_st::createTilingSoftmaxPass(
6363
/*distribute=*/true, options.warpTileDim, "warp"));
6464

65-
// Collapse all materialize ops.
66-
pm.addPass(gml_st::createCollapseMaterializeOpsPass());
67-
6865
// GPU-specific tiling for ops on the warp level.
6966
pm.addNestedPass<FuncOp>(gml_st::createTilingGPUWarpPass());
7067
pm.addNestedPass<FuncOp>(createScalarizationPass());
@@ -106,6 +103,8 @@ void mlir::createHloToGpuPipeline(OpPassManager& pm,
106103
pm.addPass(createCanonicalizerPass());
107104
pm.addPass(createCSEPass());
108105
pm.addNestedPass<FuncOp>(bufferization::createBufferDeallocationPass());
106+
// Canonicalize away memory copies into itself
107+
pm.addPass(createCanonicalizerPass());
109108

110109
// Linalg + GmlSt -> GPU
111110
pm.addNestedPass<FuncOp>(createGmlStToGpuPass());

0 commit comments

Comments
 (0)