Giter VIP home page Giter VIP logo

booksim2's Introduction

BookSim Interconnection Network Simulator

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. The current major release, BookSim 2.0, supports a wide range of topologies such as mesh, torus and flattened butterfly networks, provides diverse routing algorithms and includes numerous options for customizing the network's router microarchitecture.


If you use BookSim in your research, we would appreciate the following citation in any publications to which it has contributed:

Nan Jiang, Daniel U. Becker, George Michelogiannakis, James Balfour, Brian Towles, John Kim and William J. Dally. A Detailed and Flexible Cycle-Accurate Network-on-Chip Simulator. In Proceedings of the 2013 IEEE International Symposium on Performance Analysis of Systems and Software, 2013.

booksim2's People

Contributors

calccrypto avatar razzfazz avatar sachinjoseph avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

booksim2's Issues

can not open network file anynet_file

Hi,

I am trying to create a new topology using anynet but it is giving me the following error when i am trying to simulate it using ./boolsim /examples/anynet.anynet_config.

I tried to run it using the example lines given in the readme file also but still the error remains same. Please tel me how to resolve it.

Pakhi

TSV_based_Mesh_topology

I have locally added TSV based 3D Mesh topology to booksim and the difference is observed between 2D and 3D (Latency difference).

latency measurements

What's the difference between overall network latency and overall packet latency?
And how measure each of them?

How to simulate multicast?

Hi,
I'm trying to simulate a multicast network by booksim2, and I wonder if there is any existing module for multicasting, or if someone has already tried to implement it.
I'm currently working with the trafficmanager and routing algorithm parts, but the codes are too complex for me to modify.
Hope someone can help me. Thanks so much!

what is the meaning of 'in_channel'

Hi guys! Recently I am learning routefunc.cpp in Booksim 2.0.
when I use Adaptive_xy_yx_mesh, I hae no idea what's the meaning of 'in_channel' in following code:

` if(in_channel < 2*gN){
x_then_y = (f->vc < (vcBegin + available_vcs));

}

`

Can anyone explain the meaning of 'in_channel<2*gN'? Thanks!

Anynet Parse Error

I'm using the anynet_config and anynet_file example files, but trying to run them gets a parse error. Is there any example of these files being used?

traffic passing through a channel

how to calculate traffic passing through a channel in booksim2.0,in order to calculate the routing pressure of a routing algorithm?

Hi.

Hi, I have a question about Booksim2.0.
Is there a way to determine source node and destination node?
For example, starting from (x1,y1) and arriving at (x2,y2).
If not, which file should be referenced and modified?

Thanks

Routing pressure

how to calculate routing pressure of an routing algorithm using booksim2.0

Logics here in the code seems wired?

