Multiple Consumers

7 views
Skip to first unread message

Xiyue Xiang

unread,
Mar 18, 2015, 9:23:03 AM3/18/15
to topaz-...@googlegroups.com
I understand that the current TOPAZ doesn't support multiple consumers. However, I will have to use multiple consumers in my design for the sake of performance.

I need 2 consumers in the current BLESS router. Can you point me to the right direction to make necessary modification?

Xiyue Xiang

unread,
Mar 18, 2015, 1:26:01 PM3/18/15
to topaz-...@googlegroups.com
Okay, I think I just fix this problem. But still I would like to have your input on the related issue.

First, I've added another consumer in router.sgm. Since I am using BLESS router, multiple consumers must share the same reassembly buffers to validate a message delivery. So, I made necessary changes in TPZConsumerFlowBless.cpp/.hpp. Then, the local injection logic in TPZSimpleRouterFlowBless.cpp must be modified as well, based on the number of local ports. Till now, I think my implementation works in a sense of functionality.

I still have a question in mind.

Since the injection rate (i.e. specified as -p tag) is in flits/router/cycle, I don't have to scale the value of -p in case of multiple injectors, right? So, as -p=0.3, even two injectors present, the actual injection rate is still 0.3, instead of 0.6 right?

Valentin Puente

unread,
Mar 18, 2015, 1:39:05 PM3/18/15
to topaz-...@googlegroups.com
Great! I didn't get the chance to answer your question.

I'm afraid but that it is not taken into account. See TPZSimulation :: setLoadProb(double value) at 266.  Shouldn't be hard to do it (for example in the router builder modify access to that method and change the value), but in the meantime using your approach is much easier :)

If you want to push your changes from your repo clone to the mainline, let me know.

--
You received this message because you are subscribed to the Google Groups "topaz-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to topaz-discus...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
--
vpuente

Pablo Abad

unread,
Mar 18, 2015, 1:49:02 PM3/18/15
to topaz-...@googlegroups.com
For BLESS router (TPZSimpleRouterFlowBless), some changes should be made to code to make it work properly. Current code is only prepared to work with one injector/consumer. Despite you add then to the sgml file, they won’t be used correctly.

Take a look at inputReading function, “PART1”. Code has a for loop from inPort 1 to 4 (transit ports) and then only considers one injection port (if(m_sync[m_ports). If you add more injectors, the second if should be turned into a for loop (for inPort 5 to N). Notice that in sgml file injection ports have the higher numbers.

If I am not wrong that is the only change needed, but not sure, try and let us know.

Concerning your second question, yes, the injection rate is per router. You are not able to generate more than 1flit per router at each cycle. The selection policy when multiple injectors are present is configurable, take a look at chooseInjector function in TPZRouter file.

Regards, Pablo

Xiyue Xiang

unread,
Mar 18, 2015, 2:38:07 PM3/18/15
to topaz-...@googlegroups.com
Hey, Pablo and Valentin,

Thanks for your timely replies.

Pablo, I actually did exactly the same as you suggested. Apart from that, I made the my_AssemblyQueue in TPZConsumerFlowBless.cpp global to all the consumers.

Valentin, I would certainly love to contribute. Just FYI, my current implementation only tests for BLESS router. I am not sure if multiple consumers also work for the other routers.

Regards,

Xiyue Xiang
Reply all
Reply to author
Forward
0 new messages