Computational Neuroscience är ett framväxande fält som ger unika möjligheter att studera komplexa hjärnstrukturer genom realistiska neurala simuleringar. Eftersom biologiska detaljer läggs till i modellerna blir dock tiden för simuleringen längre. Grafikbearbetningsenheter (GPU) används nu för att påskynda simuleringar på grund av deras förmåga att utföra beräkningar parallellt. Som sådana har de uppvisat en betydande förbättring av genomförandetiden jämfört med Central Processing Units (CPU). De flesta neurala simulatorer använder antingen flera processorer eller en enda GPU för bättre prestanda, men visar fortfarande begränsningar i utförandet när biologiska detaljer inte offras. Därför presenterar vi en ny CPU/GPU simuleringsmiljö för storskaliga biologiska nätverk, NeoCortical Simulator version 6 (NCS6). NCS6 är en fri, öppen källkod, parallelliserbar och skalbar simulator, utformad för att köra på kluster av flera maskiner, potentiellt med högpresterande datorenheter i var och en av dem. Den har inbyggda läck-integrate-and-fire (LIF) och Izhikevich (IZH) neuron modeller, men användarna har också möjlighet att utforma sina egna plug-in gränssnitt för olika neurontyper som önskas. NCS6 kan för närvarande simulera en miljon celler och 100 miljoner synapser i kvasi realtid genom att distribuera data över åtta maskiner med vardera två videokort. Nyckelord: neokortikal simulator (NCS), CPU/GPU simulering, läckande integrera-och-eld neuroner, izhikevich neuroner, biologiskt realistisk, storskalig modellering Många olika skalor av experiment inom neurovetenskap forskning försöker klargöra de komplexa funktionerna i nervsystemet. Från genetiken hos enskilda molekyler till beteendeforskningen av kognitiv neurovetenskap, leder studier till en bättre förståelse av neurala nätverk, såsom hjärnan. När in vivo- och in vitro-experiment är omöjliga att utföra på grund av komplexiteten i strukturer, ger beräknings neurovetenskap nya möjligheter. Dess unika tillgång till vilken hjärnregion som helst samt dess olika abstraktionsnivåer tillåter biologiskt-realistiska neurala simuleringar, och därmed ytterligare neuroscience fynd. Men neurala simuleringar har alltid inneburit en avvägning mellan exekveringstid och biofysisk realism. Även som neuron modeller förenklas och approximeras, neural regioner av intresse kan kräva en orimlig mängd körtid. För att ytterligare driva beräknings neurovetenskap forskning, datorforskare och ingenjörer har skapat mer optimerade simuleringsprogram och mer avancerad hårdvara arkitektur, respektive. Biologiskt sett har de flesta simuleringsmiljöer redan byggt in neuronmodeller. Dessa modeller, som beskrivs som hybridsystem, uppfyller en uppsättning differentialekvationer som beskriver den kontinuerliga utvecklingen av flera tillståndsvariabler och diskreta händelser (Brette och Goodman, 2012b). De välkända är Hodgkin-Huxley (HH), Izhikevitj (IZH), och läckande integrerad och eld (LIF) neuronmodeller. HH modellen kvantifierar processen för spikgenerering med en uppsättning av fyra differentialekvationer (Trappenberg, 2010), formaliserar sina uppmätta fynd av den gigantiska axon av en bläckfisk. Denna modell använder spänningsberoendet och dynamiken i natrium- och kaliumkanalerna, som fångar upp många biologiska detaljer samtidigt som man förlorar beräkningseffektiviteten. IZH-modellen är en kraftfull motor som kan replikera mycket av de dynamiska fenomen som observerats i neuroner. Den använder en matematisk formulering som härrör från behandlingen av en neuron som ett dynamiskt system, vilket resulterar i ett membranspänningsuttryck (Izhikevich, 2003). Detta är en mellanliggande modell, som är beräkningseffektiv samtidigt fånga en stor mängd olika svarsegenskaper hos verkliga neuroner. LIF modellen består av en subthreshold läckande-integrerad dynamisk, en bränning tröskel, och en återställningsmekanism, som ger en approximation av subthreshold dynamiken i membranet potential med en enkel linjär differentialekvation (Trappenberg, 2010). Det är fördelaktigt för analytiska beräkningar och är effektivt i numeriska genomföranden. approximationen är dock inte tillräcklig för att inkludera de flesta av de svarsmönster som ses i verkliga neuroner. Beräkningsmässigt har de flesta simulatorer [t.ex., NEURON (Carneval och Hines, 2012), NEST (Diesmann och Eppler, 2012), GENESIS (Bower och Beeman, 2012a,b), BRIAN (Brette och Goodman, 2012a)] utformats för att driva en eller flera av dessa modeller på en enda central processenhet (CPU). Under årens lopp har de utvecklats för att stödja simuleringar på flera processorer för extensibilitet och högre prestanda. Dessa förbättringar, i kombination med parallell databehandling (Bower och Beeman, 1998 (Bernhard och Keriven, 2005; Fernandez et al., 2008; Fidjeland et al., 2009; Nageswaran et al., 2009a,b; Tiesel och Maida, 2009; Bhuiyan et al., 2010; Fidjeland och Shanahan, 2010; Han och Taha, 2010a,b; Hoffmann et al., 2010; Mutch et al., 2010; Scorciono, 2010; Yudanov et al., 2010; Nowony, 2011; Ahmadi och Soleimani, 2011; Igarashi et al., 2011; Thibeault et al., 2011; Wang et al., 2011) eller på flera grafiska bearbetningsenheter (GPU) (Brette and Goodman, 2012b (NVIDIA, 2013) tillhandahåller en instruktionsuppsättning och verktyg för utvecklare att arbeta i en GPU-miljö. NCS använder CPU och CUDA-kompatibla GPU:er för simulering. Computationally, sharedmemory multiprocessor arkitekturer och senaste experiment med klustererade GPUs indikerar att vi snart kommer att kunna simulera en miljon celler i realtid utan att offra biologiska detaljer. I detta manuskript förklarar avsnitt 2 hur NCS har utformats, avsnitt 3.1 ger en validering av dess genomförande, och avsnitt 3.2 visar en representation av dess höga prestanda. Dessutom ger vi en kort jämförelse mellan NCS och andra simuleringsmiljöer i avsnitt 3.4. I avsnitt 4 avslutar vi med en sammanfattning av dokumentet och vårt planerade framtida arbete. På detaljnivå består varje simulering av fyra primära typer av element: nervceller, synapser, stimuli och rapporter. Neuroner representerar cellkroppen och måste rapportera två värden i varje steg: spiktillståndet och membranspänningen. Synapser representerar en enkelriktad förbindelse mellan en presynaptisk neuron och en postsynaptisk neuron. När den presynaptiska nervcellen avfyras introducerar synapsen en synapsström i den postsynaptiska cellen efter en viss angiven fördröjning. Stimuli är anslutna till en neuron och representerar en typ av extern ingång, kan antingen klämma membranspänning till någon nivå eller injicera en viss mängd ström. Rapporter ansluter till en uppsättning element (t.ex. cellgrupp) och används för att extrahera utdata (t.ex. spänning) från dessa element och generera resultatet till någon godtycklig datasänka. Medan varje komponent typ har vissa nödvändiga begränsningar, bestäms majoriteten av det interna beteendet av den mer specifika subtyp som simuleras. Till exempel kunde en neuron anges för att simulera en LIF-neuron medan en annan neuron kunde anges för att simulera en IZH-cell. De underliggande ekvationer som styr beteendet är helt olika mellan de två, men de kan fortfarande användas inom samma simulering. De enda kraven är att var och en får en extern stimulering och/eller en synapsström, och att de var och en rapporterar ett bränningstillstånd och/eller en spänning. För att förbättra simuleringstiderna är NCS6 utformad för att köras på kluster av flera maskiner, eventuellt med olika datorenheter i varje dator. Dessa enheter inkluderar CUDAcapable GPUs, och CPUs. Även inom samma enhetsklass kan olika enheters beräkningskraft vara drastiskt annorlunda. För att bättre underlätta belastningsbalansering tilldelas varje enhet en relativ beräkningseffektklass. Den nuvarande metoden för att bestämma denna mängd är att multiplicera enhetens klockfrekvens med antalet beräkningskärnor. Efter att ha fastställt beräkningskraften för varje enhet beräknas en kostnadsberäkning för varje neuron. Eftersom antalet synapser är fler än antalet neuroner och ingångar av flera storleksordningar, använder vi antalet synapser som kostnadsberäkning. Neuroner sorteras sedan i fallande ordning av beräkningskostnaden och distribueras över alla tillgängliga datorenheter i klustret så att enheten med den lägsta beräkningsbelastningen (total beräkningskostnad/beräkningskraft) får nästa neuron. När alla neuroner i simuleringen är fördelade, alla bidragande synapser och stimuli placeras också på samma enheter som deras riktade neuroner. Med alla element fördelade över alla enheter, de ytterligare partitioneras av sina subtyper, som var och en hanteras av en plugin. Figur 1 visar ett exempel på en fullständig fördelning. På grund av den distribuerade karaktären hos NCS6 kan element refereras i ett antal områden som speglar miljöns hierarki: plugin, enhet, maskin och global (kluster). När distributionen är klar tilldelas varje element ett nollbaserat ID för varje omfattning. ID är vadderade mellan plugins så att dataord för strukturer som tilldelas i andra omfattningar är relaterade till endast en plugin. I allmänhet innebär detta att ID är vadderade till en faktor på 32 (antalet bitar i ett ord) mellan plugins. Det är viktigt att notera att ID:n bara är unika inom samma elementtyp, det vill säga att det kan finnas både en neuron och en synaps med ett globalt ID på 0. Beroende på vilka element som behöver tillgång till andra delar fördelas och nås vissa viktiga datastrukturer med olika omfattning. Data som är specifik för en elementtyp lagras vid insticksprogrammets omfattning. Eftersom synapser kan behöva komma åt membranspänningen från sina postsynaptiska neuroner för att bestämma deras synapsiska strömöverföringar, lagras membranspänningar och nås med hjälp av enhetsnivå-ID. Orsaken är alla postsynaptiska neuroner och deras associerade synapser finns på samma enhet på grund av hur de distribueras. Men eftersom det spikande tillståndet hos en synaps beror på det spikande tillståndet hos den presynaptiska nervcellen, nås neuronernas spikande tillstånd med hjälp av en global nivå-ID vid uppdatering av synaptiska spiktillstånd. Det grundläggande flödet av en simulering är följande: för varje tidssteg beräknas strömmen från stimuli och synapser och används för att uppdatera tillståndet för varje neuron. Det resulterande spiktillståndet hos varje neuron används sedan för att bestämma det spikande tillståndet hos deras associerade synapser i senare tidssteg. För att underlätta maximalt utnyttjande av datorenheter delas simuleringen upp i flera steg som kan utföras parallellt så länge som de data som krävs för ett givet steg är klara. Figur 2 visar denna arbetsfördelning (mörka rutor) tillsammans med de data (ljuslådor) som krävs för att simulera ett visst steg och de data som produceras när det steget har uppdaterats. Ett utgivare-subscriber system används för att passera databuffertar från ett steg till nästa. Under simuleringen försöker man dra alla nödvändiga databuffertar från sina tillhörande publiceringsstadier. Scenen är blockerad tills all data är klar. När den får alla nödvändiga databuffertar avancerar den simuleringen genom ett enda tidssteg och publicerar sin egen databuffert samtidigt som den frigör alla de andra som den inte längre behöver. När alla prenumeranter till en databuffert släpper den, läggs databufferten tillbaka till förlagets resurspool för återanvändning. För varje steg används ett begränsat antal offentliggörandesbara buffertar för att förhindra att ett steg konsumerar alla beräkningsresurser och i onödan går före alla andra steg. Till exempel, utan att begränsa buffertantalet, eftersom indatauppdateringsfasen kräver inga data från några andra källor, kan scenen simulera alla tidssteg innan en enda neuronuppdatering tillåts ske, effektivt lägga till en serietidskostnad till den totala körtiden. Inom ett enda steg uppnås ytterligare granularitet genom parallellisering mellan olika subtyper. Som ett exempel, om en enhet simulerar både LIF Neuroner och Izhikevich Neuroner, plugins uppdatera var och en kan utföras parallellt. På grund av stoppning från ID-uppgifter, uppdateringar bör påverka helt separata områden av minne, inklusive operationer på bit vektorer. Undantag från detta, t.ex. när en ingång skriver till en enhetsindexerad ingångsström för sin målneuron, hanteras genom att använda atomoperationer eller genom att aggregera partiella buffertar som genereras av varje insticksprogram. Den valda metoden beror på typen av anordning och dess minnesegenskaper. Medan plugins tillåts att uppdatera före varandra, resultaten för från ett skede i ett givet tid-steg kommer inte att publiceras till abonnenter förrän alla plugins (i det skedet) har uppdaterats fram till det tid-steget. Syftet med indatauppdateringssteget är att beräkna den totala ingångsströmmen till varje neuron på enheten samt eventuella spänningsklämmor som bör göras. Ingångsströmmen representeras av en rad flyttalsvärden, en för varje neuron (inklusive stoppning) på enheten, initierad till noll i början av varje tidssteg. Spänningsneuroner kläms fast och lagras på ett liknande sätt där en bit vektor används för att välja vilka neuroner som faktiskt ska klämmas. Ingångar förväntas uppdateras med inmatningsinsticksprogram som är utformade för att hantera deras subtyp. Annat än enhets-nivå Neuron ID för varje Input som är statiskt bestämd i början av simuleringen, insticksprogram förlitar sig på inga andra data från något annat skede av simuleringen. Som sådana får de simulera framför resten av systemet så länge det har tomma buffertar som kan skrivas till och publiceras. Till skillnad från indatauppdateringsstadiet har neuronuppdateringsstadiet två beroenden: ingångsströmmen per neuron som publiceras från indatauppdateringsstadiet och synapsströmmen per neuron som publiceras av synapsuppdateringsstadiet. Med tanke på dessa två delar av information, förväntas detta stadium att producera membranspänning och spikning tillstånd av varje neuron på enheten. Liksom ingångsströmmen representeras membranspänningen av en rad flyttalsvärden. Å andra sidan, det spikande tillståndet representeras av lite vektor. Likt ingångar, neuroner förväntas uppdateras av neuron plugins utformade för att hantera sina subtyper. Trots att ta emot och skriva ut data i enhetsnivå strukturer, neuron plugins fungerar enbart i plugin utrymme. Detta är möjligt på grund av att varje plugin ges en sammanhängande uppsättning enhets-nivå-ID under distributionen. Som ett resultat, enhetsnivå data som skickas in i varje plugin helt enkelt kompenseras i enlighet därmed för att ge lämplig plugin-nivå representation. Resultatet av neuronuppdateringsstadiet är avfyrningstillståndet för varje neuron som finns på apparaten. Synapser distribueras dock enbart baserat på postsynaptiska neuroner och som sådan kan de presynaptiska neuronerna möjligen befinna sig på en annan enhet. För att bestämma synapsen måste alltså tillståndet hos varje neuron i simuleringen samlas först. Återigen används utgivare-subscriber schemat för att passera data asynkront. I stället för att överföra data mellan olika steg används den dock för att överföra data mellan olika dataområden. Figur 2 visar flödet av den neuron som sprutar information över ett kluster. När vektorväxlaren på enhetsnivå tar emot en lokal vektor, publiceras data för vektorväxlaren på maskinnivå. Inom denna utbytare kopieras den lokala vektorn till en global vektor som allokeras i systemminnet. När alla lokala vektorer kopieras för ett enda tidssteg sänds den kompletta vektorn på maskinnivå till alla andra maskiner i klustret. Efter att alla maskiner i klustret har sänts ut publiceras den kompletta globala eldningsvektorn tillbaka till vektorväxlarna på enhetsnivå där den kopieras tillbaka till lämplig typ av enhetsminne innan den publiceras till eventuella signatärstadier. Med bränningstillståndet hos varje neuron i simuleringen, kan en enhet avgöra när alla dess synapser kommer att få bränningen baserat på en per-synaps fördröjningsvärde. Med tanke på de potentiella förseningarna lagras denna information i en synapsavfyrningstabell. En rad i tabellen är lite vektor som representerar avfyrningstillståndet för varje synaps på enheten. Antalet rader i tabellen beror på den maximala fördröjningen av alla lokala synapser. När detta skede tar emot den globala neuronbrandvektorn kontrollerar varje synaps dess tillhörande presynaptiska neuron för ett avfyrande tillstånd. Om den avfyras, lägger synapsen till sin fördröjning till det aktuella tidssteget för att bestämma lämplig vektor som sedan ändras genom att sätta sin bit till 1. Efter uppdatering av tabellen för ett enda tidssteg kan den tabellrad som hör till det steget publiceras. Upp till N-tidsteg före den nuvarande tiden kan dock publiceras, där N är den minsta fördröjningen för alla lokala synapser. Detta gör det möjligt för enheter att simulera framför varandra till en punkt snarare än att vara helt låst i steg. Dessutom gör publiceringen av dessa extra buffertar i början av simuleringen att data kan börja flöda genom simuleringen. Med tanke på avfyrandet av varje synaps på enheten, synapserna själva kan uppdateras. Liksom indatauppdateringssteget producerar synapsuppdateringsstadiet den totala synapsströmmen per enhetsnivå neuron som också representeras av en rad flyttalsvärden. När det gäller arbetsutrymmen, synaps plugins uppdatera synapser som fungerar på både plugin och enhetsnivåer, läsa från synapsen brandvektorn medan skriva till synapsen strömvektorn. Rapporter samlar information om någon aspekt av simuleringen. De anges av användaren som en uppsättning element och värden som bör extraheras från dem allteftersom simuleringen fortskrider. Eftersom dessa element kan spridas över flera enheter och / eller olika maskiner och de data som krävs kan uppehålla sig på en av flera olika områden, varje maskin, enhet och plugin ges en unik identifierare. Efter distributionen kan varje element som ska rapporteras hittas med lämplig ID-kod baserad på dataomfånget och identitetsbeteckningen inom datakällan. Med dessa två värden kan lämpliga data extraheras under simuleringen. För att åstadkomma detta, en enda reporter omedelbart på varje maskin, som innehåller minst ett element som bör samlas in. Sedan prenumererar en reporter på varje utgivare av data genom ett mer generaliserat förlag-subscriber-gränssnitt. Detta gränssnitt tillåter en reporter att komma åt data arrays tillsammans med minnestypen med hjälp av en sträng identifierare. I varje steg tar reportern fram data från alla sina prenumerationer och aggregerar dem efter behov. En separat MPI-kommunikationsgrupp används sedan för att ytterligare aggregera dessa data över hela klustret asynkront innan den skrivs ut till en fil eller någon annan datasänka. Istället för att använda en inbyggd reporter typ, ett plugin-typ gränssnitt är utformad för att ge flexibilitet när det gäller dataextraktion, aggregering, kommunikation och utdata tekniker utan att alltför komplicera den resulterande koden. Till exempel, en reporter som räknar antalet neuron bränningar kan välja att minimera data busstrafik på CUDA-enheter genom att genomföra räkningen direkt på enheten och hämta det enskilda värdet snarare än genom att ladda ner hela bufferten till systemets minne först innan den fungerar på den. Implementeringar av reportergränssnittet ges tillgång till en MPI-kommunikationsgrupp tillsammans med element-ID och källidentifierare för att utföra ovannämnda uppgifter. Varje CUDA-insticksprogram i något skede av simuleringsflödet använder en separat CUDA-ström för att köa arbete för GPU, sover medan du väntar på att kärnan ska köras färdigt, och publicerar resultaten för att prenumerera på stadier när resultaten är klara. Varje ström fungerar självständigt på separata databitar, vilket gör det möjligt för CUDA-schemaläggaren att köra kärnor från olika strömmar samtidigt för att maximera maskinvaruutnyttjandet. Till skillnad från modellen för beräkningsstraightforward Izhikevich innebär LIF-modellen enligt NCS ett antal utmaningar när den genomförs i CUDA. Till att börja med kan LIF-neuroner bestå av flera fack som påverkar varandra och har olika synapsförbindelser. För att upprätthålla minimal dataöverföring sönderdelas alla avdelningar i en enda LIF-neuron i neuronliknande objekt som måste distribueras till samma enhet och lokaliserar interaktioner mellan olika avdelningar till den enheten. Eftersom varje kompartment är modellerat som en neuron, är compartment-specifika anslutningar också realiseras. En ytterligare komplexitet av LIF neuron kommer från förmågan för ett fack att ha en eller flera kanaler som ändrar dess ström baserat på ett antal olika attribut. Lösningen på detta kommer från att tillämpa simuleringsflödet nedbrytning till detta mindre subproblem. Varje unik kanaltyp implementeras som ett insticksprogram till det större LIF-insticksprogrammet för att minimera förgrening inom en enda kärna. Vid varje steg ändrar kanalinsticksprogrammet samtidigt en aktuell buffert. Denna buffert publiceras sedan till fackuppdateringen, som i sin tur publicerar facken nyligen uppdaterade tillstånd för användning av kanalinsticksprogram i det efterföljande tidssteget. En sista utmaning att modellera NCS neuroner beror på beteendet hos bränningar. Istället för att skicka en enda impuls över en synaps när nervcellen avfyrar, skickas en vågform över ett potentiellt stort antal tidssteg. Upprepade bränningar under en kort tidsperiod producerar flera vågformer som sammanfattas tillsammans. För att möjliggöra detta minne av bränningar i CUDA, synapsen Resultaten av detta manuskript presenteras i form av: neuron modellvalidering, NCS prestanda, befintliga modeller med NCS, och en jämförelse av simuleringsmiljöer. Valideringen av våra neuronmodeller är avgörande för modelleringsstudiernas tillförlitlighet. Vi har jämfört membran potentiella spår med våra två typer av neuroner modeller som svar på nuvarande injektion med elektrofysiologiska data (Contreras, 2004) och de välkända Izhikevich bränning mönster (Izhikevich, 2003). Som exempel tittade vi på tre huvudtyper av neuronala bränningsmönster: regelbunden spikning (RS), snabb spikning (FS) och sprickbildning (B). För LIF neuronmodellen använde vi olika typer av kanaler och parametrar. Kanalerna inkluderade spänningsberoende och kalciumaktiverade kaliumkanaler. För IZH neuronmodellen använde vi specifika värden för parametrarna a, b, c och d, som anges i figur 3. Figur 4, 5 visar bränningsmönster för simulerade regelbundna nervceller med hjälp av LIF respektive IZH-neuronmodellerna. Figur 6, 7 visar bränningsmönster för simulerade snabba nervceller med hjälp av LIF respektive IZH-neuronmodellerna. Figur 8, 9 visar bränningsmönster för simulerade spruckna neuroner med hjälp av LIF respektive IZH-neuronmodellerna. Alla sex figurer diagram ett prov av simuleringen från 100 till 300 msek. Sammantaget validerades våra två neuronmodeller genom nära replikerande spikformer och spikfrekvenser från elektrofysiologiska data (Contreras, 2004) och de välkända Izhikevitch bränningsmönster (Izhikevitj, 2003) för tre huvudtyper av neuroner: RS, FS och B. Observera: våra två modeller är inte begränsade till dessa tre typer; alla neurala mönster kan replikeras. Baserat på den senaste utvecklingen och förbättringar av NCS, är vi kapabla att köra storskaliga neurala modeller (100 000-1.000.000 neuroner) snabbare än de flesta simulatorer genom att distribuera data över flera GPU:er. Med tanke på ett synaps- och neuronförhållande på 100 (t.ex. 500.000 neuroner och 50 miljoner synapser) kör NCS alla modeller upp till nästan 1 miljon neuroner i realtid, till exempel 1 s simulering = 1 s (IZH) eller 2 s (LIF) realtid, som presenteras i figurerna 10, 11 för hybriden respektive Izhikevich neurons. I NCS prestanda siffror, åtta maskiner användes med var och en har två videokort (GTX 680s, GTX 480s, GTX 460s, eller Tesla C2050s) med en tidssteg på 1 ms. Från en till tio sekunders simuleringar, NCS har visat ingen förlust av prestanda över tid, som visas i figurerna 12, 13. Prestandan kan dock gå förlorad i modeller som innehåller mer än 50 miljoner synapser på grund av den höga beräkningskraft som synapserna kräver. Gränsen i termer av kommunikation uppstår när storleken på nervvektorn är för stor för att nätverket ska kunna hantera. I fallet med GigE(1000 Mbps) En ny CPU/GPU Brain Simulator simulerar med 1 ms intervall, har vi 1 Mb per uppdatering, som representerar 1 miljon celler (1 bit per cell). Dessutom finns det MPI paket overhead. För närvarande beror den främsta orsaken till förlust av prestanda i mycket stora modeller på minnesbegränsningar hos GPU:erna och inte på nätverksbegränsningar. För mer information om befintliga modeller med hjälp av NCS, relaterade forskningsprojekt och publikationer, se vår webbplats för Brain Computation Laboratory: http://www.cse.unr.edu/brain/.  Eftersom varje simuleringsmiljö har sina egna fördelar och nackdelar har vi jämfört NCS med tre välkända simulatorer, NEURON, GENESIS och NEST. Denna jämförelse, presenteras i Figur 14, kan vara användbart för forskare att avgöra vilken simulator är bättre lämpad för sina modellering experiment. Specifikt beskriver den de fyra simuleringsmiljöernas funktioner, såsom plattformar, back-end språk, front-end kodning stil, GUI, lämpliga applikationer, stödda neuron modeller, typ av parallell beräkning, och möjlig python version. Totalt sett är NCS för närvarande väl lämpad för storskaliga neurala nätverk och genomsnittliga biologiska detaljer som kan simuleras med LIF- och IZH-modeller. Inmatningsspråket för NCS är en textfil och det kräver minimal datorprogrammering erfarenhet. NCS6 är en ny, gratis, öppen källkod, parallelliserbara och skalbara simulator, utformad för att köra på kluster av flera maskiner, potentiellt med högpresterande datorenheter i var och en av dem. Simulator, handledningsbilder, modeller, dokumentation och konferensaffischer finns tillgängliga för nedladdning på http://www.cse.unr.edu/brain/ncs. Den har inbyggda LIF och IZH neuron modeller som replikerar biologiska neurala bränningsmönster baserat på experimentella data (Contreras, 2004). Alla bränningsmönster kan reproduceras med realistiska spikar former och spikar frekvenser. Om användarna inte är nöjda med dessa tillgängliga modeller har de också flexibiliteten att utforma sina egna plug-in-gränssnitt för olika neurontyper. NCS6 kan för närvarande simulera en miljon celler och 100 miljoner synapser i kvasi realtid genom att distribuera data över dessa heterogena kluster av processorer och GPU. En mängd olika modeller har skapats och simulerats med NCS, och de har visat intressanta resultat på beteende på hög nivå (t.ex. navigering). Fördelarna med att använda NCS6 är dess beräkningskraft, dess biologiska kapacitet på flera nivåer av abstraktion, och dess minsta A Novel CPU / GPU Brain Simulator dator programmering efterfrågan. NCS6 huvudsakliga begränsningar inkluderar dess brist på biofysiska parametrar, dess enda tillgänglighet på LINUX-plattformar, och avsaknaden av ett grafiskt gränssnitt. Därför består vårt nuvarande arbete av att öka de biologiska detaljerna bakom NCS6 utan att påverka simuleringstiden. NCS6 bör snart vara tillgänglig på Windows och kunna köras på openCL-kompatibla enheter. Dessutom har vårt huvudfokus varit att utveckla ett realtidsvisualiserings- och analysverktyg för att göra användningen av NCS6 bekväm för en bredare gemenskap. ERKÄNNANDEN
Neural Kortical Simulator (NCS6) är en extensibel neural simulator i realtid för heterogena kluster av både CPUs och CUDA-kapabla GPUs REF.
A novel CPU/GPU simulation environment for large-scale biologically realistic neural modeling
{'venue': 'Front. Neuroinform.', 'journal': None, 'mag_field_of_study': ['Computer Science', 'Medicine']}