Hi,
I am using (modifying) booksim2 for my own research.
The logic here in this code block seems to be a bit wired?
In file 'trafficmanager.cpp', line 777:

    } else { //normal mode
        result = _injection_process[cl]->test(source) ? 1 : 0;
        _requestsOutstanding[source]++;    ========================> this line!
    } 
    if(result != 0) {

When "_use_read_write!=0" , "_requestsOutstanding" is increased every injection test, this seems wired. I reckon the developer means this:

    } else { //normal mode
        result = _injection_process[cl]->test(source) ? 1 : 0;
        if(result)
             _requestsOutstanding[source]++;    
    } 
    if(result != 0) {

?

ANYNET can not be run

Hi,

I'm trying to run the anynet_config and anynet_file example files, even by using the default number I can not get an answer.
I used :
./booksim examples/anynet/anynet_config

and I get:
Anynet:can't open network file anynet_file

I add following line in the anynet.cpp :
file_name.insert(0, "examples/anynet/");

like here:

void AnyNet::_ComputeSize( const Configuration &config ){
file_name.insert(0, "examples/anynet/");
file_name = config.GetStr("network_file");
if(file_name==""){
cout<<"No network file name provided"<<endl;
exit(-1);
}

but I still have same problem,
Anynet:can't open network file anynet_file

Could you please help me to fix this.

Thanks

What's the coordinate in Booksim2?

Hi,
I'm working on a broadcast routefunc on booksim2, and I found the coordinate is quite subtle.
The only hint I can get is in the routefunc.cpp's dor_next_mesh() method:
It returns 2*dim_left for right or 2*dim_left for left.
Well, if my network has 2 dimensions, what's dimension 0, and 2*0 indicate for what?
Also, how is router's id calculated? Plz give me some hint for 2 dimension network.

Are there any example of pseudo-closed-loop simulation?

Hello. Thanks for sharing the booksim code. I have noticed that booksim supports pseudo-closed-loop simulation using dependency-annotated traces. I would like to ask whether there are corresponding simulation examples. Thank you!

Needs a license

This project needs a license so that the terms of use are set. Companies desiring to use this won't because there is no license.

Working Routing Functions

I'm using booksim2 and my own analysis code for a research project, and given the responses in issue #7, I wanted to ask which routing functions (as opposed to the actual routers) are known to be correctly implemented?

That is not to say I think they are broken! Just that potentially the code has been neglected, as with the Chaos router, and that this might cause odd results.

I am specifically interested in those functions applicable to two dimensional mesh networks. The two main ones I have been using are dim_order and min_adapt.

Thanks! :)

Chaos Router

Are there any bugs when using Chaos router with anynet?
I noticed, _IsEjectionChan function is not used at all.

Thanks

Assertion for non-negative time fails for certain router delay parameters

Setting vc_alloc_delay to 10 in the examples/dragonflyconfig file results in failed assertion:

booksim: routers/iq_router.cpp:783: void IQRouter::_VCAllocEvaluate(): Assertion `time >= 0' failed.
Aborted

This assertion is in VCAllocEvaluate() function in iq_router.cpp.
The loop that checks this assertion iterates over all entries in vc_alloc_vcs dequeue. Lets call this loop L1.
There is another loop before L1 that iterates over vc_alloc_vcs and sets this timestamp.
However, if the timestamp for first entry is non-negative, this loop breaks. Thus, when we enter L1, the first entry in vc_alloc_vcs is guaranteed to have non-negative time but others are not, resulting in this assertion fail.

Certain sample_period might cause deadlock?

Hi,

I just started with booksim and tried to run a few simulations. I found that booksim behaves very differently if it's given different sample_period value. For example, here's my config file:

num_vcs=3;
sw_allocator=separable_input_first;
sim_power=1;
vc_allocator=separable_input_first;
injection_rate_uses_flits=0;
input_speedup=1;
vc_alloc_delay=1;
latency_thres={1000000,1000000,1000000,1000000};
packet_size=5;
priority=none;
sim_count=1;
wait_for_tail_credit = 0;
sw_alloc_delay=1;
alloc_iters=1;
routing_function=dim_order;
injection_rate =0.2;
routing_delay=0;
traffic=uniform;
credit_delay=2;
output_speedup=1;
sample_period=100;
st_final_delay=1;
topology=torus;
warmup_periods=3;
c=1;
internal_speedup=1.0;
watch_out=-;
k=10;
n=2;
vc_buf_size=8;
use_noc_latency=0;
tech_file=techfile.txt;

The sample period of 100 could finish almost instantaneously, however, if I change it to 200, 400, or 1000, it would take really really long. When I looked at those output logs, it seemed that the "Measured flits" remained unchanged for a lot of iterations.

Any idea how that could happen?

Thanks!

Channel Slicing

How can channel slicing be implemented using Booksim 2.0?

problem about aborting simulation in singleconfig example

Hi,

When I run singleconfig in the example folder, I got aborting simulation. the error says exceed 500 cycles. even When I used default numbers.

Could you please help, How can I fix this?
Also, can I use this singleconfig for different kinds of fly topology, for example for four stages?(topology = fly, k = 2, n=4), because for this numbers also I have same error.

_int_map key typo

In booksim_config.cpp, AddStrField("parm_seed", ""); is spelled wrong. It should be AddStrField("perm_seed", ""). Currently, Configuration::GetStr errors when trying to use randperm in the config file.

To reproduce: Change traffic = uniform; in torus88 to traffic = randperm;

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.