lekernel changed the topic of #milkymist to: Milkymist One, Migen, Milkymist SoC & Flickernoise :: Logs: http://en.qi-hardware.com/mmlogs
jimmythehorn has quit [Quit: jimmythehorn]
xiangfu has joined #milkymist
gbraad has joined #milkymist
gbraad has quit [Changing host]
gbraad has joined #milkymist
antgreen has joined #milkymist
xiangfu has quit [Ping timeout: 264 seconds]
xiangfu has joined #milkymist
qwebirc45275 has joined #milkymist
qwebirc45275 has quit [Client Quit]
xiangfu has quit [Ping timeout: 255 seconds]
xiangfu has joined #milkymist
xiangfu has quit [Ping timeout: 264 seconds]
jaeckel_ is now known as jaeckel
Martoni has joined #milkymist
lekernel has joined #milkymist
xiangfu has joined #milkymist
xiangfu has quit [Ping timeout: 256 seconds]
<larsc>
lekernel: that the remaining non-deterministines is small enough, so I could verfiy that things still work
<larsc>
at least the generated code is the same
xiangfu has joined #milkymist
xiangfu has quit [Ping timeout: 256 seconds]
elldekaa_ has joined #milkymist
xiangfu has joined #milkymist
<lekernel>
all non-determinism is bugs and should go...
<lekernel>
I think I just found another one... let me check
* lekernel
is just back from TU
xiangfu has quit [Ping timeout: 264 seconds]
xiangfu has joined #milkymist
xiangfu has quit [Ping timeout: 260 seconds]
<lekernel>
larsc, better now? send me a diff of the changed lines if you still get problems
xiangfu has joined #milkymist
<GitHub44>
[migen] sbourdeauducq pushed 1 new commit to master: http://git.io/Zqjb1Q
<GitHub44>
migen/master 5adab17 Sebastien Bourdeauducq: flow/actor/filter_endpoints: deterministic order
<lekernel>
there's still an issue in asmicon but I'm not sure you're using it now
<lekernel>
grmbl I wish there were an option in python to make ids and iteration orders on sets/dictionaries deterministic
<lekernel>
this thing is just super-annoying with migen
<lekernel>
I wonder how much performance they get by dropping deterministic iteration orders... and it's not like python is optimized for performance to begin with
<wpwrak>
does iteration over the same set/dict yield different orders ? or do you mean iteration over equivalent but not identical ones ?
<lekernel>
the iteration order will be different between runs of the same program
<lekernel>
if you don't modify the set/dict, and don't re-run the program, the order is the same
<wpwrak>
hmm, you could sort by content if you really really need this sort of determinism ...
<wpwrak>
it's interesting that order would change per invocation if everything else is identical
<larsc>
I think there is a OrderedDict
<lekernel>
sorting by content is basically what I'm doing right now, but I have to do it manually and spot problematic code
<wpwrak>
may it's caused by some address space layout randomization. you could try to turn that off. ... or of course use lars' suggestion :)
<lekernel>
also, sometimes you have dict/sets of other objects, then python uses the id() by default, which is whatever address it got from malloc() - another source of non determinism
<lekernel>
migen has a HUID class that makes the id() an object creation counter instead, but again you have to use that manually
<lekernel>
OrderedDict isn't the default, if you use the syntactic sugar you get a normal non-deterministic dict
<lekernel>
and there's no ordered set
<lekernel>
and object.__dict__ is not an OrderedDict but the crappy one
<lekernel>
lots of time wasted to that little detail
<larsc>
well, a set is a dict where all the values are None
<lekernel>
yes, but again - if you build a set with {item1, item2, ...} that's not what you get
<larsc>
yes
<larsc>
because normally you don't need this
<lekernel>
can't they just make all sets and dicts OrderedSet/OrderedDict and be done with that?
xiangfu has quit [Ping timeout: 264 seconds]
<larsc>
send a patch ;)
<lekernel>
yeh, a "PEP" with all the bureaucracy...
<lekernel>
pick your evil
<lekernel>
(and then, assuming it gets through, people like debian users will still have problems for years)
_whitelogger has joined #milkymist
<lekernel>
larsc, do you still have non-determinism problems after my last commit?