summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim
diff options
context:
space:
mode:
authorDongdong Li <[email protected]>2013-08-08 00:15:58 -0800
committerAndrew Boktor <[email protected]>2014-08-14 13:50:58 -0700
commit7f49fe9feb174d34efc2a011bad79b38522a360b (patch)
treeab5b7b66e40315a81871acbf386722981020f866 /src/gpgpu-sim
parent5f91e7435742bab74dfbeca18afc63e466498f36 (diff)
Intesim2 Integration
Details: See Review 80001 https://gpgpu-sim-code-review.appspot.com/80001/ [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 16747]
Diffstat (limited to 'src/gpgpu-sim')
-rw-r--r--src/gpgpu-sim/delayqueue.h2
-rw-r--r--src/gpgpu-sim/gpu-sim.cc20
-rw-r--r--src/gpgpu-sim/icnt_wrapper.cc91
-rw-r--r--src/gpgpu-sim/icnt_wrapper.h14
-rw-r--r--src/gpgpu-sim/l2cache.cc2
-rw-r--r--src/gpgpu-sim/shader.cc3
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>