brian2genn
brian2genn copied to clipboard
RNG & seeding
I notice that GeNN has RNG capabilities ($(gennrand_uniform)
etc.) that are not being used; random number generation is instead done by a support code function (defined in genn_generator.py
lines 350~390). I also notice that using seed(...)
raises a NotImplementedError when used in conjunction with brian2genn. Three questions:
- Are there reasons other than the obvious (brian2genn's implementation predates GeNN's) for the choice of RNG here?
- Would it be generally desirable to migrate uses of
rand()
,randn()
in brian2 code to GeNN's builtins? - Is it possible to control seeding in GeNN? GeNN's documentation is a little sparse on details there.
Happy to work on this if it's considered a valuable feature.
I think regarding the RNGs it is indeed a case of historic sequence. I see no reason not to use GeNN built-in RNGs. It would likely be more efficient. As for seeding, it's probably better @neworderofjamie comments.
So, Brian2GeNN's RNG functionality predates $(gennrand_XXX)
which is why it doesn't use it - fixing this is one of the things we're really hoping to get done in a GSoC project. In GeNN you control seeding via model.setSeed(X)
where X=0 indicated that you should randomize the seed every run
I see. In that case, I'll probably hack something in just to cover my particular case in a draft, and if there's a lot more to do, I'll let the GSoC cavalry clean it up properly.
Though we do not know yet whether we will be getting a student for it I am afraid. But we can always clean up ourselves if needed.