-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Scheduling Tips
Derek Gerstmann edited this page Mar 1, 2024
·
2 revisions
The following table outlines all the scheduling directives that can be combined and applied to a pipeline stage:
Scheduling Directive | Description | Typical Usage |
---|---|---|
compute_root() | Compute all of this function once ahead of time. Equivalent to `compute_at(LoopLevel::root())` | ... |
compute_at() | Schedule a function to be computed within the iteration over a given LoopLevel. | ... |
compute_with() | Schedule the iteration over this stage to be fused with another stage 's' from outermost loop to a given LoopLevel. | ... |
memoize() | Cache a computed version of this function across invocations of the Func. | ... |
async() | Produce this Func asynchronously in a separate thread. | ... |
split() | ... | ... |
fuse() | ... | ... |
serial() | ... | ... |
parallel() | ... | ... |
vectorize() | ... | ... |
unroll() | ... | ... |
partition() | ... | ... |
never_partition() | ... | ... |
always_partition() | ... | ... |
tile() | ... | ... |
reorder() | ... | ... |
rename() | ... | ... |
specialize() | ... | ... |
gpu_threads() | ... | ... |
gpu_lanes() | ... | ... |
gpu_single_thread() | ... | ... |
gpu_blocks() | ... | ... |
gpu() | ... | ... |
gpu_tile() | ... | ... |
allow_race_conditions() | ... | ... |
atomic() | ... | ... |
hexagon() | ... | ... |
prefetch() | ... | ... |
This is meant to be a set of recipes and approaches to use when scheduling Halide pipelines. Several of these methods are covered in the tutorials
.
... TBD ...