diff options
| author | Davit Grigoryan <[email protected]> | 2026-04-27 06:39:20 +0000 |
|---|---|---|
| committer | Davit Grigoryan <[email protected]> | 2026-04-27 06:39:20 +0000 |
| commit | 2e2f1c89a6b296c9cb28c8e8b0fabb670b4ba3f7 (patch) | |
| tree | 9b6e18eb4e7182ed1fa0f0f46fc3c57d40c8021d /src/abstract_hardware_model.cc | |
| parent | 2f190971f5f952f55197d385c688667439bc6649 (diff) | |
fix co-issue scheduling pc assertions
Diffstat (limited to 'src/abstract_hardware_model.cc')
| -rw-r--r-- | src/abstract_hardware_model.cc | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/abstract_hardware_model.cc b/src/abstract_hardware_model.cc index f8746e6..72639d4 100644 --- a/src/abstract_hardware_model.cc +++ b/src/abstract_hardware_model.cc @@ -1636,6 +1636,18 @@ void simt_splits_table::update_pc_for_split(unsigned split_id, address_type new_pc) { assert(m_splits_table.find(split_id) != m_splits_table.end()); assert(m_splits_table[split_id].m_valid); + static const bool dbg_pc_enabled = (getenv("MEMCO_DBG_PC") != NULL); + if (dbg_pc_enabled && m_warp_id == 0) { + fprintf(stderr, + "[SPLIT_PC_UPDATE] cycle=%llu warp=%u split_id=%u " + "old_pc=0x%lx new_pc=0x%lx\n", + (unsigned long long)(GPGPU_Context()->the_gpgpusim->g_the_gpu->gpu_sim_cycle + + GPGPU_Context()->the_gpgpusim->g_the_gpu->gpu_tot_sim_cycle), + m_warp_id, split_id, + (unsigned long)m_splits_table[split_id].m_pc, + (unsigned long)new_pc); + fflush(stderr); + } m_splits_table[split_id].m_pc = new_pc; } @@ -1886,6 +1898,15 @@ unsigned simt_splits_table::insert_new_entry(simt_splits_table_entry entry, assert(entry_num != (unsigned)-1); m_fifo_queue.push_back( fifo_entry(entry_num, gpgpusim_total_cycles, m_fifo_queue.size())); + static const bool dbg_pc_enabled = (getenv("MEMCO_DBG_PC") != NULL); + if (dbg_pc_enabled && m_warp_id == 0) { + fprintf(stderr, + "[SPLIT_INSERT-A] cycle=%llu warp=%u split_id=%u pc=0x%lx mask=%s\n", + gpgpusim_total_cycles, m_warp_id, entry_num, + (unsigned long)entry.m_pc, + entry.m_active_mask.to_string().c_str()); + fflush(stderr); + } return entry_num; } @@ -1934,6 +1955,14 @@ unsigned simt_splits_table::insert_new_entry( assert(entry != (unsigned)-1); m_fifo_queue.push_back( fifo_entry(entry, gpgpusim_total_cycles, m_fifo_queue.size())); + static const bool dbg_pc_enabled = (getenv("MEMCO_DBG_PC") != NULL); + if (dbg_pc_enabled && m_warp_id == 0) { + fprintf(stderr, + "[SPLIT_INSERT] cycle=%llu warp=%u split_id=%u pc=0x%lx mask=%s\n", + gpgpusim_total_cycles, m_warp_id, entry, + (unsigned long)pc, tmp_active_mask.to_string().c_str()); + fflush(stderr); + } return entry; } @@ -1983,6 +2012,14 @@ unsigned simt_splits_table::insert_new_entry( // call_ret=true: push to front for LIFO ordering m_fifo_queue.push_front( fifo_entry(entry, gpgpusim_total_cycles, m_fifo_queue.size())); + static const bool dbg_pc_enabled = (getenv("MEMCO_DBG_PC") != NULL); + if (dbg_pc_enabled && m_warp_id == 0) { + fprintf(stderr, + "[SPLIT_INSERT-C] cycle=%llu warp=%u split_id=%u pc=0x%lx mask=%s\n", + gpgpusim_total_cycles, m_warp_id, entry, + (unsigned long)pc, tmp_active_mask.to_string().c_str()); + fflush(stderr); + } return entry; } @@ -2691,6 +2728,21 @@ void simt_tables::update(simt_mask_t &thread_done, addr_vector_t &next_pc, address_type top_recvg_pc = m_simt_splits_table->get_rpc(); unsigned top_recvg_entry = m_simt_splits_table->get_rpc_entry(); address_type top_pc = m_simt_splits_table->get_pc(); + if (top_pc != next_inst_pc) { + static const bool dbg_pc_enabled = (getenv("MEMCO_DBG_PC") != NULL); + if (dbg_pc_enabled) { + fprintf(stderr, + "[SIMT_UPDATE_MISMATCH] cycle=%llu warp=%u top_pc=0x%lx " + "next_inst_pc=0x%lx top_mask=%s active_split=%u\n", + (unsigned long long)(GPGPU_Context()->the_gpgpusim->g_the_gpu->gpu_sim_cycle + + GPGPU_Context()->the_gpgpusim->g_the_gpu->gpu_tot_sim_cycle), + m_warp_id, (unsigned long)top_pc, + (unsigned long)next_inst_pc, + top_active_mask.to_string().c_str(), + m_simt_splits_table->get_active_split_id()); + fflush(stderr); + } + } assert(top_pc == next_inst_pc); assert(top_active_mask.any()); |
