36 Func squashed_head1_filter_0_d_def__ = pipeline.
get_func(35);
37 Func squashed_head1_filter_broadcast_0_d_def__ = pipeline.
get_func(34);
45 Func cost_per_stage_output_0_d_def__ = pipeline.
get_func(26);
58 Func normalized_schedule_features = pipeline.
get_func(12);
61 Func squashed_head1_filter_broadcast = pipeline.
get_func(6);
65 Var n(
sum.get_schedule().dims()[0].var);
131 RVar r94_x(
sum.update(0).get_schedule().dims()[0].var);
132 RVar r94_y(
sum.update(0).get_schedule().dims()[1].var);
147 .reorder(ni, r94_x, r94_y, n)
160 .
fuse(v312, v313, v312)
165 .reorder(v312i, v312)
170 .reorder(v312i, v312)
175 .reorder(v312i, v312)
180 .reorder(v312i, v312)
187 bias1_im_0_d_def__.
update(0)
190 .reorder(v11i, v11, r1532_x);
195 .
reorder(v309i, v311, v309, v310)
196 .
fuse(v309, v310, v309)
201 .reorder(v309i, v309, v310)
202 .fuse(v309, v310, v309)
207 .reorder(v309i, v309, v310)
208 .fuse(v309, v310, v309)
213 .reorder(v309i, v309, v310)
214 .fuse(v309, v310, v309)
219 .reorder(v309i, v309, v310)
220 .fuse(v309, v310, v309)
229 .reorder_storage(v13, v12);
230 filter1_im_0_d_def__.
update(0)
231 .
reorder(r1316_z, r1316_x, r1316_y, v12)
235 filter1_im_0_d_def__.
update(1)
236 .
reorder(r1512_x, r1512_y, v12)
244 .
fuse(v307, v308, v307)
246 updated_head2_bias.
update(0)
249 .reorder(v307i, v307)
251 updated_head2_bias.
update(1)
254 .reorder(v307i, v307)
256 updated_head2_bias.
update(2)
259 .reorder(v307i, v307)
261 updated_head2_bias.
update(3)
264 .reorder(v307i, v307)
266 head2_bias_im_0_d_def__
271 head2_bias_im_0_d_def__.
update(0)
274 .reorder(v21i, v21, r1421_x, r1421_y);
275 head2_conv_0_d_def___1
285 .
reorder(v304i, v306, v304, v305)
286 .
fuse(v304, v305, v304)
288 updated_head2_filter.
update(0)
291 .reorder(v304i, v304, v305)
292 .fuse(v304, v305, v304)
294 updated_head2_filter.
update(1)
297 .reorder(v304i, v304, v305)
298 .fuse(v304, v305, v304)
300 updated_head2_filter.
update(2)
303 .reorder(v304i, v304, v305)
304 .fuse(v304, v305, v304)
306 updated_head2_filter.
update(3)
309 .reorder(v304i, v304, v305)
310 .fuse(v304, v305, v304)
312 head2_filter_im_0_d_def__
317 head2_filter_im_0_d_def__.
update(0)
320 .reorder(v22i, v22, v23, r1400_x, r1400_y);
330 .
reorder(ci, wi, nii, c, ni, w, n)
341 head2_relu_0_d_def__.
update(0)
346 .reorder(ci, c, w, n, r1294_x);
353 updated_head1_bias.
update(0)
356 .reorder(v302i, v302);
357 updated_head1_bias.
update(1)
360 .reorder(v302i, v302);
361 updated_head1_bias.
update(2)
364 .reorder(v302i, v302);
365 updated_head1_bias.
update(3)
368 .reorder(v302i, v302);
369 head1_bias_im_0_d_def__
374 head1_bias_im_0_d_def__.
update(0)
377 .reorder(v14i, v14, r1594_x);
386 .
reorder(v298i, v298, v299i, v301i, v299, v300, v301)
387 .
fuse(v300, v301, v300)
388 .
fuse(v299, v300, v299)
390 updated_head1_filter.
update(0)
394 .reorder(v298i, v298, v299i, v299, v300)
395 .fuse(v299, v300, v299)
397 updated_head1_filter.
update(1)
401 .reorder(v298i, v298, v299i, v299, v300)
402 .fuse(v299, v300, v299)
404 updated_head1_filter.
update(2)
408 .reorder(v298i, v298, v299i, v299, v300)
409 .fuse(v299, v300, v299)
411 updated_head1_filter.
update(3)
415 .reorder(v298i, v298, v299i, v299, v300)
416 .fuse(v299, v300, v299)
418 squashed_head1_filter_0_d_def__
424 squashed_head1_filter_0_d_def__.
update(0)
427 .reorder(ci, c, s, n, r1614_x);
428 squashed_head1_filter_broadcast_0_d_def__
433 .
store_at(updated_head1_filter, v299)
441 head1_conv_1_d_def__.
update(0)
444 .reorder(ci, c, r1491_x, w)
446 conv1_stage1_1_d_def__
453 .reorder_storage(w, c);
454 conv1_stage1_1_d_def__.
update(0)
457 .reorder(wi, r1336_x, w, c)
460 conv1_stage2_1_d_def__
463 .
split(ni, ni, nii, 4)
464 .
split(nii, nii, niii, 2)
468 .
reorder(wi, w, ci, niii, nii, ni, c, n)
471 .reorder_storage(w, c, n);
487 cost_per_stage_output_0_d_def__
492 .
store_at(conv1_stage2_1_d_def__, ni)
494 .reorder_storage(w, n);
512 .reorder(ni, r81_x, n)
514 cost_per_stage_output
530 .
reorder(nii, ni, ci, wi, n, c, w)
534 .reorder_storage(n, c, w);
541 .reorder(nii, r63_x, ni, ci, wi, n, c, w)
553 .reorder_storage(n, c, w);
564 .reorder_storage(n, c, w);
570 .reorder(nii, r40_x, ni, ci, n, c, w)
574 normalized_schedule_features
589 .reorder_storage(w, c);
593 .reorder(wi, r54_x, w, c)
603 .reorder_storage(w, c);
607 .reorder(wi, r31_x, r31_y, w, c)
610 squashed_head1_filter
615 .reorder_storage(s, c, n);
void do_cost_model_schedule(Halide::Pipeline pipeline)
Func & unroll(const VarOrRVar &var)
Mark a dimension to be completely unrolled.
Func & compute_root()
Compute all of this function once ahead of time.
Func & fuse(const VarOrRVar &inner, const VarOrRVar &outer, const VarOrRVar &fused)
Join two dimensions into a single fused dimension.
Stage update(int idx=0)
Get a handle on an update step for the purposes of scheduling it.
const Internal::StageSchedule & get_schedule() const
Return the current StageSchedule associated with this initial Stage of this Func.
Func & store_at(const Func &f, const Var &var)
Allocate storage for this function within f's loop over var.
Func & split(const VarOrRVar &old, const VarOrRVar &outer, const VarOrRVar &inner, const Expr &factor, TailStrategy tail=TailStrategy::Auto)
Split a dimension into inner and outer subdimensions with the given names, where the inner dimension ...
Func & vectorize(const VarOrRVar &var)
Mark a dimension to be computed all-at-once as a single vector.
Func & compute_at(const Func &f, const Var &var)
Compute this function as needed for each unique value of the given var for the given calling function...
Func & parallel(const VarOrRVar &var)
Mark a dimension to be traversed in parallel.
Func & serial(const VarOrRVar &var)
Mark a dimension to be traversed serially.
Func & store_in(MemoryType memory_type)
Set the type of memory this Func should be stored in.
Func & reorder(const std::vector< VarOrRVar > &vars)
Reorder variables to have the given nesting order, from innermost out.
Func in(const Func &f)
Creates and returns a new identity Func that wraps this Func.
const std::vector< Dim > & dims() const
The list and ordering of dimensions used to evaluate this function, after all splits have taken place...
A class representing a Halide pipeline.
Func get_func(size_t index)
Return handle to the index-th Func within the pipeline based on the topological order.
A reduction variable represents a single dimension of a reduction domain (RDom).
Stage & vectorize(const VarOrRVar &var)
Stage & unroll(const VarOrRVar &var)
Stage & parallel(const VarOrRVar &var)
const Internal::StageSchedule & get_schedule() const
Return the current StageSchedule associated with this Stage.
Stage & reorder(const std::vector< VarOrRVar > &vars)
A Halide variable, to be used when defining functions.
This file defines the class FunctionDAG, which is our representation of a Halide pipeline,...
Expr sum(Expr, const std::string &s="sum")
An inline reduction.
TailStrategy
Different ways to handle a tail case in a split when the factor does not provably divide the extent.
@ GuardWithIf
Guard the inner loop with an if statement that prevents evaluation beyond the original extent.
MemoryType
An enum describing different address spaces to be used with Func::store_in.