Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

XML output might have errors #3

Open
davidmetz opened this issue Mar 5, 2018 · 2 comments
Open

XML output might have errors #3

davidmetz opened this issue Mar 5, 2018 · 2 comments

Comments

@davidmetz
Copy link

Hello,
I am currently evaluating your project as part of my Bachelors thesis. I think I might have found an error in the XML output of poseidon.
My parameters:
poseidon -m GRASP -p bitorus5x5.xml -t 60 -d -b 0 -s ./out.xml -a

I am using the provided bitorus architecture.
The output caused my parsing program to crash repeatedly so I decided to inspect the output manually.
The bug seems to be caused by unfinished overlap optimization.
In the shortened output below there should be a connection between (0,0) and (0,4).
It begins in timeslot 28 but it isn't continued.
There is no (0,4) timeslot 29 (due to overlap optimisation) but the incoming connection is not included in (0,4) timeslot 0.
Is:
<schedule length="29" width="5" height="5">
...
<tile id="(0,0)">
...
<timeslot value="28">
<na rx="(0,0)" tx="(0,4)" route="NL" chan-id="26" config-ch="false" pkt-id="0"/>
<router>
<output id="N" input="L"/>
<output id="S" input="D"/>
<output id="E" input="D"/>
<output id="W" input="D"/>
<output id="L" input="N"/>
</router>
</timeslot>
<latency>
...
<destination id="(0,4)" slotwaittime="29" channellatency="2" chan-id="26" chan-bw="1" config-ch="false" pkt-len="1" rate="0.034482758620689655"/>
...
</latency>
</tile>
...
<tile id="(0,4)">
<timeslot value="0">
<na rx="(0,4)" tx="(3,3)" route="WWNL" chan-id="94" config-ch="false" pkt-id="0"/>
<router>
<output id="N" input="D"/>
<output id="S" input="D"/>
<output id="E" input="D"/>
<output id="W" input="L"/>
<output id="L" input="D"/>
</router>
</timeslot>
...
<timeslot value="28">
<na rx="(0,3)" tx="(0,4)"/>
<router>
<output id="N" input="D"/>
<output id="S" input="D"/>
<output id="E" input="D"/>
<output id="W" input="D"/>
<output id="L" input="E"/>
</router>
</timeslot>
<latency>
...
</latency>
< / tile >
...
</schedule>
Should probably be:
<schedule length="29" width="5" height="5">
...
<tile id="(0,0)">
...
<timeslot value="28">
<na rx="(0,0)" tx="(0,4)" route="NL" chan-id="26" config-ch="false" pkt-id="0"/>
<router>
<output id="N" input="L"/>
<output id="S" input="D"/>
<output id="E" input="D"/>
<output id="W" input="D"/>
<output id="L" input="N"/>
</router>
</timeslot>
<latency>
...
<destination id="(0,4)" slotwaittime="29" channellatency="2" chan-id="26" chan-bw="1" config-ch="false" pkt-len="1" rate="0.034482758620689655"/>
...
</latency>
</tile>
...
<tile id="(0,4)">
<timeslot value="0">
<na rx="(0,4)" tx="(3,3)" route="WWNL" chan-id="94" config-ch="false" pkt-id="0"/>
<router>
<output id="N" input="D"/>
<output id="S" input="D"/>
<output id="E" input="D"/>
<output id="W" input="L"/>
<output id="L" input="S"/><- changed here
</router>
</timeslot>
...
<timeslot value="28">
<na rx="(0,3)" tx="(0,4)"/>
<router>
<output id="N" input="D"/>
<output id="S" input="D"/>
<output id="E" input="D"/>
<output id="W" input="D"/>
<output id="L" input="E"/>
</router>
</timeslot>
<latency>
...
</latency>
< / tile >
...
</schedule>
I had a quick look into the output code and there seems to be no adjustment of the schedule, so I assume that this is caused by a unfinished optimization.
out_broken.xml.zip

Greetings,
David

@schoeberl
Copy link
Member

Hi David,

is this happening only in the 5x5 configuration? I know for sure that the 2x2 and 3x3 configuration works, as we are using it in the FPGA.

However, I have a hard time to investigate the issue, as Rasmus, who wrote the scheduler, is not available any more.

Cheers,
Martin

@davidmetz
Copy link
Author

Hi Martin,

i just checked the 2x2 configuration and get the same problem.
out2x2.xml.zip
I wrote a script that checks weather all paths come to an ende.
poseidon_checker.py.zip
It first checks whether the amount of incoming connections matches the number of outgoing connections.
Then it tries to trace each link start (input=L) to it's end (output=L) and outputs the paths for wich this fails.
Could you try to run the script on an existing schedule to check if just my locally generated schedules or all schedules contain errors?
sample output for out2x2.xml:
python3 poseidon_checker.py out2x2.xml
nr of inputs (to L): 8 doesn't match nr of outputs (from L): 12
path not continued: [(Node(x=1, y=0, type='L'), 3), (Node(x=1, y=0, type='S'), 3)] missing: (Node(x=1, y=1, type='N'), 0)
path not continued: [(Node(x=0, y=0, type='L'), 3), (Node(x=0, y=0, type='N'), 3)] missing: (Node(x=0, y=1, type='S'), 0)
path not continued: [(Node(x=0, y=1, type='L'), 3), (Node(x=0, y=1, type='S'), 3)] missing: (Node(x=0, y=0, type='N'), 0)
path not continued: [(Node(x=1, y=1, type='L'), 3), (Node(x=1, y=1, type='S'), 3)] missing: (Node(x=1, y=0, type='N'), 0)

Greetings,
David

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants