BookSim is a cycle-accurate interconnection network simulator. Originally developed for and introduced with the Principles and Practices of Interconnection Networks book, its functionality has since been continuously extended.
This simulator is customized version of BookSim2 (https://github.com/booksim/booksim2) for evaluating a new topology "PolarFly+".
Use files in src directory.
Enable the following line in polarfly_tables.hpp and rebuild.
//#define USE_TABLE_1x1
//#define USE_TABLE_7x3
//#define USE_TABLE_13x4
//#define USE_TABLE_31x6
#define USE_TABLE_57x8Set the config file as follows:
topology = polarflyplus;
k = 6; //hypercube
n = 8; //polarfly:F7=8, F5=6, F3=4, F2=3
routing_function = dim_order;
num_vcs = 6;
traffic = uniform;Enable the following line in polarfly_tables.hpp and rebuild.
//#define USE_TABLE_1x1
//#define USE_TABLE_7x3
//#define USE_TABLE_13x4
#define USE_TABLE_31x6
//#define USE_TABLE_57x8 Set the config file as follows:
topology = polarflyplus;
k = 0; //hypercube
n = 6; //polarfly:F7=8, F5=6, F3=4, F2=3
routing_function = dim_order;
num_vcs = 6;
traffic = uniform;Use files in src_collective directory.
In the config file, set the packet size and injection rate as follows, ensuring their product equals 1:
packet_size = 1;//16384; //8192; //4096; //2048; //1024;//512;//256;//128;//64;//32;//16;//8;
injection_rate = 1.0;//0.00006103515625; //0.0001220703125; //0.000244140625; //0.00048828125;//0.0009765625;//0.001953125;//0.00390625;//0.0078125;//0.015625;//0.03125;//0.0625;//0.125;Enable the follwing line in collective.hpp.
#define PFP_CYCLE_DEBUG
#define PAIRWISE
//#define RINGEnable the following line in polarfly_tables.hpp and rebuild.
//#define USE_TABLE_1x1
//#define USE_TABLE_7x3
#define USE_TABLE_13x4
//#define USE_TABLE_31x6
//#define USE_TABLE_57x8 Set the config file as follows:
topology = polarflyplus;
hypercubeport = 3; //hypercube port
polarflyport = 4; //polarfly port F7:8, F5:6, F3:4, F2:3
nic = 1;
num_vcs = 6;
traffic = pairwise;
routing_function = dim_order;Enable the follwing line in collective.hpp.
#define PFP_CYCLE_DEBUG
#define PAIRWISE
//#define RINGEnable the following line in polarfly_tables.hpp and rebuild.
#define USE_TABLE_1x1
//#define USE_TABLE_7x3
//#define USE_TABLE_13x4
//#define USE_TABLE_31x6
//#define USE_TABLE_57x8Set the config file as follows:
topology = polarflyplus;
hypercubeport = 6; //hypercube port
polarflyport = 0; //polarfly port F7:8, F5:6, F3:4, F2:3
nic = 6;
num_vcs = 6;
traffic = pairwise;
routing_function = dim_order;Enable the follwing line in collective.hpp and rebuild.
#define FATTREE_CYCLE_DEBUG
#define PAIRWISE
//#define RING
#define SWITCH The "SWITCH" should be enabled only in this simulation.
Set the config file as follows:
topology = fattree;
k = 32; //ary
n = 1; //dim
nic = 1;
traffic = pairwise;
routing_function = nca;Enable the follwing line in collective.hpp.
#define PFP_CYCLE_DEBUG
//#define PAIRWISE
#define RINGEnable the following line in polarfly_tables.hpp and rebuild.
//#define USE_TABLE_1x1
#define USE_TABLE_7x3
//#define USE_TABLE_13x4
//#define USE_TABLE_31x6
//#define USE_TABLE_57x8Set the config file as follows:
topology = polarflyplus;
hypercubeport = 0; //hypercube port
polarflyport = 3; //polarfly port F7:8, F5:6, F3:4, F2:3
nic = 2;
num_vcs = 6;
traffic = ring;
routing_function = dim_order;If you enable the following comments in polarfly_tables.hpp as needed, and debug messages are available.
//#define PFP_DEBUG // trafficmanager
//#define DEBUG_DRAIN // trafficmanager
//#define PFP_MAP_DEBUG // trafficmanager
//#define PFP_NET_DEBUG // network
//#define PFP_FAULT_DEBUG // network
//#define PFP_ROUTING_DEBUG // routefunc
//#define PFP_ROUTER_DEBUG // routerFault avoiding routing is also available. In the config file, set the following parameter.
link_failures = 1;
fail_seed=time;The "link_failures" define the number of failure nodes in the network.