  Polyhedral techniques have been widely used for automatic code optimization
in low-level compilers and higher-level processes. Loop optimization is central
to this technique, and several polyhedral schedulers like Feautrier, Pluto, isl
and Tensor Scheduler have been proposed, each of them targeting a different
architecture, parallelism model, or application scenario. The need for
scenario-specific optimization is growing due to the heterogeneity of
architectures. One of the most critical cases is represented by NPUs (Neural
Processing Units) used for AI, which may require loop optimization with
different objectives. Another factor to be considered is the framework or
compiler in which polyhedral optimization takes place. Different scenarios,
depending on the target architecture, compilation environment, and application
domain, may require different kinds of optimization to best exploit the
architecture feature set.
  We introduce a new configurable polyhedral scheduler, PolyTOPS, that can be
adjusted to various scenarios with straightforward, high-level configurations.
This scheduler allows the creation of diverse scheduling strategies that can be
both scenario-specific (like state-of-the-art schedulers) and kernel-specific,
breaking the concept of a one-size-fits-all scheduler approach. PolyTOPS has
been used with isl and CLooG as code generators and has been integrated in
MindSpore AKG deep learning compiler. Experimental results in different
scenarios show good performance: a geomean speedup of 7.66x on MindSpore (for
the NPU Ascend architecture) hybrid custom operators over isl scheduling, a
geomean speedup up to 1.80x on PolyBench on different multicore architectures
over Pluto scheduling. Finally, some comparisons with different
state-of-the-art tools are presented in the PolyMage scenario.
