// Copyright Advanced Micro Devices, Inc., or its affiliates. // SPDX-License-Identifier: MIT #pragma once #include #include #include #include #include #include namespace rocRoller { namespace Scheduling { /** * A subclass for Priority scheduling * * This scheduler works by repeatedly yielding the next * instruction from the the lowest index stream with the * least cost. */ class PriorityScheduler : public Scheduler { public: PriorityScheduler(ContextPtr, CostFunction); using Base = Scheduler; static const std::string Basename; inline static const std::string Name = "PriorityScheduler"; static bool Match(Argument arg); static std::shared_ptr Build(Argument arg); std::string name() const override; virtual bool supportsAddingStreams() const override; Generator operator()(std::vector>& seqs) override; }; } }