From ad07a5645d60d1db972d1a063585deb1a9ac229c Mon Sep 17 00:00:00 2001 From: Tor Aamodt Date: Sun, 24 Oct 2010 11:07:46 -0800 Subject: 1. fix load imbalance issue (CTA's were filling up first core in a cluster before moving to next) this improves correlation to 0.9471 2. update config to use sm_12 if available (goal: seems like BlackScholes has different ipc on hardware from before, this didn't help though) 3. update comparison scripts since no ld_const stuff was removed [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 7911] --- configs/QuadroFX5800/gpgpusim.config | 2 +- src/gpgpu-sim/shader.cc | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/configs/QuadroFX5800/gpgpusim.config b/configs/QuadroFX5800/gpgpusim.config index e16fdd6..ea45f8e 100644 --- a/configs/QuadroFX5800/gpgpusim.config +++ b/configs/QuadroFX5800/gpgpusim.config @@ -1,7 +1,7 @@ # functional simulator specification -gpgpu_ptx_instruction_classification 0 -gpgpu_ptx_sim_mode 0 --gpgpu_ptx_force_max_capability 11 +-gpgpu_ptx_force_max_capability 12 # high level architecture configuration -gpgpu_n_clusters 10 diff --git a/src/gpgpu-sim/shader.cc b/src/gpgpu-sim/shader.cc index 20910be..f723b78 100644 --- a/src/gpgpu-sim/shader.cc +++ b/src/gpgpu-sim/shader.cc @@ -1996,10 +1996,10 @@ simt_core_cluster::simt_core_cluster( class gpgpu_sim *gpu, const struct memory_config *mem_config, shader_core_stats *stats ) { - m_cta_issue_next_core=0; + m_config = config; + m_cta_issue_next_core=m_config->n_simt_cores_per_cluster-1; // this causes first launch to use hw cta 0 m_cluster_id=cluster_id; m_gpu = gpu; - m_config = config; m_stats = stats; m_core = new shader_core_ctx*[ config->n_simt_cores_per_cluster ]; for( unsigned i=0; i < config->n_simt_cores_per_cluster; i++ ) @@ -2043,10 +2043,11 @@ unsigned simt_core_cluster::issue_block2core( class kernel_info_t &kernel ) { unsigned num_blocks_issued=0; for( unsigned i=0; i < m_config->n_simt_cores_per_cluster; i++ ) { - unsigned core = (i+m_cta_issue_next_core)%m_config->n_simt_cores_per_cluster; + unsigned core = (i+m_cta_issue_next_core+1)%m_config->n_simt_cores_per_cluster; if( m_core[core]->get_n_active_cta() < m_config->max_cta(kernel) ) { m_core[core]->issue_block2core(kernel); num_blocks_issued++; + m_cta_issue_next_core=core; break; } } -- cgit v1.3