diff options
| author | JRPan <[email protected]> | 2024-08-20 20:43:32 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-08-21 00:43:32 +0000 |
| commit | 38b4df5653ecbd9907a3d39b125640cd4fb7d012 (patch) | |
| tree | 4f6e55736c1b6b33c4b43a668f79d7a84e665b29 /src/gpgpu-sim/shader.h | |
| parent | 42a0cde4b463794d041b544309afb69c315f78bc (diff) | |
Stream stats (#71)
* Temp commit for Justin and Cassie to sync on
code changes for adding per-stream status.
* Resolved compile errors.
* Removed redundant parameter
* Passed cuda_stream_id from accelsim to gpgpusim
* Cleaned up unused changes
* Changed vector to map, having operator problems.
* StreamID defaults to zero
* Implemented streams to inc_stats and so on
* Fixed TOTAL_ACCESS counts
* Implemented GLOBAL_TIMER.
* Fixed m_shader->get_kernel SEGFAULT issue in shader.cc.
* Use warp_init to track streamID instead of issue_warp
* Removed temp debug print
* Modified cache_stats to only print data from latest finished stream
Added optional arg to cache_stats::print_stats, cache_stats::print_fail_stats and their upstream functions. When streamID is specified, print stats
from that stream. When not specified, print all stats.
NOTE: current implementation depending on streamid never equals -1
* Removed default arg values of streamID
* modified constructor of mem_fetch to pass in streamID
* changed get_streamid to get_streamID
* Added TODO to gpgpusim_entrypoint.cc and power_stat.cc
* Only collect power stats when enabled
* print last finished stream in PTX mode using last_streamID
* take out additional printf
* Add a field to baseline cache to indicate cache level
* save gpu object in cache
* Print stream ID only once per kernel
* rm test print
* use -1 for default stream id
* cleanup debug prints
* remove GLOABL_TIMER
* Automated clang-format
* Should be correct to print everything in power model
* addressing concerns & errors
* Automated clang-format
* add m_stats_pw in operator+
* Automated Format
---------
Co-authored-by: Justin Qiao <[email protected]>
Co-authored-by: Justin Qiao <[email protected]>
Co-authored-by: Tim Rogers <[email protected]>
Co-authored-by: JRPan <[email protected]>
Co-authored-by: purdue-jenkins <[email protected]>
Diffstat (limited to 'src/gpgpu-sim/shader.h')
| -rw-r--r-- | src/gpgpu-sim/shader.h | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/gpgpu-sim/shader.h b/src/gpgpu-sim/shader.h index 92691d3..e658a14 100644 --- a/src/gpgpu-sim/shader.h +++ b/src/gpgpu-sim/shader.h @@ -120,6 +120,7 @@ class shd_warp_t { m_done_exit = true; m_last_fetch = 0; m_next = 0; + m_streamID = (unsigned long long)-1; // Jin: cdp support m_cdp_latency = 0; @@ -140,8 +141,9 @@ class shd_warp_t { m_ldgdepbar_buf.clear(); } void init(address_type start_pc, unsigned cta_id, unsigned wid, - const std::bitset<MAX_WARP_SIZE> &active, - unsigned dynamic_warp_id) { + const std::bitset<MAX_WARP_SIZE> &active, unsigned dynamic_warp_id, + unsigned long long streamID) { + m_streamID = streamID; m_cta_id = cta_id; m_warp_id = wid; m_dynamic_warp_id = dynamic_warp_id; @@ -265,6 +267,7 @@ class shd_warp_t { m_inst_in_pipeline--; } + unsigned long long get_streamID() const { return m_streamID; } unsigned get_cta_id() const { return m_cta_id; } unsigned get_dynamic_warp_id() const { return m_dynamic_warp_id; } @@ -277,6 +280,7 @@ class shd_warp_t { private: static const unsigned IBUFFER_SIZE = 2; class shader_core_ctx *m_shader; + unsigned long long m_streamID; unsigned m_cta_id; unsigned m_warp_id; unsigned m_warp_size; @@ -1345,7 +1349,7 @@ class ldst_unit : public pipelined_simd_unit { shader_core_ctx *core, opndcoll_rfu_t *operand_collector, Scoreboard *scoreboard, const shader_core_config *config, const memory_config *mem_config, class shader_core_stats *stats, - unsigned sid, unsigned tpc); + unsigned sid, unsigned tpc, gpgpu_sim *gpu); // Add a structure to record the LDGSTS instructions, // similar to m_pending_writes, but since LDGSTS does not have a output @@ -1435,6 +1439,7 @@ class ldst_unit : public pipelined_simd_unit { warp_inst_t &inst); mem_stage_stall_type process_memory_access_queue_l1cache(l1_cache *cache, warp_inst_t &inst); + gpgpu_sim *m_gpu; const memory_config *m_memory_config; class mem_fetch_interface *m_icnt; @@ -2025,18 +2030,20 @@ class shader_core_mem_fetch_allocator : public mem_fetch_allocator { m_memory_config = config; } mem_fetch *alloc(new_addr_type addr, mem_access_type type, unsigned size, - bool wr, unsigned long long cycle) const; + bool wr, unsigned long long cycle, + unsigned long long streamID) const; mem_fetch *alloc(new_addr_type addr, mem_access_type type, const active_mask_t &active_mask, const mem_access_byte_mask_t &byte_mask, const mem_access_sector_mask_t §or_mask, unsigned size, bool wr, unsigned long long cycle, unsigned wid, - unsigned sid, unsigned tpc, mem_fetch *original_mf) const; + unsigned sid, unsigned tpc, mem_fetch *original_mf, + unsigned long long streamID) const; mem_fetch *alloc(const warp_inst_t &inst, const mem_access_t &access, unsigned long long cycle) const { warp_inst_t inst_copy = inst; mem_fetch *mf = new mem_fetch( - access, &inst_copy, + access, &inst_copy, inst.get_streamID(), access.is_write() ? WRITE_PACKET_SIZE : READ_PACKET_SIZE, inst.warp_id(), m_core_id, m_cluster_id, m_memory_config, cycle); return mf; |
