summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/shader.h
diff options
context:
space:
mode:
authorAaron Barnes <[email protected]>2024-07-16 12:33:16 -0600
committerGitHub <[email protected]>2024-07-16 18:33:16 +0000
commite1afc53b51d24afcfd8b8aab15e4ba5d99b4a772 (patch)
treeffd07cc1a81884761c5b16089b3fc5937cb58b1d /src/gpgpu-sim/shader.h
parent55419d7098a433122bf4d940cf38af17e33f045a (diff)
Auto clang format (#74)
* add automated clang formatter * Automated clang-format * use /bin/bash and add print * use default checkout ref * Format only after tests are success * Run CI on merge group --------- Co-authored-by: barnes88 <[email protected]> Co-authored-by: JRPAN <[email protected]>
Diffstat (limited to 'src/gpgpu-sim/shader.h')
-rw-r--r--src/gpgpu-sim/shader.h446
1 files changed, 234 insertions, 212 deletions
diff --git a/src/gpgpu-sim/shader.h b/src/gpgpu-sim/shader.h
index 95e142e..b1f904f 100644
--- a/src/gpgpu-sim/shader.h
+++ b/src/gpgpu-sim/shader.h
@@ -1,18 +1,19 @@
// Copyright (c) 2009-2021, Tor M. Aamodt, Wilson W.L. Fung, Andrew Turner,
-// Ali Bakhoda, Vijay Kandiah, Nikos Hardavellas,
+// Ali Bakhoda, Vijay Kandiah, Nikos Hardavellas,
// Mahmoud Khairy, Junrui Pan, Timothy G. Rogers
-// The University of British Columbia, Northwestern University, Purdue University
-// All rights reserved.
+// The University of British Columbia, Northwestern University, Purdue
+// University All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
-// 1. Redistributions of source code must retain the above copyright notice, this
+// 1. Redistributions of source code must retain the above copyright notice,
+// this
// list of conditions and the following disclaimer;
// 2. Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution;
-// 3. Neither the names of The University of British Columbia, Northwestern
+// 3. Neither the names of The University of British Columbia, Northwestern
// University nor the names of their contributors may be used to
// endorse or promote products derived from this software without specific
// prior written permission.
@@ -199,7 +200,7 @@ class shd_warp_t {
void clear_membar() { m_membar = false; }
bool get_membar() const { return m_membar; }
virtual address_type get_pc() const { return m_next_pc; }
- virtual kernel_info_t* get_kernel_info() const;
+ virtual kernel_info_t *get_kernel_info() const;
void set_next_pc(address_type pc) { m_next_pc = pc; }
void store_info_of_last_inst_at_barrier(const warp_inst_t *pI) {
@@ -318,12 +319,14 @@ class shd_warp_t {
bool m_cdp_dummy;
// Ni: LDGDEPBAR barrier support
- public:
- unsigned int m_ldgdepbar_id; // LDGDEPBAR barrier ID
- std::vector<std::vector<warp_inst_t>> m_ldgdepbar_buf; // LDGDEPBAR barrier buffer
- unsigned int m_depbar_start_id;
- unsigned int m_depbar_group;
- bool m_waiting_ldgsts; // Ni: Whether the warp is waiting for the LDGSTS instrs to finish
+ public:
+ unsigned int m_ldgdepbar_id; // LDGDEPBAR barrier ID
+ std::vector<std::vector<warp_inst_t>>
+ m_ldgdepbar_buf; // LDGDEPBAR barrier buffer
+ unsigned int m_depbar_start_id;
+ unsigned int m_depbar_group;
+ bool m_waiting_ldgsts; // Ni: Whether the warp is waiting for the LDGSTS
+ // instrs to finish
};
inline unsigned hw_tid_from_wid(unsigned wid, unsigned warp_size, unsigned i) {
@@ -337,8 +340,8 @@ const unsigned WARP_PER_CTA_MAX = 64;
typedef std::bitset<WARP_PER_CTA_MAX> warp_set_t;
unsigned register_bank(int regnum, int wid, unsigned num_banks,
- bool sub_core_model,
- unsigned banks_per_sched, unsigned sched_id);
+ bool sub_core_model, unsigned banks_per_sched,
+ unsigned sched_id);
class shader_core_ctx;
class shader_core_config;
@@ -681,28 +684,26 @@ class opndcoll_rfu_t { // operand collector based register file unit
public:
op_t() { m_valid = false; }
op_t(collector_unit_t *cu, unsigned op, unsigned reg, unsigned num_banks,
- bool sub_core_model,
- unsigned banks_per_sched, unsigned sched_id) {
+ bool sub_core_model, unsigned banks_per_sched, unsigned sched_id) {
m_valid = true;
m_warp = NULL;
m_cu = cu;
m_operand = op;
m_register = reg;
m_shced_id = sched_id;
- m_bank = register_bank(reg, cu->get_warp_id(), num_banks,
- sub_core_model, banks_per_sched, sched_id);
+ m_bank = register_bank(reg, cu->get_warp_id(), num_banks, sub_core_model,
+ banks_per_sched, sched_id);
}
op_t(const warp_inst_t *warp, unsigned reg, unsigned num_banks,
- bool sub_core_model,
- unsigned banks_per_sched, unsigned sched_id) {
+ bool sub_core_model, unsigned banks_per_sched, unsigned sched_id) {
m_valid = true;
m_warp = warp;
m_register = reg;
m_cu = NULL;
m_operand = -1;
m_shced_id = sched_id;
- m_bank = register_bank(reg, warp->warp_id(), num_banks,
- sub_core_model, banks_per_sched, sched_id);
+ m_bank = register_bank(reg, warp->warp_id(), num_banks, sub_core_model,
+ banks_per_sched, sched_id);
}
// accessors
@@ -950,9 +951,8 @@ class opndcoll_rfu_t { // operand collector based register file unit
unsigned get_reg_id() const { return m_reg_id; }
// modifiers
- void init(unsigned n, unsigned num_banks,
- const core_config *config, opndcoll_rfu_t *rfu,
- bool m_sub_core_model, unsigned reg_id,
+ void init(unsigned n, unsigned num_banks, const core_config *config,
+ opndcoll_rfu_t *rfu, bool m_sub_core_model, unsigned reg_id,
unsigned num_banks_per_sched);
bool allocate(register_set *pipeline_reg, register_set *output_reg);
@@ -996,8 +996,8 @@ class opndcoll_rfu_t { // operand collector based register file unit
// With sub-core enabled round robin starts with the next cu assigned to a
// different sub-core than the one that dispatched last
unsigned cusPerSched = m_num_collectors / m_num_warp_scheds;
- unsigned rr_increment = m_sub_core_model ?
- cusPerSched - (m_last_cu % cusPerSched) : 1;
+ unsigned rr_increment =
+ m_sub_core_model ? cusPerSched - (m_last_cu % cusPerSched) : 1;
for (unsigned n = 0; n < m_num_collectors; n++) {
unsigned c = (m_last_cu + n + rr_increment) % m_num_collectors;
if ((*m_collector_units)[c].ready()) {
@@ -1317,8 +1317,8 @@ class sp_unit : public pipelined_simd_unit {
class specialized_unit : public pipelined_simd_unit {
public:
specialized_unit(register_set *result_port, const shader_core_config *config,
- shader_core_ctx *core, int supported_op,
- char *unit_name, unsigned latency, unsigned issue_reg_id);
+ shader_core_ctx *core, int supported_op, char *unit_name,
+ unsigned latency, unsigned issue_reg_id);
virtual bool can_issue(const warp_inst_t &inst) const {
if (inst.op != m_supported_op) {
return false;
@@ -1348,13 +1348,14 @@ class ldst_unit : public pipelined_simd_unit {
unsigned sid, unsigned tpc);
// Add a structure to record the LDGSTS instructions,
- // similar to m_pending_writes, but since LDGSTS does not have a output register
- // to write to, so a new structure needs to be added
- /* A multi-level map: unsigned (warp_id) -> unsigned (pc) -> unsigned (addr) -> unsigned (count)
+ // similar to m_pending_writes, but since LDGSTS does not have a output
+ // register to write to, so a new structure needs to be added
+ /* A multi-level map: unsigned (warp_id) -> unsigned (pc) -> unsigned (addr)
+ * -> unsigned (count)
*/
std::map<unsigned /*warp_id*/,
- std::map<unsigned /*pc*/,
- std::map<unsigned /*addr*/, unsigned /*count*/>>>
+ std::map<unsigned /*pc*/,
+ std::map<unsigned /*addr*/, unsigned /*count*/>>>
m_pending_ldgsts;
// modifiers
virtual void issue(register_set &inst);
@@ -1766,8 +1767,8 @@ struct shader_core_stats_pod {
unsigned *m_active_tensor_core_lanes;
unsigned *m_active_fu_lanes;
unsigned *m_active_fu_mem_lanes;
- double *m_active_exu_threads; //For power model
- double *m_active_exu_warps; //For power model
+ double *m_active_exu_threads; // For power model
+ double *m_active_exu_warps; // For power model
unsigned *m_n_diverge; // number of divergence occurring in this shader
unsigned gpgpu_n_load_insn;
unsigned gpgpu_n_store_insn;
@@ -1838,56 +1839,41 @@ class shader_core_stats : public shader_core_stats_pod {
(unsigned *)calloc(config->num_shader(), sizeof(unsigned));
m_num_loadqueued_insn =
(unsigned *)calloc(config->num_shader(), sizeof(unsigned));
- m_num_tex_inst =
- (unsigned *)calloc(config->num_shader(), sizeof(unsigned));
+ m_num_tex_inst = (unsigned *)calloc(config->num_shader(), sizeof(unsigned));
m_num_INTdecoded_insn =
(unsigned *)calloc(config->num_shader(), sizeof(unsigned));
- m_num_ialu_acesses =
- (double *)calloc(config->num_shader(), sizeof(double));
- m_num_fp_acesses =
- (double *)calloc(config->num_shader(), sizeof(double));
- m_num_imul_acesses =
- (double *)calloc(config->num_shader(), sizeof(double));
+ m_num_ialu_acesses = (double *)calloc(config->num_shader(), sizeof(double));
+ m_num_fp_acesses = (double *)calloc(config->num_shader(), sizeof(double));
+ m_num_imul_acesses = (double *)calloc(config->num_shader(), sizeof(double));
m_num_imul24_acesses =
(double *)calloc(config->num_shader(), sizeof(double));
m_num_imul32_acesses =
(double *)calloc(config->num_shader(), sizeof(double));
m_num_fpmul_acesses =
(double *)calloc(config->num_shader(), sizeof(double));
- m_num_idiv_acesses =
- (double *)calloc(config->num_shader(), sizeof(double));
+ m_num_idiv_acesses = (double *)calloc(config->num_shader(), sizeof(double));
m_num_fpdiv_acesses =
(double *)calloc(config->num_shader(), sizeof(double));
- m_num_dp_acesses =
- (double*) calloc(config->num_shader(),sizeof(double));
- m_num_dpmul_acesses =
- (double*) calloc(config->num_shader(),sizeof(double));
- m_num_dpdiv_acesses =
- (double*) calloc(config->num_shader(),sizeof(double));
- m_num_sp_acesses =
+ m_num_dp_acesses = (double *)calloc(config->num_shader(), sizeof(double));
+ m_num_dpmul_acesses =
(double *)calloc(config->num_shader(), sizeof(double));
- m_num_sfu_acesses =
+ m_num_dpdiv_acesses =
(double *)calloc(config->num_shader(), sizeof(double));
- m_num_tensor_core_acesses =
+ m_num_sp_acesses = (double *)calloc(config->num_shader(), sizeof(double));
+ m_num_sfu_acesses = (double *)calloc(config->num_shader(), sizeof(double));
+ m_num_tensor_core_acesses =
(double *)calloc(config->num_shader(), sizeof(double));
m_num_const_acesses =
(double *)calloc(config->num_shader(), sizeof(double));
- m_num_tex_acesses =
- (double *)calloc(config->num_shader(), sizeof(double));
- m_num_sqrt_acesses =
- (double*) calloc(config->num_shader(),sizeof(double));
- m_num_log_acesses =
- (double*) calloc(config->num_shader(),sizeof(double));
- m_num_sin_acesses =
- (double*) calloc(config->num_shader(),sizeof(double));
- m_num_exp_acesses =
- (double*) calloc(config->num_shader(),sizeof(double));
- m_num_mem_acesses =
- (double *)calloc(config->num_shader(), sizeof(double));
+ m_num_tex_acesses = (double *)calloc(config->num_shader(), sizeof(double));
+ m_num_sqrt_acesses = (double *)calloc(config->num_shader(), sizeof(double));
+ m_num_log_acesses = (double *)calloc(config->num_shader(), sizeof(double));
+ m_num_sin_acesses = (double *)calloc(config->num_shader(), sizeof(double));
+ m_num_exp_acesses = (double *)calloc(config->num_shader(), sizeof(double));
+ m_num_mem_acesses = (double *)calloc(config->num_shader(), sizeof(double));
m_num_sp_committed =
(unsigned *)calloc(config->num_shader(), sizeof(unsigned));
- m_num_tlb_hits =
- (unsigned *)calloc(config->num_shader(), sizeof(unsigned));
+ m_num_tlb_hits = (unsigned *)calloc(config->num_shader(), sizeof(unsigned));
m_num_tlb_accesses =
(unsigned *)calloc(config->num_shader(), sizeof(unsigned));
m_active_sp_lanes =
@@ -1900,8 +1886,7 @@ class shader_core_stats : public shader_core_stats_pod {
(unsigned *)calloc(config->num_shader(), sizeof(unsigned));
m_active_exu_threads =
(double *)calloc(config->num_shader(), sizeof(double));
- m_active_exu_warps =
- (double *)calloc(config->num_shader(), sizeof(double));
+ m_active_exu_warps = (double *)calloc(config->num_shader(), sizeof(double));
m_active_fu_mem_lanes =
(unsigned *)calloc(config->num_shader(), sizeof(unsigned));
m_num_sfu_committed =
@@ -1916,8 +1901,7 @@ class shader_core_stats : public shader_core_stats_pod {
(unsigned *)calloc(config->num_shader(), sizeof(unsigned));
m_non_rf_operands =
(unsigned *)calloc(config->num_shader(), sizeof(unsigned));
- m_n_diverge =
- (unsigned *)calloc(config->num_shader(), sizeof(unsigned));
+ m_n_diverge = (unsigned *)calloc(config->num_shader(), sizeof(unsigned));
shader_cycle_distro =
(unsigned *)calloc(config->warp_size + 3, sizeof(unsigned));
last_shader_cycle_distro =
@@ -2153,206 +2137,244 @@ class shader_core_ctx : public core_t {
void incload_stat() { m_stats->m_num_loadqueued_insn[m_sid]++; }
void incstore_stat() { m_stats->m_num_storequeued_insn[m_sid]++; }
- void incialu_stat(unsigned active_count,double latency) {
- if(m_config->gpgpu_clock_gated_lanes==false){
- m_stats->m_num_ialu_acesses[m_sid]=m_stats->m_num_ialu_acesses[m_sid]+(double)active_count*latency
- + inactive_lanes_accesses_nonsfu(active_count, latency);
- }else {
- m_stats->m_num_ialu_acesses[m_sid]=m_stats->m_num_ialu_acesses[m_sid]+(double)active_count*latency;
+ void incialu_stat(unsigned active_count, double latency) {
+ if (m_config->gpgpu_clock_gated_lanes == false) {
+ m_stats->m_num_ialu_acesses[m_sid] =
+ m_stats->m_num_ialu_acesses[m_sid] + (double)active_count * latency +
+ inactive_lanes_accesses_nonsfu(active_count, latency);
+ } else {
+ m_stats->m_num_ialu_acesses[m_sid] =
+ m_stats->m_num_ialu_acesses[m_sid] + (double)active_count * latency;
}
- m_stats->m_active_exu_threads[m_sid]+=active_count;
+ m_stats->m_active_exu_threads[m_sid] += active_count;
m_stats->m_active_exu_warps[m_sid]++;
}
- void incimul_stat(unsigned active_count,double latency) {
- if(m_config->gpgpu_clock_gated_lanes==false){
- m_stats->m_num_imul_acesses[m_sid]=m_stats->m_num_imul_acesses[m_sid]+(double)active_count*latency
- + inactive_lanes_accesses_nonsfu(active_count, latency);
- }else {
- m_stats->m_num_imul_acesses[m_sid]=m_stats->m_num_imul_acesses[m_sid]+(double)active_count*latency;
+ void incimul_stat(unsigned active_count, double latency) {
+ if (m_config->gpgpu_clock_gated_lanes == false) {
+ m_stats->m_num_imul_acesses[m_sid] =
+ m_stats->m_num_imul_acesses[m_sid] + (double)active_count * latency +
+ inactive_lanes_accesses_nonsfu(active_count, latency);
+ } else {
+ m_stats->m_num_imul_acesses[m_sid] =
+ m_stats->m_num_imul_acesses[m_sid] + (double)active_count * latency;
}
- m_stats->m_active_exu_threads[m_sid]+=active_count;
+ m_stats->m_active_exu_threads[m_sid] += active_count;
m_stats->m_active_exu_warps[m_sid]++;
}
- void incimul24_stat(unsigned active_count,double latency) {
- if(m_config->gpgpu_clock_gated_lanes==false){
- m_stats->m_num_imul24_acesses[m_sid]=m_stats->m_num_imul24_acesses[m_sid]+(double)active_count*latency
- + inactive_lanes_accesses_nonsfu(active_count, latency);
- }else {
- m_stats->m_num_imul24_acesses[m_sid]=m_stats->m_num_imul24_acesses[m_sid]+(double)active_count*latency;
+ void incimul24_stat(unsigned active_count, double latency) {
+ if (m_config->gpgpu_clock_gated_lanes == false) {
+ m_stats->m_num_imul24_acesses[m_sid] =
+ m_stats->m_num_imul24_acesses[m_sid] +
+ (double)active_count * latency +
+ inactive_lanes_accesses_nonsfu(active_count, latency);
+ } else {
+ m_stats->m_num_imul24_acesses[m_sid] =
+ m_stats->m_num_imul24_acesses[m_sid] + (double)active_count * latency;
}
- m_stats->m_active_exu_threads[m_sid]+=active_count;
- m_stats->m_active_exu_warps[m_sid]++;
- }
- void incimul32_stat(unsigned active_count,double latency) {
- if(m_config->gpgpu_clock_gated_lanes==false){
- m_stats->m_num_imul32_acesses[m_sid]=m_stats->m_num_imul32_acesses[m_sid]+(double)active_count*latency
- + inactive_lanes_accesses_sfu(active_count, latency);
- }else{
- m_stats->m_num_imul32_acesses[m_sid]=m_stats->m_num_imul32_acesses[m_sid]+(double)active_count*latency;
+ m_stats->m_active_exu_threads[m_sid] += active_count;
+ m_stats->m_active_exu_warps[m_sid]++;
+ }
+ void incimul32_stat(unsigned active_count, double latency) {
+ if (m_config->gpgpu_clock_gated_lanes == false) {
+ m_stats->m_num_imul32_acesses[m_sid] =
+ m_stats->m_num_imul32_acesses[m_sid] +
+ (double)active_count * latency +
+ inactive_lanes_accesses_sfu(active_count, latency);
+ } else {
+ m_stats->m_num_imul32_acesses[m_sid] =
+ m_stats->m_num_imul32_acesses[m_sid] + (double)active_count * latency;
}
- m_stats->m_active_exu_threads[m_sid]+=active_count;
+ m_stats->m_active_exu_threads[m_sid] += active_count;
m_stats->m_active_exu_warps[m_sid]++;
}
- void incidiv_stat(unsigned active_count,double latency) {
- if(m_config->gpgpu_clock_gated_lanes==false){
- m_stats->m_num_idiv_acesses[m_sid]=m_stats->m_num_idiv_acesses[m_sid]+(double)active_count*latency
- + inactive_lanes_accesses_sfu(active_count, latency);
- }else {
- m_stats->m_num_idiv_acesses[m_sid]=m_stats->m_num_idiv_acesses[m_sid]+(double)active_count*latency;
+ void incidiv_stat(unsigned active_count, double latency) {
+ if (m_config->gpgpu_clock_gated_lanes == false) {
+ m_stats->m_num_idiv_acesses[m_sid] =
+ m_stats->m_num_idiv_acesses[m_sid] + (double)active_count * latency +
+ inactive_lanes_accesses_sfu(active_count, latency);
+ } else {
+ m_stats->m_num_idiv_acesses[m_sid] =
+ m_stats->m_num_idiv_acesses[m_sid] + (double)active_count * latency;
}
- m_stats->m_active_exu_threads[m_sid]+=active_count;
- m_stats->m_active_exu_warps[m_sid]++;
+ m_stats->m_active_exu_threads[m_sid] += active_count;
+ m_stats->m_active_exu_warps[m_sid]++;
}
- void incfpalu_stat(unsigned active_count,double latency) {
- if(m_config->gpgpu_clock_gated_lanes==false){
- m_stats->m_num_fp_acesses[m_sid]=m_stats->m_num_fp_acesses[m_sid]+(double)active_count*latency
- + inactive_lanes_accesses_nonsfu(active_count, latency);
- }else {
- m_stats->m_num_fp_acesses[m_sid]=m_stats->m_num_fp_acesses[m_sid]+(double)active_count*latency;
+ void incfpalu_stat(unsigned active_count, double latency) {
+ if (m_config->gpgpu_clock_gated_lanes == false) {
+ m_stats->m_num_fp_acesses[m_sid] =
+ m_stats->m_num_fp_acesses[m_sid] + (double)active_count * latency +
+ inactive_lanes_accesses_nonsfu(active_count, latency);
+ } else {
+ m_stats->m_num_fp_acesses[m_sid] =
+ m_stats->m_num_fp_acesses[m_sid] + (double)active_count * latency;
}
- m_stats->m_active_exu_threads[m_sid]+=active_count;
- m_stats->m_active_exu_warps[m_sid]++;
+ m_stats->m_active_exu_threads[m_sid] += active_count;
+ m_stats->m_active_exu_warps[m_sid]++;
}
- void incfpmul_stat(unsigned active_count,double latency) {
- // printf("FP MUL stat increament\n");
- if(m_config->gpgpu_clock_gated_lanes==false){
- m_stats->m_num_fpmul_acesses[m_sid]=m_stats->m_num_fpmul_acesses[m_sid]+(double)active_count*latency
- + inactive_lanes_accesses_nonsfu(active_count, latency);
- }else {
- m_stats->m_num_fpmul_acesses[m_sid]=m_stats->m_num_fpmul_acesses[m_sid]+(double)active_count*latency;
+ void incfpmul_stat(unsigned active_count, double latency) {
+ // printf("FP MUL stat increament\n");
+ if (m_config->gpgpu_clock_gated_lanes == false) {
+ m_stats->m_num_fpmul_acesses[m_sid] =
+ m_stats->m_num_fpmul_acesses[m_sid] + (double)active_count * latency +
+ inactive_lanes_accesses_nonsfu(active_count, latency);
+ } else {
+ m_stats->m_num_fpmul_acesses[m_sid] =
+ m_stats->m_num_fpmul_acesses[m_sid] + (double)active_count * latency;
}
- m_stats->m_active_exu_threads[m_sid]+=active_count;
+ m_stats->m_active_exu_threads[m_sid] += active_count;
m_stats->m_active_exu_warps[m_sid]++;
- }
- void incfpdiv_stat(unsigned active_count,double latency) {
- if(m_config->gpgpu_clock_gated_lanes==false){
- m_stats->m_num_fpdiv_acesses[m_sid]=m_stats->m_num_fpdiv_acesses[m_sid]+(double)active_count*latency
- + inactive_lanes_accesses_sfu(active_count, latency);
- }else {
- m_stats->m_num_fpdiv_acesses[m_sid]=m_stats->m_num_fpdiv_acesses[m_sid]+(double)active_count*latency;
+ }
+ void incfpdiv_stat(unsigned active_count, double latency) {
+ if (m_config->gpgpu_clock_gated_lanes == false) {
+ m_stats->m_num_fpdiv_acesses[m_sid] =
+ m_stats->m_num_fpdiv_acesses[m_sid] + (double)active_count * latency +
+ inactive_lanes_accesses_sfu(active_count, latency);
+ } else {
+ m_stats->m_num_fpdiv_acesses[m_sid] =
+ m_stats->m_num_fpdiv_acesses[m_sid] + (double)active_count * latency;
}
- m_stats->m_active_exu_threads[m_sid]+=active_count;
+ m_stats->m_active_exu_threads[m_sid] += active_count;
m_stats->m_active_exu_warps[m_sid]++;
- }
- void incdpalu_stat(unsigned active_count,double latency) {
- if(m_config->gpgpu_clock_gated_lanes==false){
- m_stats->m_num_dp_acesses[m_sid]=m_stats->m_num_dp_acesses[m_sid]+(double)active_count*latency
- + inactive_lanes_accesses_nonsfu(active_count, latency);
- }else {
- m_stats->m_num_dp_acesses[m_sid]=m_stats->m_num_dp_acesses[m_sid]+(double)active_count*latency;
+ }
+ void incdpalu_stat(unsigned active_count, double latency) {
+ if (m_config->gpgpu_clock_gated_lanes == false) {
+ m_stats->m_num_dp_acesses[m_sid] =
+ m_stats->m_num_dp_acesses[m_sid] + (double)active_count * latency +
+ inactive_lanes_accesses_nonsfu(active_count, latency);
+ } else {
+ m_stats->m_num_dp_acesses[m_sid] =
+ m_stats->m_num_dp_acesses[m_sid] + (double)active_count * latency;
}
- m_stats->m_active_exu_threads[m_sid]+=active_count;
- m_stats->m_active_exu_warps[m_sid]++;
- }
- void incdpmul_stat(unsigned active_count,double latency) {
- // printf("FP MUL stat increament\n");
- if(m_config->gpgpu_clock_gated_lanes==false){
- m_stats->m_num_dpmul_acesses[m_sid]=m_stats->m_num_dpmul_acesses[m_sid]+(double)active_count*latency
- + inactive_lanes_accesses_nonsfu(active_count, latency);
- }else {
- m_stats->m_num_dpmul_acesses[m_sid]=m_stats->m_num_dpmul_acesses[m_sid]+(double)active_count*latency;
+ m_stats->m_active_exu_threads[m_sid] += active_count;
+ m_stats->m_active_exu_warps[m_sid]++;
+ }
+ void incdpmul_stat(unsigned active_count, double latency) {
+ // printf("FP MUL stat increament\n");
+ if (m_config->gpgpu_clock_gated_lanes == false) {
+ m_stats->m_num_dpmul_acesses[m_sid] =
+ m_stats->m_num_dpmul_acesses[m_sid] + (double)active_count * latency +
+ inactive_lanes_accesses_nonsfu(active_count, latency);
+ } else {
+ m_stats->m_num_dpmul_acesses[m_sid] =
+ m_stats->m_num_dpmul_acesses[m_sid] + (double)active_count * latency;
}
- m_stats->m_active_exu_threads[m_sid]+=active_count;
+ m_stats->m_active_exu_threads[m_sid] += active_count;
m_stats->m_active_exu_warps[m_sid]++;
- }
- void incdpdiv_stat(unsigned active_count,double latency) {
- if(m_config->gpgpu_clock_gated_lanes==false){
- m_stats->m_num_dpdiv_acesses[m_sid]=m_stats->m_num_dpdiv_acesses[m_sid]+(double)active_count*latency
- + inactive_lanes_accesses_sfu(active_count, latency);
- }else {
- m_stats->m_num_dpdiv_acesses[m_sid]=m_stats->m_num_dpdiv_acesses[m_sid]+(double)active_count*latency;
+ }
+ void incdpdiv_stat(unsigned active_count, double latency) {
+ if (m_config->gpgpu_clock_gated_lanes == false) {
+ m_stats->m_num_dpdiv_acesses[m_sid] =
+ m_stats->m_num_dpdiv_acesses[m_sid] + (double)active_count * latency +
+ inactive_lanes_accesses_sfu(active_count, latency);
+ } else {
+ m_stats->m_num_dpdiv_acesses[m_sid] =
+ m_stats->m_num_dpdiv_acesses[m_sid] + (double)active_count * latency;
}
- m_stats->m_active_exu_threads[m_sid]+=active_count;
+ m_stats->m_active_exu_threads[m_sid] += active_count;
m_stats->m_active_exu_warps[m_sid]++;
- }
+ }
- void incsqrt_stat(unsigned active_count,double latency) {
- if(m_config->gpgpu_clock_gated_lanes==false){
- m_stats->m_num_sqrt_acesses[m_sid]=m_stats->m_num_sqrt_acesses[m_sid]+(double)active_count*latency
- + inactive_lanes_accesses_sfu(active_count, latency);
- }else{
- m_stats->m_num_sqrt_acesses[m_sid]=m_stats->m_num_sqrt_acesses[m_sid]+(double)active_count*latency;
+ void incsqrt_stat(unsigned active_count, double latency) {
+ if (m_config->gpgpu_clock_gated_lanes == false) {
+ m_stats->m_num_sqrt_acesses[m_sid] =
+ m_stats->m_num_sqrt_acesses[m_sid] + (double)active_count * latency +
+ inactive_lanes_accesses_sfu(active_count, latency);
+ } else {
+ m_stats->m_num_sqrt_acesses[m_sid] =
+ m_stats->m_num_sqrt_acesses[m_sid] + (double)active_count * latency;
}
- m_stats->m_active_exu_threads[m_sid]+=active_count;
+ m_stats->m_active_exu_threads[m_sid] += active_count;
m_stats->m_active_exu_warps[m_sid]++;
- }
+ }
- void inclog_stat(unsigned active_count,double latency) {
- if(m_config->gpgpu_clock_gated_lanes==false){
- m_stats->m_num_log_acesses[m_sid]=m_stats->m_num_log_acesses[m_sid]+(double)active_count*latency
- + inactive_lanes_accesses_sfu(active_count, latency);
- }else{
- m_stats->m_num_log_acesses[m_sid]=m_stats->m_num_log_acesses[m_sid]+(double)active_count*latency;
+ void inclog_stat(unsigned active_count, double latency) {
+ if (m_config->gpgpu_clock_gated_lanes == false) {
+ m_stats->m_num_log_acesses[m_sid] =
+ m_stats->m_num_log_acesses[m_sid] + (double)active_count * latency +
+ inactive_lanes_accesses_sfu(active_count, latency);
+ } else {
+ m_stats->m_num_log_acesses[m_sid] =
+ m_stats->m_num_log_acesses[m_sid] + (double)active_count * latency;
}
- m_stats->m_active_exu_threads[m_sid]+=active_count;
+ m_stats->m_active_exu_threads[m_sid] += active_count;
m_stats->m_active_exu_warps[m_sid]++;
- }
+ }
- void incexp_stat(unsigned active_count,double latency) {
- if(m_config->gpgpu_clock_gated_lanes==false){
- m_stats->m_num_exp_acesses[m_sid]=m_stats->m_num_exp_acesses[m_sid]+(double)active_count*latency
- + inactive_lanes_accesses_sfu(active_count, latency);
- }else{
- m_stats->m_num_exp_acesses[m_sid]=m_stats->m_num_exp_acesses[m_sid]+(double)active_count*latency;
+ void incexp_stat(unsigned active_count, double latency) {
+ if (m_config->gpgpu_clock_gated_lanes == false) {
+ m_stats->m_num_exp_acesses[m_sid] =
+ m_stats->m_num_exp_acesses[m_sid] + (double)active_count * latency +
+ inactive_lanes_accesses_sfu(active_count, latency);
+ } else {
+ m_stats->m_num_exp_acesses[m_sid] =
+ m_stats->m_num_exp_acesses[m_sid] + (double)active_count * latency;
}
- m_stats->m_active_exu_threads[m_sid]+=active_count;
+ m_stats->m_active_exu_threads[m_sid] += active_count;
m_stats->m_active_exu_warps[m_sid]++;
}
- void incsin_stat(unsigned active_count,double latency) {
- if(m_config->gpgpu_clock_gated_lanes==false){
- m_stats->m_num_sin_acesses[m_sid]=m_stats->m_num_sin_acesses[m_sid]+(double)active_count*latency
- + inactive_lanes_accesses_sfu(active_count, latency);
- }else{
- m_stats->m_num_sin_acesses[m_sid]=m_stats->m_num_sin_acesses[m_sid]+(double)active_count*latency;
+ void incsin_stat(unsigned active_count, double latency) {
+ if (m_config->gpgpu_clock_gated_lanes == false) {
+ m_stats->m_num_sin_acesses[m_sid] =
+ m_stats->m_num_sin_acesses[m_sid] + (double)active_count * latency +
+ inactive_lanes_accesses_sfu(active_count, latency);
+ } else {
+ m_stats->m_num_sin_acesses[m_sid] =
+ m_stats->m_num_sin_acesses[m_sid] + (double)active_count * latency;
}
- m_stats->m_active_exu_threads[m_sid]+=active_count;
+ m_stats->m_active_exu_threads[m_sid] += active_count;
m_stats->m_active_exu_warps[m_sid]++;
}
-
- void inctensor_stat(unsigned active_count,double latency) {
- if(m_config->gpgpu_clock_gated_lanes==false){
- m_stats->m_num_tensor_core_acesses[m_sid]=m_stats->m_num_tensor_core_acesses[m_sid]+(double)active_count*latency
- + inactive_lanes_accesses_sfu(active_count, latency);
- }else{
- m_stats->m_num_tensor_core_acesses[m_sid]=m_stats->m_num_tensor_core_acesses[m_sid]+(double)active_count*latency;
+ void inctensor_stat(unsigned active_count, double latency) {
+ if (m_config->gpgpu_clock_gated_lanes == false) {
+ m_stats->m_num_tensor_core_acesses[m_sid] =
+ m_stats->m_num_tensor_core_acesses[m_sid] +
+ (double)active_count * latency +
+ inactive_lanes_accesses_sfu(active_count, latency);
+ } else {
+ m_stats->m_num_tensor_core_acesses[m_sid] =
+ m_stats->m_num_tensor_core_acesses[m_sid] +
+ (double)active_count * latency;
}
- m_stats->m_active_exu_threads[m_sid]+=active_count;
+ m_stats->m_active_exu_threads[m_sid] += active_count;
m_stats->m_active_exu_warps[m_sid]++;
}
- void inctex_stat(unsigned active_count,double latency) {
- if(m_config->gpgpu_clock_gated_lanes==false){
- m_stats->m_num_tex_acesses[m_sid]=m_stats->m_num_tex_acesses[m_sid]+(double)active_count*latency
- + inactive_lanes_accesses_sfu(active_count, latency);
- }else{
- m_stats->m_num_tex_acesses[m_sid]=m_stats->m_num_tex_acesses[m_sid]+(double)active_count*latency;
+ void inctex_stat(unsigned active_count, double latency) {
+ if (m_config->gpgpu_clock_gated_lanes == false) {
+ m_stats->m_num_tex_acesses[m_sid] =
+ m_stats->m_num_tex_acesses[m_sid] + (double)active_count * latency +
+ inactive_lanes_accesses_sfu(active_count, latency);
+ } else {
+ m_stats->m_num_tex_acesses[m_sid] =
+ m_stats->m_num_tex_acesses[m_sid] + (double)active_count * latency;
}
- m_stats->m_active_exu_threads[m_sid]+=active_count;
+ m_stats->m_active_exu_threads[m_sid] += active_count;
m_stats->m_active_exu_warps[m_sid]++;
}
void inc_const_accesses(unsigned active_count) {
- m_stats->m_num_const_acesses[m_sid]=m_stats->m_num_const_acesses[m_sid]+active_count;
+ m_stats->m_num_const_acesses[m_sid] =
+ m_stats->m_num_const_acesses[m_sid] + active_count;
}
void incsfu_stat(unsigned active_count, double latency) {
m_stats->m_num_sfu_acesses[m_sid] =
- m_stats->m_num_sfu_acesses[m_sid] + (double)active_count*latency;
+ m_stats->m_num_sfu_acesses[m_sid] + (double)active_count * latency;
}
void incsp_stat(unsigned active_count, double latency) {
m_stats->m_num_sp_acesses[m_sid] =
- m_stats->m_num_sp_acesses[m_sid] + (double)active_count*latency;
+ m_stats->m_num_sp_acesses[m_sid] + (double)active_count * latency;
}
void incmem_stat(unsigned active_count, double latency) {
if (m_config->gpgpu_clock_gated_lanes == false) {
m_stats->m_num_mem_acesses[m_sid] =
- m_stats->m_num_mem_acesses[m_sid] + (double)active_count*latency +
+ m_stats->m_num_mem_acesses[m_sid] + (double)active_count * latency +
inactive_lanes_accesses_nonsfu(active_count, latency);
} else {
m_stats->m_num_mem_acesses[m_sid] =
- m_stats->m_num_mem_acesses[m_sid] + (double)active_count*latency;
+ m_stats->m_num_mem_acesses[m_sid] + (double)active_count * latency;
}
}
void incexecstat(warp_inst_t *&inst);