summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/shader.h
diff options
context:
space:
mode:
authorTim Rogers <[email protected]>2013-02-07 12:45:37 -0800
committerAndrew Boktor <[email protected]>2014-08-14 13:49:25 -0700
commitcfed96a0d4f20ea8132d60e028893fed130220a5 (patch)
treefe0e709dcca15d781714bb08518488f930331d35 /src/gpgpu-sim/shader.h
parenta18312ee6d0137b309a7bccc5af9f44462d8dd4c (diff)
Adding in a dynamic warp_id field
[git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 15198]
Diffstat (limited to 'src/gpgpu-sim/shader.h')
-rw-r--r--src/gpgpu-sim/shader.h15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/gpgpu-sim/shader.h b/src/gpgpu-sim/shader.h
index 0efb659..c5a2ab2 100644
--- a/src/gpgpu-sim/shader.h
+++ b/src/gpgpu-sim/shader.h
@@ -108,10 +108,15 @@ public:
m_last_fetch=0;
m_next=0;
}
- void init( address_type start_pc, unsigned cta_id, unsigned wid, const std::bitset<MAX_WARP_SIZE> &active )
+ void init( address_type start_pc,
+ unsigned cta_id,
+ unsigned wid,
+ const std::bitset<MAX_WARP_SIZE> &active,
+ unsigned dynamic_warp_id )
{
m_cta_id=cta_id;
m_warp_id=wid;
+ m_dynamic_warp_id=dynamic_warp_id;
m_next_pc=start_pc;
assert( n_completed >= active.count() );
assert( n_completed <= m_warp_size);
@@ -204,12 +209,15 @@ public:
unsigned get_cta_id() const { return m_cta_id; }
+ unsigned get_dynamic_warp_id() const { return m_dynamic_warp_id; }
+
private:
static const unsigned IBUFFER_SIZE=2;
class shader_core_ctx *m_shader;
unsigned m_cta_id;
unsigned m_warp_id;
unsigned m_warp_size;
+ unsigned m_dynamic_warp_id;
address_type m_next_pc;
unsigned n_completed; // number of threads in warp completed
@@ -1603,6 +1611,11 @@ private:
// used for local address mapping with single kernel launch
unsigned kernel_max_cta_per_shader;
unsigned kernel_padded_threads_per_cta;
+ // Used for handing out dynamic warp_ids to new warps.
+ // the differnece between a warp_id and a dynamic_warp_id
+ // is that the dynamic_warp_id is a running number unique to every warp
+ // run on this shader, where the warp_id is the static warp slot.
+ unsigned m_dynamic_warp_id;
};
class simt_core_cluster {