summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/shader.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpgpu-sim/shader.h')
-rw-r--r--src/gpgpu-sim/shader.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/gpgpu-sim/shader.h b/src/gpgpu-sim/shader.h
index 76133e2..7c99ac5 100644
--- a/src/gpgpu-sim/shader.h
+++ b/src/gpgpu-sim/shader.h
@@ -279,6 +279,7 @@ enum concrete_scheduler
CONCRETE_SCHEDULER_LRR = 0,
CONCRETE_SCHEDULER_GTO,
CONCRETE_SCHEDULER_TWO_LEVEL_ACTIVE,
+ CONCRETE_SCHEDULER_WARP_LIMITING,
NUM_CONCRETE_SCHEDULERS
};
@@ -452,6 +453,28 @@ private:
unsigned m_max_active_warps;
};
+// Static Warp Limiting Scheduler
+class swl_scheduler : public scheduler_unit {
+public:
+ swl_scheduler ( shader_core_stats* stats, shader_core_ctx* shader,
+ Scoreboard* scoreboard, simt_stack** simt,
+ std::vector<shd_warp_t>* warp,
+ register_set* sp_out,
+ register_set* sfu_out,
+ register_set* mem_out,
+ int id,
+ char* config_string );
+ virtual ~swl_scheduler () {}
+ virtual void order_warps ();
+ virtual void done_adding_supervised_warps() {
+ m_last_supervised_issued = m_supervised_warps.begin();
+ }
+
+protected:
+ scheduler_prioritization_type m_prioritization;
+ unsigned m_num_warps_to_limit;
+};
+
class opndcoll_rfu_t { // operand collector based register file unit