• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • System Task Manager SDK Reference  5.22
    All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Pages
    Heuristics

    Heuristics

    The compiler currently supports two heuristics for flattening the graph into a schedule.

    Branch and Bound (BNBOptimalSchedule)

    This heuristic uses the branch and bound paradigm to find the solutions. With the default timeout of 0, the first found schedule is returned. This allows quick generation of schedules which are reproducible. Running again with same input yaml should produce the same schedule. For a longer and more extensive search, use a bigger timeout value. By default, one worker is spawned for each core in the system used for search. Use stmcompiler tool flags to change the number of workers.

    Branch and Bound (BNBHeuristicSearch)

    This heuristic is similar to the original BNBOptimalSearch, but it prioritizes search nodes using a runnable's heuristic score. This algorithm generally performs better on very large graphs, where due to time constraints, we can only search a small subsection of the solution space. For quicker, less thorough searches, only search higher context values. For a more in-depth search, allow the compiler to search lower contexts. Using the stmcompiler tool, flags for first context, last context, or max contexts may be set.

    One Active Runnable (OAR)

    This heuristic is designed for isolated profiling of the workload. It creates a critical-path dominant sequence and schedules the sequence serially while putting in fences between sequential runnables. This ensures that only one runnable is active at any point in time on any hardware engine. Note that profiling results from this heuristic will not uncover runnable-runnable performance interference in the system.

    人人超碰97caoporen国产