brian2genn icon indicating copy to clipboard operation
brian2genn copied to clipboard

RNG & seeding

Open kernfel opened this issue 3 years ago • 4 comments

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:

  1. Are there reasons other than the obvious (brian2genn's implementation predates GeNN's) for the choice of RNG here?
  2. Would it be generally desirable to migrate uses of rand(), randn() in brian2 code to GeNN's builtins?
  3. 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.

kernfel avatar Jan 18 '22 08:01 kernfel

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.

tnowotny avatar Jan 18 '22 09:01 tnowotny

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

neworderofjamie avatar Jan 18 '22 13:01 neworderofjamie

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.

kernfel avatar Jan 18 '22 17:01 kernfel

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.

tnowotny avatar Jan 18 '22 18:01 tnowotny