diff options
Diffstat (limited to 'src/gpgpu-sim/icnt_wrapper.cc')
| -rw-r--r-- | src/gpgpu-sim/icnt_wrapper.cc | 91 |
1 files changed, 76 insertions, 15 deletions
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; } } |
