-
Couldn't load subscription status.
- 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 ...