summaryrefslogtreecommitdiff
path: root/src/gpu-compute/scheduler.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpu-compute/scheduler.cc')
-rw-r--r--src/gpu-compute/scheduler.cc43
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;
}