diff options
Diffstat (limited to 'src/gpu-compute/scheduler.cc')
-rw-r--r-- | src/gpu-compute/scheduler.cc | 43 |
1 files changed, 18 insertions, 25 deletions
diff --git a/src/gpu-compute/scheduler.cc b/src/gpu-compute/scheduler.cc index 1cd0bfe55..58a62034d 100644 --- a/src/gpu-compute/scheduler.cc +++ b/src/gpu-compute/scheduler.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2015 Advanced Micro Devices, Inc. + * Copyright (c) 2014-2017 Advanced Micro Devices, Inc. * All rights reserved. * * For use for simulation and test purposes only @@ -14,9 +14,9 @@ * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE @@ -30,42 +30,35 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * Author: Sooraj Puthoor + * Authors: Sooraj Puthoor, + * Anthony Gutierrez */ #include "gpu-compute/scheduler.hh" +#include "gpu-compute/of_scheduling_policy.hh" +#include "gpu-compute/rr_scheduling_policy.hh" +#include "params/ComputeUnit.hh" + Scheduler::Scheduler(const ComputeUnitParams *p) { - if (p->execPolicy == "OLDEST-FIRST") { - schedPolicy = SCHED_POLICY::OF_POLICY; - } else if (p->execPolicy == "ROUND-ROBIN") { - schedPolicy = SCHED_POLICY::RR_POLICY; + if (p->execPolicy == "OLDEST-FIRST") { + schedPolicy = new OFSchedulingPolicy(); + } else if (p->execPolicy == "ROUND-ROBIN") { + schedPolicy = new RRSchedulingPolicy(); } else { - fatal("Unimplemented scheduling policy"); + fatal("Unimplemented scheduling policy.\n"); } } Wavefront* Scheduler::chooseWave() { - if (schedPolicy == SCHED_POLICY::OF_POLICY) { - return OFSchedPolicy.chooseWave(); - } else if (schedPolicy == SCHED_POLICY::RR_POLICY) { - return RRSchedPolicy.chooseWave(); - } else { - fatal("Unimplemented scheduling policy"); - } + return schedPolicy->chooseWave(scheduleList); } void -Scheduler::bindList(std::vector<Wavefront*> *list) +Scheduler::bindList(std::vector<Wavefront*> *sched_list) { - if (schedPolicy == SCHED_POLICY::OF_POLICY) { - OFSchedPolicy.bindList(list); - } else if (schedPolicy == SCHED_POLICY::RR_POLICY) { - RRSchedPolicy.bindList(list); - } else { - fatal("Unimplemented scheduling policy"); - } + scheduleList = sched_list; } |