diff options
Diffstat (limited to 'src/gpgpu-sim')
| -rw-r--r-- | src/gpgpu-sim/delayqueue.h | 2 | ||||
| -rw-r--r-- | src/gpgpu-sim/gpu-sim.cc | 20 | ||||
| -rw-r--r-- | src/gpgpu-sim/icnt_wrapper.cc | 91 | ||||
| -rw-r--r-- | src/gpgpu-sim/icnt_wrapper.h | 14 | ||||
| -rw-r--r-- | src/gpgpu-sim/l2cache.cc | 2 | ||||
| -rw-r--r-- | src/gpgpu-sim/shader.cc | 3 |
6 files changed, 99 insertions, 33 deletions
diff --git a/src/gpgpu-sim/delayqueue.h b/src/gpgpu-sim/delayqueue.h index fd921bf..b25f143 100644 --- a/src/gpgpu-sim/delayqueue.h +++ b/src/gpgpu-sim/delayqueue.h @@ -32,7 +32,7 @@ #ifndef DELAYQUEUE_H #define DELAYQUEUE_H -#include "../intersim/statwraper.h" +#include "../statwrapper.h" #include "gpu-misc.h" template <class T> diff --git a/src/gpgpu-sim/gpu-sim.cc b/src/gpgpu-sim/gpu-sim.cc index 53d13fa..36e72e8 100644 --- a/src/gpgpu-sim/gpu-sim.cc +++ b/src/gpgpu-sim/gpu-sim.cc @@ -51,8 +51,7 @@ #include "l2cache.h" #include "../cuda-sim/ptx-stats.h" -#include "../intersim/statwraper.h" -#include "../intersim/interconnect_interface.h" +#include "../statwrapper.h" #include "../abstract_hardware_model.h" #include "../debug.h" #include "../gpgpusim_entrypoint.h" @@ -579,7 +578,7 @@ gpgpu_sim::gpgpu_sim( const gpgpu_sim_config &config ) } } - icnt_init(m_shader_config->n_simt_clusters,m_memory_config->m_n_mem_sub_partition); + icnt_wrapper_init(m_shader_config->n_simt_clusters,m_memory_config->m_n_mem_sub_partition); time_vector_create(NUM_MEM_REQ_STAT); fprintf(stdout, "GPGPU-Sim uArch: performance model initialization complete.\n"); @@ -702,8 +701,8 @@ void gpgpu_sim::init() set_spill_interval (m_config.gpgpu_cflog_interval * 40); } - if (g_network_mode) - icnt_init_grid(); + if (g_network_mode) + icnt_init(); // McPAT initialization function. Called on first launch of GPU #ifdef GPGPUSIM_POWER_MODEL @@ -721,15 +720,14 @@ void gpgpu_sim::update_stats() { void gpgpu_sim::print_stats() { - ptx_file_line_stats_write_file(); gpu_print_stat(); if (g_network_mode) { - interconnect_stats(); - printf("----------------------------Interconnect-DETAILS---------------------------------" ); - icnt_overal_stat(); - printf("----------------------------END-of-Interconnect-DETAILS-------------------------" ); + printf("----------------------------Interconnect-DETAILS--------------------------------\n" ); + icnt_display_stats(); + icnt_display_overall_stats(); + printf("----------------------------END-of-Interconnect-DETAILS-------------------------\n" ); } } @@ -765,7 +763,7 @@ void gpgpu_sim::deadlock_check() } if( icnt_busy() ) { printf("GPGPU-Sim uArch DEADLOCK: iterconnect contains traffic\n"); - display_icnt_state( stdout ); + icnt_display_state( stdout ); } printf("\nRe-run the simulator in gdb and use debug routines in .gdbinit to debug this\n"); fflush(stdout); diff --git a/src/gpgpu-sim/icnt_wrapper.cc b/src/gpgpu-sim/icnt_wrapper.cc index f8c981d..c005dd9 100644 --- a/src/gpgpu-sim/icnt_wrapper.cc +++ b/src/gpgpu-sim/icnt_wrapper.cc @@ -27,13 +27,18 @@ #include "icnt_wrapper.h" #include <assert.h> -#include "../intersim/interconnect_interface.h" +#include "../intersim2/globals.hpp" +#include "../intersim2/interconnect_interface.hpp" +icnt_init_p icnt_init; icnt_has_buffer_p icnt_has_buffer; icnt_push_p icnt_push; icnt_pop_p icnt_pop; icnt_transfer_p icnt_transfer; icnt_busy_p icnt_busy; +icnt_display_stats_p icnt_display_stats; +icnt_display_overall_stats_p icnt_display_overall_stats; +icnt_display_state_p icnt_display_state; icnt_get_flit_size_p icnt_get_flit_size; int g_network_mode; @@ -41,27 +46,83 @@ char* g_network_config_filename; #include "../option_parser.h" +// Wrapper to intersim2 to accompany old icnt_wrapper +// TODO: use delegate/boost/c++11<funtion> instead +static void intersim2_init() +{ + g_icnt_interface->Init(); +} + +static bool intersim2_has_buffer(unsigned input, unsigned int size) +{ + return g_icnt_interface->HasBuffer(input, size); +} + +static void intersim2_push(unsigned input, unsigned output, void* data, unsigned int size) +{ + g_icnt_interface->Push(input, output, data, size); +} + +static void* intersim2_pop(unsigned output) +{ + return g_icnt_interface->Pop(output); +} + +static void intersim2_transfer() +{ + g_icnt_interface->Advance(); +} + +static bool intersim2_busy() +{ + return g_icnt_interface->Busy(); +} + +static void intersim2_display_stats() +{ + g_icnt_interface->DisplayStats(); +} + +static void intersim2_display_overall_stats() +{ + g_icnt_interface->DisplayOverallStats(); +} + +static void intersim2_display_state(FILE *fp) +{ + g_icnt_interface->DisplayState(fp); +} + +static unsigned intersim2_get_flit_size() +{ + return g_icnt_interface->GetFlitSize(); +} + void icnt_reg_options( class OptionParser * opp ) { option_parser_register(opp, "-network_mode", OPT_INT32, &g_network_mode, "Interconnection network mode", "1"); option_parser_register(opp, "-inter_config_file", OPT_CSTR, &g_network_config_filename, "Interconnection network config file", "mesh"); } -void icnt_init( unsigned int n_shader, unsigned int n_mem ) +void icnt_wrapper_init( unsigned int n_shader, unsigned int n_mem ) { switch (g_network_mode) { - case INTERSIM: - init_interconnect(g_network_config_filename, n_shader, n_mem ); - icnt_has_buffer = interconnect_has_buffer; - icnt_push = interconnect_push; - icnt_pop = interconnect_pop; - icnt_transfer = advance_interconnect; - icnt_busy = interconnect_busy; - icnt_get_flit_size = interconnect_get_flit_size; - break; - - default: - assert(0); - break; + case INTERSIM: + //FIXME: delete the object: may add icnt_done wrapper + g_icnt_interface = new InterconnectInterface(g_network_config_filename, n_shader, n_mem ); + icnt_init = intersim2_init; + icnt_has_buffer = intersim2_has_buffer; + icnt_push = intersim2_push; + icnt_pop = intersim2_pop; + icnt_transfer = intersim2_transfer; + icnt_busy = intersim2_busy; + icnt_display_stats = intersim2_display_stats; + icnt_display_overall_stats = intersim2_display_overall_stats; + icnt_display_state = intersim2_display_state; + icnt_get_flit_size = intersim2_get_flit_size; + break; + default: + assert(0); + break; } } diff --git a/src/gpgpu-sim/icnt_wrapper.h b/src/gpgpu-sim/icnt_wrapper.h index f8e6baf..2cbe0df 100644 --- a/src/gpgpu-sim/icnt_wrapper.h +++ b/src/gpgpu-sim/icnt_wrapper.h @@ -31,21 +31,30 @@ #include <stdio.h> // functional interface to the interconnect + +typedef void (*icnt_init_p)( ); typedef bool (*icnt_has_buffer_p)(unsigned input, unsigned int size); typedef void (*icnt_push_p)(unsigned input, unsigned output, void* data, unsigned int size); typedef void* (*icnt_pop_p)(unsigned output); typedef void (*icnt_transfer_p)( ); -typedef unsigned (*icnt_busy_p)( ); +typedef bool (*icnt_busy_p)( ); typedef void (*icnt_drain_p)( ); +typedef void (*icnt_display_stats_p)( ); +typedef void (*icnt_display_overall_stats_p)( ); +typedef void (*icnt_display_state_p)(FILE* fp); typedef unsigned (*icnt_get_flit_size_p)(); +extern icnt_init_p icnt_init; extern icnt_has_buffer_p icnt_has_buffer; extern icnt_push_p icnt_push; extern icnt_pop_p icnt_pop; extern icnt_transfer_p icnt_transfer; extern icnt_busy_p icnt_busy; extern icnt_drain_p icnt_drain; +extern icnt_display_stats_p icnt_display_stats; +extern icnt_display_overall_stats_p icnt_display_overall_stats; +extern icnt_display_state_p icnt_display_state; extern icnt_get_flit_size_p icnt_get_flit_size; extern int g_network_mode; @@ -54,8 +63,7 @@ enum network_mode { N_NETWORK_MODE }; -void icnt_init( unsigned int n_shader, unsigned int n_mem ); +void icnt_wrapper_init( unsigned int n_shader, unsigned int n_mem ); void icnt_reg_options( class OptionParser * opp ); -void display_icnt_state( FILE *fp ); #endif diff --git a/src/gpgpu-sim/l2cache.cc b/src/gpgpu-sim/l2cache.cc index 2bfc7e9..c5fc44e 100644 --- a/src/gpgpu-sim/l2cache.cc +++ b/src/gpgpu-sim/l2cache.cc @@ -38,7 +38,7 @@ #include "gpu-cache.h" #include "histogram.h" #include "l2cache.h" -#include "../intersim/statwraper.h" +#include "../statwrapper.h" #include "../abstract_hardware_model.h" #include "gpu-sim.h" #include "shader.h" diff --git a/src/gpgpu-sim/shader.cc b/src/gpgpu-sim/shader.cc index eb3748f..df858fa 100644 --- a/src/gpgpu-sim/shader.cc +++ b/src/gpgpu-sim/shader.cc @@ -40,8 +40,7 @@ #include "mem_fetch.h" #include "mem_latency_stat.h" #include "visualizer.h" -#include "../intersim/statwraper.h" -#include "../intersim/interconnect_interface.h" +#include "../statwrapper.h" #include "icnt_wrapper.h" #include <string.h> #include <limits.h> |
