{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":479748430,"defaultBranch":"main","name":"SANA-FE","ownerLogin":"SLAM-Lab","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2022-04-09T14:21:24.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/27866746?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1726543412.0","currentOid":""},"activityList":{"items":[{"before":"a0d0f21919265b32562777e8801b1ad6aac4ed4f","after":"2051ead5113b1aa39809a4dd2247ed5de51353b6","ref":"refs/heads/cpp","pushedAt":"2024-09-24T04:16:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"[wip] Support convolutional hyperedges\n\nSupport convolutional and connectivity. This will massively\nreduce the space overhead of some types of these layers.\n\nLess importantly, implement dense and sparse layers. These\nwill save some space too, but not on the same scale. Next -\nsupport the Python interface again.","shortMessageHtmlLink":"[wip] Support convolutional hyperedges"}},{"before":"22c63de341bc2c9da1d8b0e06e8b716fe2607f44","after":"a0d0f21919265b32562777e8801b1ad6aac4ed4f","ref":"refs/heads/cpp","pushedAt":"2024-09-17T17:57:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"Silence prints, fix bug with neuron address\n\nThe neuron address has to be per core, not per soma unit. This is\nbecause we use the same address for the dendrite h/w.\n\nIf we do want to go back to tracking mapped soma / dendrite / synapse\nid's, we will need to have separate variables for each. For now, just\ntrack which order each neuron was mapped to the core.","shortMessageHtmlLink":"Silence prints, fix bug with neuron address"}},{"before":"ba77cb9a9da2566e6420c37105085162f4305961","after":"22c63de341bc2c9da1d8b0e06e8b716fe2607f44","ref":"refs/heads/cpp","pushedAt":"2024-09-17T16:48:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"Fix bug where neuron params weren't set\n\nNeuron parameters e.g., log_spikes were not being set correctly\nfor each neuron, only at the group level.\n\nAlso, after revisiting this - it will probably make more sense to\nmake mulitple passes over the description files. Rather than storing\nbig maps of all parameters, duplicated for different h/w units,\nit would be simpler and more efficient to make two passes.","shortMessageHtmlLink":"Fix bug where neuron params weren't set"}},{"before":"870065265720f291ae2d92bc552d4b21d8b63e00","after":"ba77cb9a9da2566e6420c37105085162f4305961","ref":"refs/heads/cpp","pushedAt":"2024-09-17T16:32:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"Map to h/w units in mappings section\n\nAdd support to specify h/w units in the mapping section of the\nnet description file. Users can specify the synapse, dendrite\nand soma h/w that a neuron should map to here. This duplicates\nfunctionality in the network section i.e., synapse_hw_name,\nsoma_hw_name.\n\nSupport mapping attributes as both sequences and mappings i.e.\n0.0: [core: 1.1]","shortMessageHtmlLink":"Map to h/w units in mappings section"}},{"before":"7562ed20ff0d2f6be94d1ec4112c1bbdb0976fa3","after":"870065265720f291ae2d92bc552d4b21d8b63e00","ref":"refs/heads/cpp","pushedAt":"2024-09-17T15:30:39.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"Minor fixes","shortMessageHtmlLink":"Minor fixes"}},{"before":"3f01599415a0c05da69ed8643eafd834a50b0482","after":"870065265720f291ae2d92bc552d4b21d8b63e00","ref":"refs/heads/cpp-new-plugin","pushedAt":"2024-09-17T15:30:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"Minor fixes","shortMessageHtmlLink":"Minor fixes"}},{"before":"4f50eec1cd5daebb531ef913f2dd5a417e91a54a","after":"3f01599415a0c05da69ed8643eafd834a50b0482","ref":"refs/heads/cpp-new-plugin","pushedAt":"2024-09-17T03:56:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"Support multiple dendrites and soma units in cores\n\nAdd initial support for multiple soma and dendrite units.\nIn some architectures, the dendrite and soma processing H/W\nhandles all neurons. However, in other architectures, there\nare multiple circuits in a single core. In the extreme case,\nthere may be unique H/W for each neuron, i.e., exactly one\nneuron is mapped to each soma circuit.\n\nNow SANA-FE supports both modes of operation. The pipeline\ntiming model hasn't been adjusted to support parallel\nunits, so this is a TODO. Right now we still iterate over\nall neurons mapped to the core sequentially.\n\nTODO: support multiple synapse units.","shortMessageHtmlLink":"Support multiple dendrites and soma units in cores"}},{"before":"4d7f85acc2c5daec2f59ef31288a5c39335c44c3","after":"7562ed20ff0d2f6be94d1ec4112c1bbdb0976fa3","ref":"refs/heads/cpp","pushedAt":"2024-09-17T03:24:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"Revert heartbeat to every 100 steps","shortMessageHtmlLink":"Revert heartbeat to every 100 steps"}},{"before":"2f927d33d6cd0898ddc7ec439d2b4ac90b7149ce","after":"4f50eec1cd5daebb531ef913f2dd5a417e91a54a","ref":"refs/heads/cpp-new-plugin","pushedAt":"2024-09-17T03:24:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"models.hpp: Default vector init","shortMessageHtmlLink":"models.hpp: Default vector init"}},{"before":null,"after":"2f927d33d6cd0898ddc7ec439d2b4ac90b7149ce","ref":"refs/heads/cpp-new-plugin","pushedAt":"2024-09-17T03:23:32.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"Explore simplifying h/w unit models\n\n[WIP] Remove one level of indirection and remove the idea of models.\nInstead the user will now implement classes for the hardware\nunits. We still need to move the Loihi model over, so that a single\nunit supports multiple neurons. Then, we also need to support\ninstantiation of multiple units (e.g., for the multi-compartment\ndendrite that supports a single neuron per dendrite).","shortMessageHtmlLink":"Explore simplifying h/w unit models"}},{"before":"dae1b892c4c53a4646bb782e6b3a31232b9a4831","after":"4d7f85acc2c5daec2f59ef31288a5c39335c44c3","ref":"refs/heads/cpp","pushedAt":"2024-09-16T20:47:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"Add Poisson based firing model for inputs","shortMessageHtmlLink":"Add Poisson based firing model for inputs"}},{"before":"01a50c5577872b1e765b22e9a04ab8e09a12c8a7","after":"dae1b892c4c53a4646bb782e6b3a31232b9a4831","ref":"refs/heads/cpp","pushedAt":"2024-08-30T22:00:27.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"configure()->set_attributes()\n\nRevert naming, set_attributes makes more sense because we may call\nthis multiple times during execution. Configure implies it's done\nonce.","shortMessageHtmlLink":"configure()->set_attributes()"}},{"before":"7f6080b164116577ee2f123c074fa82f2ce3962d","after":"01a50c5577872b1e765b22e9a04ab8e09a12c8a7","ref":"refs/heads/cpp","pushedAt":"2024-08-28T17:55:17.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"Support mapping range of neurons\n\nStart adding more support for group mappings. Start by supporting\nrange of neurons to a single core. Next up, support mapping entire\ngroups to one core. Then, support mapping to a range of cores, and\nchoosing either greedy (map until full) or round-robin approaches.","shortMessageHtmlLink":"Support mapping range of neurons"}},{"before":"a5cd3cfe523a4a930662f0270b0d71b97159507d","after":"7f6080b164116577ee2f123c074fa82f2ce3962d","ref":"refs/heads/cpp","pushedAt":"2024-08-28T17:07:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"README.md: Update README, plugin and SNN formats","shortMessageHtmlLink":"README.md: Update README, plugin and SNN formats"}},{"before":"5e593af6cd113072d816fdc1d334d2bc8ae0019f","after":"a5cd3cfe523a4a930662f0270b0d71b97159507d","ref":"refs/heads/cpp","pushedAt":"2024-08-28T16:49:27.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"plugins/hodgkin_huxley.cpp: Reformat and update\n\nUpdate to work with latest SANA-FE v2, reformat to be consistent\nwith project.","shortMessageHtmlLink":"plugins/hodgkin_huxley.cpp: Reformat and update"}},{"before":"66f8e606b3f586877c36b806ce05936777bf8486","after":"5e593af6cd113072d816fdc1d334d2bc8ae0019f","ref":"refs/heads/cpp","pushedAt":"2024-08-22T21:52:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"Default power metrics override power simulations\n\nA bit of going in circles but develop the features for energy and\nlatency modelling further. Now the metrics provided in the arch\ndescription can both act as a default option and also override\nany custom user simulation. If neither model or metrics are\nprovided, throw an exception. The user can model energy, latency\nboth or neither in their implementations.\n\nSimplify the abstract base class - now the user has just one\npure abstract update() they must implement. This seemed simpler.\nGo back to a previous design where the user must return a special\nResults object from update(), containing the simulated value\ne.g., current, spike/no spike plus an additional, optional energy\nand latency value. If the user wishes to model either of these\nproperties they must set the optional value and return it.\n\nPass the metrics as ModelParams to the H/W unit constructors\n(inside the map). This was done because the\nenergy and latency metrics are now optional (and we'll only catch\na missed metric once we get to simulating the energy and latency\nand notice there's no metric set).\n\nDepending on how the Python interface will do things, maybe revert\nthis back (and make energy & latency a std::optional argument\nto the constructor). On reflection, it might be clearer and more\nexplicit if these parameters are required by the constructor, rather\nthan hidden inside the model parameters again. Also, it allows for\nthe YAML parser to point to the location where things go wrong\ne.g., if the user gives the wrong type or gives an incomplete set\nof metrics.\n\nTODO: cleanup and might be nice to have manual override for\nturning on and off custom power simulation (for example, as a\nfail-safe).","shortMessageHtmlLink":"Default power metrics override power simulations"}},{"before":"6f331dbc4b814beb38320ddfb7ac84589c80a8d7","after":"66f8e606b3f586877c36b806ce05936777bf8486","ref":"refs/heads/cpp","pushedAt":"2024-08-20T23:14:15.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"[wip] Change mechanism for simulating power\n\nRather than returning energy and latency from the update() routines,\ninstead offer two possible functions we can overload. The pipeline\nsim manages which update() we call - whether we call with energy\nand latency references or just the simple routine. The user must\nalways define the simple update() routine, but they can additionally\noverload another routine that supports energy and latency models.\n\nTODO: in the description format, we can optionally specify we want\nto model power performance inside the model. In this case, we don't\nhave to specify power metrics.","shortMessageHtmlLink":"[wip] Change mechanism for simulating power"}},{"before":"16e346f524a447a177a779ab63ac22e1ddca5bd9","after":"6f331dbc4b814beb38320ddfb7ac84589c80a8d7","ref":"refs/heads/cpp","pushedAt":"2024-08-18T16:22:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"Remove redundant 'size' field in SNNs\n\nIn the new YAML format, the size field was added but is not really\nneeded, because we now have a compact way of specifying many neurons.\nThe group size can be figured out by the parser, so remove this\nfrom the required fields, and add a function to calculate the total\nneurons in the group.\n\nTODO: add the old description format back for back-compability. This\nwill be slightly extended to allow for YAML-style attributes lists.","shortMessageHtmlLink":"Remove redundant 'size' field in SNNs"}},{"before":"11fb4eb65fbbb88fe23733c8a6a358ae25fd996d","after":"16e346f524a447a177a779ab63ac22e1ddca5bd9","ref":"refs/heads/cpp","pushedAt":"2024-08-18T15:53:37.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"Simplify plugin API and track sim time in models\n\nFigured a way to simplify the plugin API further, removing the\nneed for an optional 'step' argument for update routines. This\nmakes the interface cleaner - for example, for the soma we just\nneed a single parameter for the current in. The model can assume\nwe only call update() once per timestep.\n\nTo fix the problem when a model may be called multiple times per\ntime-step but also has some state that must be updated once\nper time-step, rather than passing in an optional flag, simply\ntrack the current simulation time(step) in each model base class.\nThe kernel calls set_time() to track the timestep in each unit.\nThe user can then support different modes of operation by checking\nsim_time e.g., against a locally tracked 'last updated' variable.\nIt's then up to the plugin writer whether they support multiple\nupdates per time-step or whether they require an update every\ntime-step in a given model.\n\nSimplify the cuba synapse model - for Loihi there is no state in the\nsynapse unit - this is simply reading weights from memory. The\ncurrent (u[t]) is actually modelled in the soma for Loihi (it's\nbasically just another filtered sum variable). In future, we can\nsupport more complicated synapse models with filtering per variable.","shortMessageHtmlLink":"Simplify plugin API and track sim time in models"}},{"before":"b1b8f59078a97a9268cae52e6c795a2d4239493f","after":"11fb4eb65fbbb88fe23733c8a6a358ae25fd996d","ref":"refs/heads/cpp","pushedAt":"2024-08-16T21:28:29.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"Support models returning energy and latency\n\nFor dendrites and Jason's surrogate modelling, we need a way\nfor h/w models to return power metrics. Support using either\ndefault metrics in the architecture description, or returning\nmetrics from the models.","shortMessageHtmlLink":"Support models returning energy and latency"}},{"before":"17b0599c217715dadc869dc76170e367ee4e706b","after":"b1b8f59078a97a9268cae52e6c795a2d4239493f","ref":"refs/heads/cpp","pushedAt":"2024-08-15T20:39:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"Support selecting dendrite by name","shortMessageHtmlLink":"Support selecting dendrite by name"}},{"before":"32586873190d36a7869f2f03eb41ac82a9987506","after":"17b0599c217715dadc869dc76170e367ee4e706b","ref":"refs/heads/cpp","pushedAt":"2024-08-15T20:25:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"Fix broken force_update from last commit\n\nWasn't being read and set from description correctly","shortMessageHtmlLink":"Fix broken force_update from last commit"}},{"before":"86516af248d84c336e7553a2fbe871614518a6ae","after":"32586873190d36a7869f2f03eb41ac82a9987506","ref":"refs/heads/cpp","pushedAt":"2024-08-15T20:09:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"Allow h/w units to be 'forced' to update\n\nSolves the problem where certain h/w (before the time-step buffer)\nmust be updated every time-step. For example, the time-step buffer\nmight be before the soma, but the synapses and dendrites may have\nsome non-zero decay. In some implementations, these must be updated\nevery time-step and currents sent to the soma, even when there hasn't\nbeen a spike into that synapse / dendrite.\n\nWhile it complicates design a bit, I think this weakness of my simple\npipeline model needs to be addressed. Different h/w may buffer state\nacross time-steps, and updates can be both spike-driven and\ntimestep-driven. Use a new flag 'force_update' to enable this for now.","shortMessageHtmlLink":"Allow h/w units to be 'forced' to update"}},{"before":"95373ad1f315cf1a628223dc0f0976e8b77e8ce1","after":"86516af248d84c336e7553a2fbe871614518a6ae","ref":"refs/heads/cpp","pushedAt":"2024-08-15T17:14:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"Support input nodes\n\nUsing the concept of models & plugins, it's easy to now define a\nnew input node class. For now, the input node can have a spike\ntrain set, which allows the user to configure any sequence of\nspikes. We could define more complex input generation in future,\nfor now this is sufficient.\n\nIn doing this, make some fixes to the vector / map casting of\nmodel parameters. In doing this, I have some doubts in using\na variant. Either way, we may need to support more casting for\nthis model parameter class to be useful.","shortMessageHtmlLink":"Support input nodes"}},{"before":"d859c7e2a102ee897b0100ebe9a764b2d00a7e3e","after":"95373ad1f315cf1a628223dc0f0976e8b77e8ce1","ref":"refs/heads/cpp","pushedAt":"2024-08-13T00:11:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"More parsing error handling and fix dendrite demo\n\nStill adjusting to rapidyaml, make sure to properly check for\nkeys before accessing them (to avoid very cryptic crashes).\nAfter testing on more YAML examples, the error diagnosis seems\nbetter. Could still benefit from a cleaner refactor once I know\nall the requirements.\n\nFix the dendrite arch and SNN example using the new format.","shortMessageHtmlLink":"More parsing error handling and fix dendrite demo"}},{"before":"dc9fa38f0a903d4438ac76c271cb95ec5fb720e4","after":"d859c7e2a102ee897b0100ebe9a764b2d00a7e3e","ref":"refs/heads/cpp","pushedAt":"2024-08-12T17:20:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"Fix edge attribute parsing\n\nFix when the edge attributes are given as a sequence e.g.,\n0.0 -> 1.0 [weight=1]\n\nThis had temporarily been disabled. Temporarily fix this by\nconnecting neurons and then setting the edge attribute using\na reference to the edge. This will need to be modified as the\nvector of connections can grow, invalidating any references.\nTherefore, giving out a reference to this object is dangerous.\n\nAlternatives are introducing an ConnectionTemplate containing all\nthe default attributes needed (this might be useful for a couple\nof reasons). The function could also return an edge ID i.e., an\nindex into the vector, which will be safer if the list grows.\n\nImprovements can be added later..","shortMessageHtmlLink":"Fix edge attribute parsing"}},{"before":"fcca96b3e7554d622f3b5f3fe6597fd30e865397","after":"dc9fa38f0a903d4438ac76c271cb95ec5fb720e4","ref":"refs/heads/cpp","pushedAt":"2024-08-11T23:45:00.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"Fix YAML bug when using map keys.\n\nI was using RapidYAML wrong - I need to check that a key exists\nbefore indexing into it. Probably will be good to clean this up\neventually but for now, roll with the quick fix.","shortMessageHtmlLink":"Fix YAML bug when using map keys."}},{"before":"5ba239e9280416733cd77f3f2ea74bd529e9c3cb","after":"fcca96b3e7554d622f3b5f3fe6597fd30e865397","ref":"refs/heads/cpp","pushedAt":"2024-08-11T02:10:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"Revert neurons to being stored in a vector\n\nInstead of using a map container to store neurons, go back to using a vector.\nWhen we create a neuron group, it must be a fixed size again. This solves\nall the complication about the order of neurons being mapped etc. Each group\njust has a fixed array of neurons. Most of the time, we'll probably just\nallocate all neurons with the same parameters. Under the neuron section, it\nis still possible to set the attributes of individual / ranges of neurons as\nbefore.\n\nNext improvement is to change how we store attributes. We can enable or\ndisable this feature and avoid duplication of attributes for soma/dendrite\netc. If we disable this, the user must map neurons before it sets their\nattributes.","shortMessageHtmlLink":"Revert neurons to being stored in a vector"}},{"before":"0e7085c9d2acd9caeb3c7744606bcc5fd4787c4b","after":"5ba239e9280416733cd77f3f2ea74bd529e9c3cb","ref":"refs/heads/cpp","pushedAt":"2024-08-10T22:41:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"Merge mapping back into net description.\n\nAlthough network and mappings are under separate top-level\nsections, they should be in the same file. Make this assumption\nto speed up YAML parsing for large files.","shortMessageHtmlLink":"Merge mapping back into net description."}},{"before":"827fc9d82c8e3469d76f4a9293a99bb3c7be3cae","after":"0e7085c9d2acd9caeb3c7744606bcc5fd4787c4b","ref":"refs/heads/cpp","pushedAt":"2024-08-07T23:16:49.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"jamesaboyle","name":"James","path":"/jamesaboyle","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/89541688?s=80&v=4"},"commit":{"message":"[wip] Move arch and network to RapidYAML\n\nHave settled on RapidYAML (ryml) for our YAML library implementation.\nThis is performant for very large YAML files (> 100MB) both in speed\nand memory usage.\n\nRapidYAML still requires multiple passes and uses a document\nbased approach (as opposed to SAX-style, event by event) therefore\ncan still be memory hungry. The arguments for sticking with this\napproach are:\n- A SAX style parser like libyaml (C) will require a complex design and\n a lot of work. The file might be defined out of order, complicating\n parsing (and require multiple passes / lots of buffering)\n- Likely, users will not be able to generate YAML files larger than\n what RapidYAML can process anyway\n- We will focus on constructs that reduce the file to a sensible size,\n e.g., the definition of different layer types and convolutional kernels.\n SNNs are usually connected using simple structures e.g., convolutional\n For arbitrarily connected SNNs, these are generally limited to tiny\n sizes (e.g., in the order of 10s of neurons). Anything larger is\n difficult to train.\n\nAdditionally, a next step will be to resurrect my old network description\nformat. It would be good to keep v2 back-compatible with v1. This old format\ncan be viewed as the lower-level syntax, with more direct control of the\norder of parsing. I will extend this v1 syntax to support YAML attributes\nwithin brackets e.g.,\ne 0.0->1.0 [weight: 1.0]\nBy supporting this, if a user needs to load an extremely large SNN from file,\ntoo large for YAML, they can use this low-level format.","shortMessageHtmlLink":"[wip] Move arch and network to RapidYAML"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0yNFQwNDoxNjo1OS4wMDAwMDBazwAAAAS-rT-6","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0yNFQwNDoxNjo1OS4wMDAwMDBazwAAAAS-rT-6","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0wN1QyMzoxNjo0OS4wMDAwMDBazwAAAASUrzBS"}},"title":"Activity ยท SLAM-Lab/SANA-FE"}