{"title":"INCF\/OCNS Software WG - Code generation","link":[{"@attributes":{"href":"https:\/\/ocns.github.io\/SoftwareWG\/","rel":"alternate"}},{"@attributes":{"href":"https:\/\/ocns.github.io\/SoftwareWG\/feeds\/tags\/code-generation.atom.xml","rel":"self"}}],"id":"https:\/\/ocns.github.io\/SoftwareWG\/","updated":"2022-10-18T10:38:20+01:00","subtitle":"The INCF\/OCNS Software Working Group","entry":[{"title":"Dev session: Denis Alevi:\u00a0Brian2CUDA","link":{"@attributes":{"href":"https:\/\/ocns.github.io\/SoftwareWG\/2022\/10\/18\/dev-session-denis-alevi-brian2cuda.html","rel":"alternate"}},"published":"2022-10-18T10:38:20+01:00","updated":"2022-10-18T10:38:20+01:00","author":{"name":"Ankur Sinha"},"id":"tag:ocns.github.io,2022-10-18:\/SoftwareWG\/2022\/10\/18\/dev-session-denis-alevi-brian2cuda.html","summary":"<p class=\"first last\"><a class=\"reference external\" href=\"https:\/\/www.sprekelerlab.org\/denis\/\">Denis Alevi<\/a> will introduce the <a class=\"reference external\" href=\"https:\/\/brian2cuda.readthedocs.io\/en\/latest\/\">Brian2CUDA<\/a> tool in this session, and discuss its development. We will also have a discussion on <span class=\"caps\">GPU<\/span> based simulation in neuroscience after the&nbsp;presentation.<\/p>\n","content":"<p><a class=\"reference external\" href=\"https:\/\/www.sprekelerlab.org\/denis\/\">Denis Alevi<\/a> will introduce the <a class=\"reference external\" href=\"https:\/\/brian2cuda.readthedocs.io\/en\/latest\/\">Brian2CUDA<\/a> tool in this session, and discuss its development. We will also have a discussion on <span class=\"caps\">GPU<\/span> based simulation in neuroscience after the&nbsp;presentation.<\/p>\n<ul class=\"simple\">\n<li>Date: Thursday, November 3, 2022, 1600 <span class=\"caps\">UTC<\/span> (Click <a class=\"reference external\" href=\"https:\/\/www.timeanddate.com\/worldclock\/fixedtime.html?msg=Dev+session%3A+Denis+Alevi+Brian2CUDA&amp;iso=20221103T16&amp;p1=136&amp;ah=1\">here<\/a> to see your local&nbsp;time).<\/li>\n<li>Location (Zoom): <a class=\"reference external\" href=\"https:\/\/ucl.zoom.us\/j\/95692778384?pwd=VldIQ3hPTU1zczNpYjQxSSt4Z25xdz09\">Link<\/a> (Zoom login&nbsp;required)<\/li>\n<li><a class=\"reference external\" href=\"\/extras\/ics\/20221103-dev-session-denis-alevi-brian2cuda.ics\">Click here to download the calendar invite to add this meeting your&nbsp;calendar<\/a><\/li>\n<\/ul>\n<p>The abstract for the talk is&nbsp;below:<\/p>\n<p>Graphics processing units (GPUs) are widely available and have been used with\ngreat success to accelerate scientific computing in the last decade. These\nadvances, however, are often not available to researchers interested in\nsimulating spiking neural networks, but lacking the technical knowledge to\nwrite the necessary low-level code. Writing low-level code is not necessary\nwhen using the popular Brian simulator, which provides a framework to generate\nefficient <span class=\"caps\">CPU<\/span> code from high-level model definitions in Python. Here, we\npresent Brian2CUDA, an open-source software that extends the Brian simulator\nwith a <span class=\"caps\">GPU<\/span> backend. Our implementation generates efficient code for the\nnumerical integration of neuronal states and for the propagation of synaptic\nevents on GPUs, making use of their massively parallel arithmetic capabilities.\nWe benchmark the performance improvements of our software for several model\ntypes and find that it can accelerate simulations by up to three orders of\nmagnitude compared to Brian&#8217;s <span class=\"caps\">CPU<\/span> backend. Currently, Brian2CUDA is the only\npackage that supports Brian&#8217;s full feature set on GPUs, including arbitrary\nneuron and synapse models, plasticity rules, and heterogeneous delays. When\ncomparing its performance with Brian2GeNN, another <span class=\"caps\">GPU<\/span>-based backend for the\nBrian simulator with fewer features, we find that Brian2CUDA gives comparable\nspeedups, while being typically slower for small and faster for large networks.\nBy combining the flexibility of the Brian simulator with the simulation speed\nof GPUs, Brian2CUDA enables researchers to efficiently simulate spiking neural\nnetworks with minimal effort and thereby makes the advancements of <span class=\"caps\">GPU<\/span>\ncomputing available to a larger audience of&nbsp;neuroscientists.<\/p>\n<p>References:<\/p>\n<ul class=\"simple\">\n<li>Publication: <a class=\"reference external\" href=\"https:\/\/www.frontiersin.org\/articles\/10.3389\/fninf.2022.883700\/abstract\">Brian2CUDA: flexible and efficient simulation of spiking neural network models on GPUs (Frontiers in&nbsp;Neuroinformatics)<\/a><\/li>\n<li>Documentation: <a class=\"reference external\" href=\"https:\/\/brian2cuda.readthedocs.io\/en\/latest\/\">https:\/\/brian2cuda.readthedocs.io\/en\/latest\/<\/a><\/li>\n<li>Source code: <a class=\"reference external\" href=\"https:\/\/github.com\/brian-team\/brian2cuda\">https:\/\/github.com\/brian-team\/brian2cuda<\/a><\/li>\n<\/ul>\n","category":[{"@attributes":{"term":"Events"}},{"@attributes":{"term":"Brian2CUDA"}},{"@attributes":{"term":"Dev session"}},{"@attributes":{"term":"GPU"}},{"@attributes":{"term":"Python"}},{"@attributes":{"term":"C++"}},{"@attributes":{"term":"CUDA"}},{"@attributes":{"term":"Nvidia"}},{"@attributes":{"term":"Simulation"}},{"@attributes":{"term":"Code generation"}}]},{"title":"Dev session: James Knight, Thomas Nowotny:\u00a0GeNN","link":{"@attributes":{"href":"https:\/\/ocns.github.io\/SoftwareWG\/2021\/02\/26\/dev-session-james-knight-thomas-nowotny-genn.html","rel":"alternate"}},"published":"2021-02-26T18:33:55+00:00","updated":"2021-06-03T11:35:23+01:00","author":{"name":"Ankur Sinha"},"id":"tag:ocns.github.io,2021-02-26:\/SoftwareWG\/2021\/02\/26\/dev-session-james-knight-thomas-nowotny-genn.html","summary":"<p class=\"first last\"><a class=\"reference external\" href=\"http:\/\/www.sussex.ac.uk\/profiles\/415734\">James Knight<\/a> and <a class=\"reference external\" href=\"http:\/\/www.sussex.ac.uk\/profiles\/206151\">Thomas Nowotny<\/a> will introduce the <a class=\"reference external\" href=\"http:\/\/genn-team.github.io\/genn\/\">GeNN<\/a> simulation environment and discuss its development in this dev&nbsp;session.<\/p>\n","content":"<center><div class=\"figure\">\n<a class=\"reference external image-reference\" href=\"http:\/\/genn-team.github.io\/genn\/\">\n<img alt=\"The GeNN simulator\" class=\"img-responsive\" src=\"https:\/\/ocns.github.io\/SoftwareWG\/images\/20210304-genn.png\" style=\"width: 50%;\" \/>\n<\/a>\n<\/div>\n<\/center>\n<br \/>\n\n<center>\n <iframe width=\"560\" height=\"315\" style=\"height: 315px;\" src=\"https:\/\/www.youtube.com\/embed\/1ZHpKG41kp8\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n<\/center>\n<br \/><p><a class=\"reference external\" href=\"http:\/\/www.sussex.ac.uk\/profiles\/415734\">James Knight<\/a> and <a class=\"reference external\" href=\"http:\/\/www.sussex.ac.uk\/profiles\/206151\">Thomas Nowotny<\/a> will introduce the <a class=\"reference external\" href=\"http:\/\/genn-team.github.io\/genn\/\">GeNN<\/a> simulation environment and discuss its development in this dev&nbsp;session.<\/p>\n<ul class=\"simple\">\n<li>Date: March 9, 2021, 1700 <span class=\"caps\">UTC<\/span> (Click <a class=\"reference external\" href=\"https:\/\/www.timeanddate.com\/worldclock\/fixedtime.html?msg=Dev+session%3A+James+Knight%2CThomas+Nowotny%3A+GeNN&amp;iso=20210309T17&amp;p1=136&amp;ah=1\">here<\/a> to see your local&nbsp;time).<\/li>\n<li>Location (Zoom): (link no longer&nbsp;valid)<\/li>\n<\/ul>\n<p>The abstract for the talk is&nbsp;below:<\/p>\n<p>Large-scale numerical simulations of brain circuit models are important for identifying hypotheses on brain functions and testing their consistency and plausibility.\nSimilarly, spiking neural networks are also gaining traction in machine learning with the promise that neuromorphic hardware will eventually make them much more energy efficient than classical ANNs.\nIn this dev session, we will present the <a class=\"reference external\" href=\"http:\/\/genn-team.github.io\/genn\/\">GeNN<\/a> (<span class=\"caps\">GPU<\/span>-enhanced Neuronal Networks) framework [1], which aims to facilitate the use of graphics accelerators for computational models of large-scale spiking neuronal networks to address the challenge of efficient simulations.\n<a class=\"reference external\" href=\"http:\/\/genn-team.github.io\/genn\/\">GeNN<\/a> is an open source library that generates code to accelerate the execution of network simulations on <span class=\"caps\">NVIDIA<\/span> GPUs through a flexible and extensible interface, which does not require in-depth technical knowledge from the users.\n<a class=\"reference external\" href=\"http:\/\/genn-team.github.io\/genn\/\">GeNN<\/a> was originally developed as a pure C++ and <a class=\"reference external\" href=\"https:\/\/www.nvidia.com\/en-gb\/geforce\/technologies\/cuda\/\"><span class=\"caps\">CUDA<\/span><\/a> library but, subsequently, we have added a Python interface and <a class=\"reference external\" href=\"https:\/\/www.khronos.org\/opencl\/\">OpenCL<\/a> backend.\nThe Python interface has enabled us to develop a <a class=\"reference external\" href=\"http:\/\/neuralensemble.org\/PyNN\/\">PyNN<\/a> [2] frontend and we are also working on a Keras-inspired frontend for spike-based machine learning&nbsp;[3].<\/p>\n<p>In the session we will briefly cover the history and basic philosophy of <a class=\"reference external\" href=\"http:\/\/genn-team.github.io\/genn\/\">GeNN<\/a> and show some simple examples of how it is used and how it works inside.\nWe will then talk in more depth about its development with a focus on testing for <span class=\"caps\">GPU<\/span> dependent software and some of the further developments such as Brian2GeNN&nbsp;[4].<\/p>\n<ul class=\"simple\">\n<li>[1] <a class=\"reference external\" href=\"https:\/\/github.com\/genn-team\/genn\">https:\/\/github.com\/genn-team\/genn<\/a><\/li>\n<li>[2] <a class=\"reference external\" href=\"https:\/\/github.com\/genn-team\/pynn_genn\">https:\/\/github.com\/genn-team\/pynn_genn<\/a><\/li>\n<li>[3] <a class=\"reference external\" href=\"https:\/\/github.com\/genn-team\/ml_genn\">https:\/\/github.com\/genn-team\/ml_genn<\/a><\/li>\n<li>[4] <a class=\"reference external\" href=\"https:\/\/github.com\/brian-team\/brian2genn\">https:\/\/github.com\/brian-team\/brian2genn<\/a><\/li>\n<\/ul>\n","category":[{"@attributes":{"term":"Events"}},{"@attributes":{"term":"GeNN"}},{"@attributes":{"term":"Dev session"}},{"@attributes":{"term":"GPU"}},{"@attributes":{"term":"Python"}},{"@attributes":{"term":"C++"}},{"@attributes":{"term":"CUDA"}},{"@attributes":{"term":"Nvidia"}},{"@attributes":{"term":"Simulation"}},{"@attributes":{"term":"Code generation"}}]},{"title":"Dev session: Marcel Stimberg: Brian\u00a0Simulator","link":{"@attributes":{"href":"https:\/\/ocns.github.io\/SoftwareWG\/2021\/02\/07\/dev-session-marcel-stimberg-brian-simulator.html","rel":"alternate"}},"published":"2021-02-07T16:55:48+00:00","updated":"2021-06-03T11:31:44+01:00","author":{"name":"Ankur Sinha"},"id":"tag:ocns.github.io,2021-02-07:\/SoftwareWG\/2021\/02\/07\/dev-session-marcel-stimberg-brian-simulator.html","summary":"<p class=\"first last\"><a class=\"reference external\" href=\"http:\/\/www.computational-neuroscience-of-sensory-systems.org\/people\/marcel-stimberg\/\">Marcel Stimberg<\/a> will introduce the <a class=\"reference external\" href=\"https:\/\/briansimulator.org\/\">Brian Simulator<\/a> and discuss its development for the first developer session of the year. Please read the full post for the Zoom&nbsp;link.<\/p>\n","content":"<center><div class=\"figure\">\n<a class=\"reference external image-reference\" href=\"https:\/\/briansimulator.org\/\">\n<img alt=\"The Brian Simulator\" class=\"img-responsive\" src=\"https:\/\/ocns.github.io\/SoftwareWG\/images\/20210208-brian-logo.webp\" style=\"width: 25%;\" \/>\n<\/a>\n<\/div>\n<\/center>\n<br \/>\n\n<center>\n    <iframe width=\"560\" height=\"315\" style=\"height: 315px;\" src=\"https:\/\/www.youtube.com\/embed\/fy6Hs5uQ7aQ\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n<\/center>\n<br \/><p><a class=\"reference external\" href=\"http:\/\/www.computational-neuroscience-of-sensory-systems.org\/people\/marcel-stimberg\/\">Marcel Stimberg<\/a> will introduce the <a class=\"reference external\" href=\"https:\/\/briansimulator.org\/\">Brian Simulator<\/a> and discuss its development for the first developer session of the&nbsp;year.<\/p>\n<ul class=\"simple\">\n<li>Date: Feb 11, 2021 1700 <span class=\"caps\">UTC<\/span> (Click <a class=\"reference external\" href=\"https:\/\/www.timeanddate.com\/worldclock\/fixedtime.html?msg=Dev+session%3A+Marcel+Stimberg%3A+Brian+Simulator&amp;iso=20210211T17&amp;p1=136&amp;ah=1\">here<\/a>  to see your local&nbsp;time).<\/li>\n<li>Location (Zoom): (link no longer&nbsp;valid)<\/li>\n<\/ul>\n<p>The abstract for the talk is&nbsp;below:<\/p>\n<p>The <a class=\"reference external\" href=\"https:\/\/briansimulator.org\/\">Brian Simulator<\/a> is a free, open-source simulator for spiking neural networks, written in Python.\nIt provides researchers with the means to express any kind of neural model in mathematical notation and takes care of translating these model descriptions into efficient executable code.\nDuring this dev session I will first give a quick introduction to the simulator itself and its code generation mechanism.\nI will then walk through Brian&#8217;s code structure, our automatic systems for tests and documentation, and demonstrate how we work on its development.\nThe Brian simulator welcome contributions on many levels, hopefully this dev session will give you an idea where to&nbsp;start.<\/p>\n","category":[{"@attributes":{"term":"Events"}},{"@attributes":{"term":"Dev session"}},{"@attributes":{"term":"Brian Simulator"}},{"@attributes":{"term":"Code generation"}},{"@attributes":{"term":"Python"}},{"@attributes":{"term":"Free\/Open Source Software"}},{"@attributes":{"term":"Neuroscience"}},{"@attributes":{"term":"Computational Neuroscience"}},{"@attributes":{"term":"Automation"}},{"@attributes":{"term":"Documentation"}}]}]}