Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/CompileOptions.jl
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,8 @@ Fine-grained control over the compilation options for the Reactant compiler.
optimization passes. This is `false` by default.
- `disable_pad_optimization_passes`: Disables the pad optimization passes. This is
`false` by default.
- `disable_licm_optimization_passes`: Disables the Loop Invariant Code Motion (LICM)
optimization passes. This is `false` by default.
"""
struct CompileOptions
optimization_passes::Union{Symbol,String}
Expand Down Expand Up @@ -182,6 +184,7 @@ struct CompileOptions
## private options for ablation studies
disable_scatter_gather_optimization_passes::Bool
disable_pad_optimization_passes::Bool
disable_licm_optimization_passes::Bool
end

function CompileOptions(;
Expand All @@ -204,6 +207,7 @@ function CompileOptions(;
sync::Bool=false,
disable_scatter_gather_optimization_passes::Bool=false,
disable_pad_optimization_passes::Bool=false,
disable_licm_optimization_passes::Bool=false,
)
optimization_passes isa Bool &&
(optimization_passes = ifelse(optimization_passes, :all, :none))
Expand Down Expand Up @@ -251,6 +255,7 @@ function CompileOptions(;
sync,
disable_scatter_gather_optimization_passes,
disable_pad_optimization_passes,
disable_licm_optimization_passes,
)
end

Expand Down Expand Up @@ -291,6 +296,7 @@ function __compile_options_with_reversed_propagation(compile_options::CompileOpt
compile_options.sync,
compile_options.disable_scatter_gather_optimization_passes,
compile_options.disable_pad_optimization_passes,
compile_options.disable_licm_optimization_passes,
)
end

Expand Down
26 changes: 20 additions & 6 deletions src/Compiler.jl
Original file line number Diff line number Diff line change
Expand Up @@ -833,16 +833,11 @@ function optimization_passes(
"slice_reduce_window<1>",
"while_deadresult",
"while_dus",
"dus_licm(0)",
"while_op_induction_replacement",
"dus_concat",
"slice_dus_to_concat",
"while_induction_reduction",
"slice_licm(0)",
"elementwise_licm(0)",
"concatenate_licm(0)",
"slice_broadcast",
"while_licm<1>(1)",
"associative_common_mul_op_reordering",
"slice_select_to_select_slice",
"slice_if",
Expand Down Expand Up @@ -915,6 +910,22 @@ function optimization_passes(
"concat_insert_dim_reduce_window",
]

if !compile_options.disable_licm_optimization_passes
append!(
transform_passes_list,
[
"dus_licm(0)",
"slice_licm(0)",
"elementwise_licm(0)",
"concatenate_licm(0)",
"while_licm<1>(1)",
"transpose_licm(0)",
"broadcastindim_licm(0)",
"reshape_licm(0)",
],
)
end

if !compile_options.disable_scatter_gather_optimization_passes
append!(
transform_passes_list,
Expand Down Expand Up @@ -973,14 +984,17 @@ function optimization_passes(
"unary_pad_push_tanh<1>",
"unary_pad_push_exp<1>",
"concat_to_pad<1>",
"pad_licm(0)",
"while_pad_induction_reduction",
"pad_concat_to_concat_pad",
"rotate_pad",
"concat_multipad",
"speculate_if_pad_to_select",
],
)

if !compile_options.disable_licm_optimization_passes
push!(transform_passes_list, "pad_licm(0)")
end
end

# constant prop patterns
Expand Down
5 changes: 3 additions & 2 deletions src/Ops.jl
Original file line number Diff line number Diff line change
Expand Up @@ -2932,8 +2932,9 @@ end
location=mlir_stacktrace("dynamic_slice", @__FILE__, @__LINE__),
) where {T,N}
start_indices = [
Reactant.TracedUtils.promote_to(TracedRNumber{Int32}, index - 1).mlir_data for
index in start_indices
Reactant.TracedUtils.promote_to(
TracedRNumber{Int32}, index - Reactant.unwrapped_eltype(index)(1)
).mlir_data for index in start_indices
]
res = MLIR.IR.result(
stablehlo.dynamic_slice(
Expand Down
Loading