Hi Derek,
The reason why these variables could not be standard members of the
Network class was because the function to read these values,
MessageSizeType_to_int(MessageSizeType size_type), is an extern
function. This is because this function was earlier being used by some
protocols while calculating stats. We realized that this is no longer
the case, and this function can be made internal to the Network class.

I did that. These are my changes:
 - A parameter called control_msg_size is defined in defaults.rb (and is
also printed out in the ruby.config file from cfg.rb). 
 - In the Network::init() function, m_control_msg_size gets set to
control_msg_size, 
   and m_data_msg_size gets set to RubySystem::getBlockSizeBytes() +
m_control_msg_size
-  The MessageSizeType_to_int function is a public member of the Network
class and is used in the following places:
garnet_fixed_pipeline/NetworkInterface_d.cc,
garnet_flexible_pipeline/NetworkInterface_d.cc, simple/Switch.cc,
simple/Throttle.cc
- I removed the declaration of this function from
src/mem/protocol/RubySlicc_Util.sm  

I can check these in if you wish. However, I would need to run the
regression tester before that right? And also update the regression
stats files?
Could you tell me how to do that?

Thanks
Tushar



-----Original Message-----
From: [email protected] [mailto:[email protected]] On
Behalf Of Derek Hower
Sent: Tuesday, August 04, 2009 7:46 PM
To: M5 Developer List
Subject: Re: [m5-dev] Bug in DATA_MESSAGE_SIZE initialization in Ruby

On Tue, Aug 4, 2009 at 9:18 PM, Krishna, Tushar<[email protected]>
wrote:
> Hi,
> There is a small bug in the initialization of DATA_MESSAGE_SIZE (which
is
> used by the Network).
>
> In src/mem/ruby/network/Network.hh
> there is this line:
>
> const int DATA_MESSAGE_SIZE = (RubySystem::getBlockSizeBytes()+8);
>
> The problem is that RubySystem's init function (which sets the block
size)
> is called *after* Network is created, and hence DATA_MESSAGE_SIZE gets
set
> to (0 + 8).
>

Good catch.

> Network has its own init function too which is called later, but
> DATA_MESSAGE_SIZE is not part of that.
>
> Brad and I were discussing some potential ways to solve this issue.
> We can either make DATA_MESSAGE_SIZE a local variable of the Network
class
> and set it during the init. However, this leads to things like
declaring
> static variables, referencing the network pointer from the system
pointer
> etc -> a sort of ugly way to set a constant parameter.
>

I don't think it's that bad.  For one, I'm not sure why it would have
to be static.  It could just be a standard member of Network.  As for
referencing the Network pointer from System, I don't think that's a
problem, either.  The system object has a pointer to all other objects
anyway, and I don't believe that is going to change even as we go
toward the M5-like configuration.  In fact, I think the goal is to
eventually remove all globals, System included, so Network and System
would presumably have pointers to each other.

The way to do it that would fit with the current Ruby configuration
style would be to initialize an m_data_message_size member in init()
based on a parameter passed in the argv vector.  To do this you'll
need to add a :data_message_size default_param to the Network class in
defaults.rb, print it's value in Network::argv in cfg.rb, then consume
the value in Network.cc::init.

> Another possibility is using 64 bytes as the block size here and then
having
> an assertion check in the init function...

Perhaps that would work for whatever it is you're currently working
on, but definitely not a permanent fix.

>
> Any suggestions from the GEM5 team?
>
> Thanks
> Tushar
>
> _______________________________________________
> m5-dev mailing list
> [email protected]
> http://m5sim.org/mailman/listinfo/m5-dev
>
>
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev


_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to