summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/icnt_wrapper.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpgpu-sim/icnt_wrapper.cc')
-rw-r--r--src/gpgpu-sim/icnt_wrapper.cc259
1 files changed, 111 insertions, 148 deletions
diff --git a/src/gpgpu-sim/icnt_wrapper.cc b/src/gpgpu-sim/icnt_wrapper.cc
index 6e3e596..4ae7aa8 100644
--- a/src/gpgpu-sim/icnt_wrapper.cc
+++ b/src/gpgpu-sim/icnt_wrapper.cc
@@ -7,23 +7,24 @@
//
// Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
-// 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.
-// Neither the name of The University of British Columbia nor the names of its
-// contributors may be used to endorse or promote products derived from this
-// software without specific prior written permission.
+// 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. Neither the name of
+// The University of British Columbia nor the names of its contributors may be
+// used to endorse or promote products derived from this software without
+// specific prior written permission.
//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
#include "icnt_wrapper.h"
#include <assert.h>
@@ -31,154 +32,118 @@
#include "../intersim2/interconnect_interface.hpp"
#include "local_interconnect.h"
-
-icnt_create_p icnt_create;
-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_create_p icnt_create;
+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;
+icnt_display_state_p icnt_display_state;
+icnt_get_flit_size_p icnt_get_flit_size;
-unsigned g_network_mode;
+unsigned g_network_mode;
char* g_network_config_filename;
-
struct inct_config g_inct_config;
-LocalInterconnect *g_localicnt_interface;
+LocalInterconnect* g_localicnt_interface;
#include "../option_parser.h"
// Wrapper to intersim2 to accompany old icnt_wrapper
// TODO: use delegate/boost/c++11<funtion> instead
-static void intersim2_create(unsigned int n_shader, unsigned int n_mem)
-{
- g_icnt_interface->CreateInterconnect(n_shader, n_mem);
+static void intersim2_create(unsigned int n_shader, unsigned int n_mem) {
+ g_icnt_interface->CreateInterconnect(n_shader, n_mem);
}
-static void intersim2_init()
-{
- g_icnt_interface->Init();
-}
+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 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_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_pop(unsigned output) {
+ return g_icnt_interface->Pop(output);
}
-static void intersim2_transfer()
-{
- g_icnt_interface->Advance();
-}
+static void intersim2_transfer() { g_icnt_interface->Advance(); }
-static bool intersim2_busy()
-{
- return g_icnt_interface->Busy();
-}
+static bool intersim2_busy() { return g_icnt_interface->Busy(); }
-static void intersim2_display_stats()
-{
- g_icnt_interface->DisplayStats();
-}
+static void intersim2_display_stats() { g_icnt_interface->DisplayStats(); }
-static void intersim2_display_overall_stats()
-{
- g_icnt_interface->DisplayOverallStats();
+static void intersim2_display_overall_stats() {
+ g_icnt_interface->DisplayOverallStats();
}
-static void intersim2_display_state(FILE *fp)
-{
- g_icnt_interface->DisplayState(fp);
+static void intersim2_display_state(FILE* fp) {
+ g_icnt_interface->DisplayState(fp);
}
-static unsigned intersim2_get_flit_size()
-{
- return g_icnt_interface->GetFlitSize();
+static unsigned intersim2_get_flit_size() {
+ return g_icnt_interface->GetFlitSize();
}
-
//////////////////////////////////////////////////////
-static void LocalInterconnect_create(unsigned int n_shader, unsigned int n_mem)
-{
- g_localicnt_interface->CreateInterconnect(n_shader, n_mem);
+static void LocalInterconnect_create(unsigned int n_shader,
+ unsigned int n_mem) {
+ g_localicnt_interface->CreateInterconnect(n_shader, n_mem);
}
-static void LocalInterconnect_init()
-{
- g_localicnt_interface->Init();
-}
+static void LocalInterconnect_init() { g_localicnt_interface->Init(); }
-static bool LocalInterconnect_has_buffer(unsigned input, unsigned int size)
-{
- return g_localicnt_interface->HasBuffer(input, size);
+static bool LocalInterconnect_has_buffer(unsigned input, unsigned int size) {
+ return g_localicnt_interface->HasBuffer(input, size);
}
-static void LocalInterconnect_push(unsigned input, unsigned output, void* data, unsigned int size)
-{
- g_localicnt_interface->Push(input, output, data, size);
+static void LocalInterconnect_push(unsigned input, unsigned output, void* data,
+ unsigned int size) {
+ g_localicnt_interface->Push(input, output, data, size);
}
-static void* LocalInterconnect_pop(unsigned output)
-{
- return g_localicnt_interface->Pop(output);
+static void* LocalInterconnect_pop(unsigned output) {
+ return g_localicnt_interface->Pop(output);
}
-static void LocalInterconnect_transfer()
-{
- g_localicnt_interface->Advance();
-}
+static void LocalInterconnect_transfer() { g_localicnt_interface->Advance(); }
-static bool LocalInterconnect_busy()
-{
- return g_localicnt_interface->Busy();
-}
+static bool LocalInterconnect_busy() { return g_localicnt_interface->Busy(); }
-static void LocalInterconnect_display_stats()
-{
- g_localicnt_interface->DisplayStats();
+static void LocalInterconnect_display_stats() {
+ g_localicnt_interface->DisplayStats();
}
-static void LocalInterconnect_display_overall_stats()
-{
- g_localicnt_interface->DisplayOverallStats();
+static void LocalInterconnect_display_overall_stats() {
+ g_localicnt_interface->DisplayOverallStats();
}
-static void LocalInterconnect_display_state(FILE *fp)
-{
- g_localicnt_interface->DisplayState(fp);
+static void LocalInterconnect_display_state(FILE* fp) {
+ g_localicnt_interface->DisplayState(fp);
}
-static unsigned LocalInterconnect_get_flit_size()
-{
- return g_localicnt_interface->GetFlitSize();
+static unsigned LocalInterconnect_get_flit_size() {
+ return g_localicnt_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_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");
- //parameters for local xbar
+ // parameters for local xbar
option_parser_register(opp, "-icnt_in_buffer_limit", OPT_UINT32, &g_inct_config.in_buffer_limit, "in_buffer_limit", "64");
option_parser_register(opp, "-icnt_out_buffer_limit", OPT_UINT32, &g_inct_config.out_buffer_limit, "out_buffer_limit", "64");
option_parser_register(opp, "-icnt_subnets", OPT_UINT32, &g_inct_config.subnets, "subnets", "2");
@@ -187,43 +152,41 @@ void icnt_reg_options( class OptionParser * opp )
option_parser_register(opp, "-icnt_grant_cycles", OPT_UINT32, &g_inct_config.grant_cycles, "grant_cycles", "1");
-
}
-void icnt_wrapper_init()
-{
- switch (g_network_mode) {
- case INTERSIM:
- //FIXME: delete the object: may add icnt_done wrapper
- g_icnt_interface = InterconnectInterface::New(g_network_config_filename);
- icnt_create = intersim2_create;
- 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;
- case LOCAL_XBAR:
- g_localicnt_interface = LocalInterconnect::New(g_inct_config);
- icnt_create = LocalInterconnect_create;
- icnt_init = LocalInterconnect_init;
- icnt_has_buffer = LocalInterconnect_has_buffer;
- icnt_push = LocalInterconnect_push;
- icnt_pop = LocalInterconnect_pop;
- icnt_transfer = LocalInterconnect_transfer;
- icnt_busy = LocalInterconnect_busy;
- icnt_display_stats = LocalInterconnect_display_stats;
- icnt_display_overall_stats = LocalInterconnect_display_overall_stats;
- icnt_display_state = LocalInterconnect_display_state;
- icnt_get_flit_size = LocalInterconnect_get_flit_size;
- break;
- default:
- assert(0);
- break;
- }
+void icnt_wrapper_init() {
+ switch (g_network_mode) {
+ case INTERSIM:
+ // FIXME: delete the object: may add icnt_done wrapper
+ g_icnt_interface = InterconnectInterface::New(g_network_config_filename);
+ icnt_create = intersim2_create;
+ 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;
+ case LOCAL_XBAR:
+ g_localicnt_interface = LocalInterconnect::New(g_inct_config);
+ icnt_create = LocalInterconnect_create;
+ icnt_init = LocalInterconnect_init;
+ icnt_has_buffer = LocalInterconnect_has_buffer;
+ icnt_push = LocalInterconnect_push;
+ icnt_pop = LocalInterconnect_pop;
+ icnt_transfer = LocalInterconnect_transfer;
+ icnt_busy = LocalInterconnect_busy;
+ icnt_display_stats = LocalInterconnect_display_stats;
+ icnt_display_overall_stats = LocalInterconnect_display_overall_stats;
+ icnt_display_state = LocalInterconnect_display_state;
+ icnt_get_flit_size = LocalInterconnect_get_flit_size;
+ break;
+ default:
+ assert(0);
+ break;
+ }
}