-
Notifications
You must be signed in to change notification settings - Fork 11
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
Single dict file for all c files #414
Comments
I wasn't keen because of the disadvantage. There is also the issue of user builds and/or multiple repositories; imagine a situation where you have released library A with binaries and library B with binaries and now want to use binaries from both. |
If you release different librays at different times you are playing with fire! |
A few other ideas include:
|
Note, each of the sPyNNaker dict files is about 44K and you only need one copy per binary which is unlikely to be one per core. |
as christian pointed this to me (given my mass of notifications that I've not dealt with during my deep dive).
least having one location which ybug knows of (aka its own repo, aka spinnaker tools, aka where we dump all our libraries already......) would mean you dont need to hand it a set of dict paths, as they are spread over at least 4 repos currently (spynnaker, Fec, nengo, gfe) and as we add more front ends, this is going to expand. yuck. the issue of binary name to dict is a nasty one, which is why i thought we could just avoid the issue with 1 monster dict. esp as it only needs a unique identifer, which can be whatever size we want/need. The issue of outdated logs etc when local compiling is a wee issue, but given a clean up ability with full recompile, which lets be honest happens a lot and is a good idea everytime you pull.... id call it not that bad a issue. have we ever really released 1 module on its own and not had it back fire when peeps get mixed up? all our releases are often brand new sets which are not backwards compatible..... and when it does happen. just tell them to do a automatic_make.sh and all is good..... and if its pip based...... well then those peeps are highly unlikely to be grumbling over iobuf. they dont get to recompile binaries at all anyhow. Heck if you want to do that, why dont we have the repo seperate ones, and during setup it merges them into spinnaker tools. so that means ya never got this issue??? |
Loading the dict into sdram is bad as it slows down both DSE and Extract iobuffers |
As an example, say sPyNNaker plus GFE plus user code that uses GFE... The dict is always next to the binary, so if you build a map as you find the binary to load, you can keep this somewhere on the host e.g. a database. Note though that we encountered an issue recently where the dict files are a pain; if a user runs something then they want us to help debug it but on our own machine, you probably won't have the right dict files. Christian and I had this exact issue just the other day. At that point SDRAM is a useful option (and it is rare that it will be 16 x 44K). |
so that kinda makes my argument for me @rowleya. If you had one centeral place to get these from. it would be moving one file over if you wanted to debug someones elses stuff. instead of a ton of them. I agree sdram is the cleanest in this point. But its just wasting sdram for support which is rarely used, and only used with inside the lab to be honest and so im really not hot for that. esp as that would mean putting debug statements in your code can affect the mapping of your network. that sounds really bad. |
Have we reached any consensus on this issue? |
If a user wants us to help debug their running binary that they built themselves, they probably have to send us the The one real problem is we don't get ybug to apply the dict for us. Fixing that would require writing Perl... |
I have decided to reactivate this with #567 This will allow for a python based ybug with conversion built in which I feel is a bigger advantage than that lost because of mixing two builds. Note partial rebuilds are possible as long as you do not rebuild FrondEndCommon and even that if there is a need we can work around. |
fixed with SpiNNakerManchester/SpiNNUtils#114 |
done |
Instead of having lots of separate dict file to hold log messages have a single one.
As suggested by @rowleya and @alan-stokes
On a full make the file should be restarted.
Advantage:
Easier to use.
Disadvantage on partial rebuilds you would have to only add new values even if all that changed is the line number. This will cause the file and index numbers will grow over time.
(But on the first full make this is removed)
The text was updated successfully, but these errors were encountered: