summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim
diff options
context:
space:
mode:
authorMahmoud <[email protected]>2018-11-06 19:48:52 -0500
committerMahmoud <[email protected]>2018-11-06 19:48:52 -0500
commit7d42f5849aa1abb4f081803843ea78009d5b20ce (patch)
tree11bb1f976894d593e6ee0a918c943e0ab15840d4 /src/gpgpu-sim
parentaea51499825e8493f6e4ae1cae7c763797704dc8 (diff)
adding tensor cores config
Diffstat (limited to 'src/gpgpu-sim')
-rw-r--r--src/gpgpu-sim/shader.cc11
-rw-r--r--src/gpgpu-sim/shader.h4
2 files changed, 10 insertions, 5 deletions
diff --git a/src/gpgpu-sim/shader.cc b/src/gpgpu-sim/shader.cc
index 78facbd..c52ba35 100644
--- a/src/gpgpu-sim/shader.cc
+++ b/src/gpgpu-sim/shader.cc
@@ -90,6 +90,15 @@ shader_core_ctx::shader_core_ctx( class gpgpu_sim *gpu,
for (int j = 0; j<N_PIPELINE_STAGES; j++) {
m_pipeline_reg.push_back(register_set(m_config->pipe_widths[j],pipeline_stage_name_decode[j]));
}
+ if(m_config->sub_core_model) {
+ //in subcore model, each scheduler should has its own issue register, so num scheduler = reg width
+ assert(m_config->gpgpu_num_sched_per_core == m_pipeline_reg[ID_OC_SP].get_size() );
+ if(m_config->gpgpu_num_dp_units > 0)
+ assert(m_config->gpgpu_num_sched_per_core == m_pipeline_reg[ID_OC_DP].get_size() );
+ assert(m_config->gpgpu_num_sched_per_core == m_pipeline_reg[ID_OC_SFU].get_size() );
+ assert(m_config->gpgpu_num_sched_per_core == m_pipeline_reg[ID_OC_MEM].get_size() );
+ assert(m_config->gpgpu_num_sched_per_core == m_pipeline_reg[ID_OC_TENSOR_CORE].get_size() );
+ }
m_threadState = (thread_ctx_t*) calloc(sizeof(thread_ctx_t), config->n_thread_per_shader);
@@ -1045,7 +1054,7 @@ void scheduler_unit::cycle()
}
else if ( (pI->op == TENSOR_CORE_OP) ) {
if( tensor_core_pipe_avail ) {
- m_shader->issue_warp(*m_tensor_core_out,pI,active_mask,warp_id);
+ m_shader->issue_warp(*m_tensor_core_out,pI,active_mask,warp_id,m_id);
issued++;
issued_inst=true;
warp_inst_issued = true;
diff --git a/src/gpgpu-sim/shader.h b/src/gpgpu-sim/shader.h
index fcd134d..7b33c14 100644
--- a/src/gpgpu-sim/shader.h
+++ b/src/gpgpu-sim/shader.h
@@ -1378,10 +1378,6 @@ struct shader_core_config : public core_config
max_sp_latency = 32;
max_tensor_core_latency = 64;
- gpgpu_num_tensor_core_units=4;//It will be (#TENSORCORE INSIDE SM)/2 (One warp is allocated to 2 Tensor Core)
- gpgpu_operand_collector_num_units_tensor_core=24;
- gpgpu_operand_collector_num_in_ports_tensor_core=8;
- gpgpu_operand_collector_num_out_ports_tensor_core=8;
m_L1I_config.init(m_L1I_config.m_config_string,FuncCachePreferNone);
m_L1T_config.init(m_L1T_config.m_config_string,FuncCachePreferNone);