2. 江苏省模式识别与计算智能工程实验室, 江苏 无锡 214122;
3. 华东师范大学 软硬件协同设计技术与应用教育部工程研究中心, 上海 200062
2. Jiangsu Provincial Engineering Laboratory of Pattern Recognition and Computational Intelligence, Wuxi, Jiangsu 214122, China;
3. MoE Engineering Research Center for Software/Hardware Co-design Technology, East China Normal University, Shanghai 200062, China
开放科学(资源服务)标志码(OSID):
深度学习在数据挖掘、自然语言处理、语音处理、文本分类等诸多领域都取得了突出的成果,但其存在需要海量标注数据、通用智能水平弱等局限性[1],难以成为解决人工智能问题的终极手段。人类大脑是由约1011个神经元、1015个突触构成的复杂的生物体,具有很高的智能水平,但功耗只有25 W左右[2],其计算模式值得借鉴。目前,出现了越来越多的大脑神经计算科学的研究工作,以期通过解析人类大脑工作机理、发展类脑计算来克服现有深度学习的不足[3]。类脑计算的基础是脉冲神经网络(Spiking Neural Network,SNN),与传统的深度神经网络(Deep Neural Network,DNN)相比,SNN的工作机理更接近于生物大脑。
大脑规模所需的计算资源远超单个计算节点或芯片的功能[4],因此,为了获得最佳的计算能力,构建大规模集群形成分布式计算平台成为当前主流[5-7]。然而随着计算节点的增多,通信时间所占比例越来越大,有效计算的比例逐渐下降,导致SNN的计算效率下降。
针对通信的优化,压缩、打包尖峰数据等[8-10]传统方法只关注对通信的脉冲数据进行优化,局限性较大。在神经元映射对通信的影响方面,CARLOS等提出HP-NBX方法[11],利用超图分区和动态稀疏交换减少进程之间的连接,从而提高通信平衡性,优化通信过程。URGESE等提出SNN-PP方法[12],在SpiNNaker中使用谱聚类算法将神经元分组成亚群,使亚群中紧密相连的组保持在同一个计算节点(进程)中,目的是最小化相互的连接并保持高度连接的组件相互靠近。BALAJI等提出SpiNeCluster方法[13],根据尖峰信息将SNN划分为局部和全局突触,最大限度减少共享互连上的尖峰数量。XIANG等提出一种基于跨层的神经映射方法[14],将属于相邻层的突触连接神经元映射到同一片上网络节点,同时为适应各种输入模式,还考虑输入尖峰率并重新映射神经元以提高映射效率。
针对大规模分布式类脑计算的仿真,NEST仿真器是一款主流的类脑模拟器开源软件[15]。NEST仿真器可以模拟任何规模的脉冲神经网络,并且支持集成式的MPI、OpenMP通信协议,其通过分布式计算大幅提高了仿真速度。NEST的通信机制采用“缓冲区动态相等”的方法,各节点无需通信,直接动态保持发送缓冲区相等。
虽然NEST对通信时间进行了一定程度的优化,但是由于缓冲区互相无交流,使得通信数据量持续增加,因此其在能耗方面表现较差。针对这一问题,本文提出基于SNN子图跨节点优化的神经元重分布算法ReLOC,通过分析SNN模型中神经元之间联系的紧密性,减少神经元到其他节点的连接,并以稀疏交换思想对NEST本身的通信机制进行改进,利用其稀疏性提高通信效率。
1 研究背景与相关工作 1.1 脉冲神经网络脉冲神经网络(SNN)被誉为第三代人工神经网络[16],其模拟神经元更加接近实际,并且把时间的影响也考虑在内。脉冲神经网络中的神经元不是在每一次迭代中都被激活,而是在其膜电位达到某一个特定值时才被激活。当一个神经元被激活时,它会产生一个信号传递给其他神经元,并改变其膜电位。
神经科学家通常用SNN评估理论和实验结果[17-18]。SNN仿真分为2个阶段:计算和交换。计算阶段包括基于偏微分方程更新神经元模型;交换阶段将神经元产生的脉冲发送到其突触后神经元处。在分布式系统中,交换涉及到进程间通信过程,而节点规模越大,通信所占的比例就越大。
1.2 NEST仿真器NEST是一款应用广泛的SNN模型仿真器,其大规模分布式计算特性非常适合用来作为SNN负载表征的模拟器工具。本节介绍NEST的仿真架构、并行分配和通信机制。
1.2.1 NEST仿真架构图 1展示了NEST的运行过程。首先使用Create在各个节点上创建神经元;然后Connect连接神经元,创建突触;最后Simulate进行仿真,此过程分为三步,即更新所有神经元变量(Update)、将产生的脉冲发送出去(Communicate)以及更新本地突触变量(Deliver)。
![]() |
Download:
|
图 1 NEST运行流程 Fig. 1 Procedure of NEST operation |
NEST并行架构采用支持MPI节点间通信和OPENMP线程通信,并使用虚拟进程(Virtual Process,VP)的概念来统一管理并行系统,虚拟进程数量NVP由进程数量P和线程数量T决定,NVP=P×T。
神经元分配采用基于VP的循环分配,使得神经元在各个节点上均匀分布。如图 2所示,其中:Sg代表spike-generator脉冲激发器,此设备在VP上是完整创建的;Iaf代表神经元,是基于虚拟进程的分配。由于这种分配方式不可避免地将联系紧密的神经元分配到不同的节点,导致通信消耗增大,因此神经元分配对于通信的改进是必要的。
![]() |
Download:
|
图 2 NEST并行架构和神经元分配方式 Fig. 2 Parallel architecture and neuron allocation mode of NEST |
NEST采用将单个时间片内的神经元连续更新的思想:神经元先进行若干次连续更新,然后一次时间片内产生的脉冲统一进行MPI通信。
NEST使用MPI_Alltoall函数进行通信,通常的设计是每次通信前先通信一次确保每个节点的发送缓冲区都保持相等,这样通信两次的设计毫无疑问会随着节点增加造成通信时间剧增,因此,NEST不使用这种设计,而是采用所有节点同时自主保持通信缓冲区相等的策略。
如图 3所示,在进行每一轮通信时,首先将脉冲放入发送缓冲区中,如果缓冲区的容量小于脉冲数,则将脉冲放满进行通信,然后扩大发送缓冲区的容量,继续放入剩下的脉冲,直到脉冲传输完成,其中发送缓冲区的容量会一直变大。这样设计提高了通信的可扩展性,但是会导致通信能耗迅速增加,并且NEST集体通信导致发送缓冲区无论有没有脉冲都需要发送数据,这无疑增加了通信消耗,而并行SNN的通信应当是进程间存在脉冲交换时才会发生。
![]() |
Download:
|
图 3 NEST通信机制流程 Fig. 3 Procedure of NEST communication mechanism |
在使用多节点仿真时,神经元会被均匀地分发到每个节点上,产生跨节点通信。如图 4所示,在NEST上运行平衡随机网络模型,随着节点增加,通信所占比例逐渐增大,计算效率逐渐下降。
![]() |
Download:
|
图 4 NEST各阶段时间占比 Fig. 4 Time proportion of NEST each stage |
图 5显示了NEST通信能耗的变化,可以看出,随着节点的增加,通信数据量迅速上升,NEST在通信能耗方面可扩展性变差。针对通信能耗可扩展差的问题,本文对NEST进行稀疏性通信优化,以期提高通信效率。
![]() |
Download:
|
图 5 通信数据量 Fig. 5 Communication data volume |
针对NEST集群的神经元循环分配带来的问题,本文实现神经元重分布算法ReLOC。通过对神经元之间连接关系的分析,重新分布神经元,使得跨硬件节点之间的连接变得更加稀疏。在此基础上,改进NEST通信方式,使NEST集群可以更好地利用稀疏性以减少通信代价。
2.1 影响通信的因素分布式集群最重要的问题就是节点间的通信问题,因为突触前和突触后神经元总是不可避免地被分布到不同的节点,最优分布是所有神经元都被放入同一个节点,但是此分布无法体现分布式集群的优势。节点间通常使用以太网连接,因此,网络带宽和延迟直接影响通信速度。除此之外,神经元彼此之间的连接也会对跨节点通信造成较大影响。
将一个SNN模型建立为如图 6所示的SNN连通图,圆点代表神经元,中间带箭头的线段表示突触。然后将一个神经元和它的突触后神经元共同组成这个SNN图的子图,如图 7所示,假如一个神经元产生脉冲,那么脉冲数据会被发送给所有的突触后神经元。所有的脉冲传输都是基于这样的SNN子图。
![]() |
Download:
|
图 6 并行SNN连通图 Fig. 6 Parallel SNN connected graph |
![]() |
Download:
|
图 7 SNN子图 Fig. 7 SNN subgraph |
在NEST仿真器中,当一个节点上包含一个神经元的多个突触后神经元时,这些突触后神经元会共享一个脉冲数据。因此,无论突触后神经元的数量如何,此神经元发出的脉冲传输到此节点都只算作一个,即神经元到节点的连接。每次神经元更新产生的总脉冲总是小于或等于节点数乘以神经元数。因此,如何将一个SNN子图中的神经元分布到尽可能少的节点上,并且改进NEST通信机制使其更适用稀疏性优化成为重要问题,本文设计的ReLOC算法每次都加入当前匹配集最优匹配的神经元,形成新的匹配集。根据最优匹配规则选取属于匹配集中的突触后神经元最多的神经元,将SNN子图放入尽可能少的节点,从而减少跨节点脉冲。在此基础上,改进NEST原本的集体通信,利用稀疏交换的思想,在跨节点脉冲减少的同时,避免多余的进程数据交换,从而提高NEST通信效率。
2.2 ReLOC算法 2.2.1 算法描述ReLOC算法描述如算法1所示,其将神经元按照紧密度的联系分布到若干节点上,通过对节点神经元容纳量的限制,平衡节点的负载。
算法1 ReLOC算法
输入 节点数,神经元连接表
输出 各节点神经元分布
1.for each k∈np
2.r=rand(neurons);
3.put r in part[k];
4.while part[k].size < max_neurons
5.c=max(post(neurons)in part[k]);
6.put c in part[k];
ReLOC算法输入为节点数和神经元连接表。一个SNN模型可以建立成一张连通图G =(V,E),V代表所有的神经元集合,E代表神经元之间的突触连接。而神经元连接表可以表示为图G的邻接矩阵A,A是Nn×Nn维的,Nn表示神经元的总数,节点数用Nnp来表示。ReLOC算法输出为各节点的神经元分布,表示为一个分布矩阵T,T是Nn×Nnp维的。
首先选取一个节点,将一个随机的神经元r分布到此节点上,k表示当前节点;然后依次在此节点上放入未分配的神经元,直到节点k达到最大容纳量max_neurons,规则是每次放入的神经元都是未分配的神经元集neurons中神经元的突触后神经元在节点k中分布最多的神经元。当神经元按照此方法依次进行匹配时,每次匹配的神经元都是与匹配集联系最密切的神经元。ReLOC算法中的符号定义如表 1所示。
![]() |
下载CSV 表 1 符号定义 Table 1 Symbolic interpretation |
ReLOC算法的思想是先选定一个神经元,每次匹配一个和它联系最紧密的神经元,形成一个神经元集,然后继续循环匹配和此神经元集联系最紧密的神经元,生成新的神经元集。此算法中决定神经元之间密切程度的是神经元集中属于突触后神经元的数量。因为每次匹配都会使一个SNN子图(见图 7)最大化分布到同一个节点上,当所有匹配都是最优时,每个子图都会避免分布在多个节点上,从而减少通信量。
ReLOC算法只需要在任意一个节点上运行,然后将分布结果发送给其他节点即可。内存使用按照式(1)计算:
$ M=N\times {M}_{\mathrm{i}\mathrm{n}\mathrm{t}}\times (2N+1) $ | (1) |
其中:M表示总内存;N表示神经元总数量;Mint表示整型参数占用内存。
2.2.2 ReLOC算法的有效性ReLOC算法的核心是匹配过程,每一次匹配都会选择最优的匹配集,最优意味着最低代价的SNN子图切割,即SNN子图分布在最少的节点上。
为了描述SNN的拓扑,将神经元连接图用邻接矩阵A来表示,
根据上文提到的突触后神经元共享脉冲数据,衡量跨节点通信可以用神经元到节点的连接数量NNP来表示。首先定义P:
$ P[i, j]=\left\{\begin{array}{l}1, A[i, :]T[:, j] > 0\\ 0, \mathrm{其}\mathrm{他}\end{array}\right. $ | (2) |
$ {N}_{\mathrm{N}\mathrm{P}}=\sum\limits _{i=0}^{N-1}\sum\limits _{j=0}^{P-1}P[i, j] $ | (3) |
为了利用ReLOC算法的便捷性,并且与原先的NEST调用代码不产生冲突,本文改变了NEST的基本架构,在Connect时不创建具体的突触对象,只是通过所有连接得到一个连接表,然后在调用Simulate函数初始化仿真时根据连接表进行神经元的重分布处理,之后再创建突触和运行仿真过程。重分布具体流程如图 8所示。其中,Setnod是系统调用ReLOC进行神经元重新分配的标志,对于非稀疏性SNN模型,则无需调用此模块。Setnod函数可以输入参数,根据参数选择不同的重分布算法,此模块是可扩展的,可以自行添加新的算法。
![]() |
Download:
|
图 8 重分布流程 Fig. 8 Procedure of relocation |
用户调用应用重分布稀疏方法的NEST内核的Python代码以如下为例,对比原代码新增了2个函数调用,设置重分布(Setnod)和设置通信方式(Setcomm),两者都需要在ResetKernel后进行调用。如果不调用则默认使用原来的NEST神经元分配和通信方式。
nest.ResetKernel()
nest.Setnod()
nest.Setcomm(type)
nest.Create(model,num)
nest.Connect(sr_neuron,tag_neuron,conn_spec,syn_spec)
nest.Simulate(time)
2.3 稀疏交换稀疏交换是HOEFLER等提出的动态稀疏数据交换算法[19],是节点对节点通信的模式,即一个节点只发送必要的数据给另一个节点,期间需要启动多次MPI通信,总体效率不如集体通信(MPI_Alltoall)。但是如果减少每个节点的通信节点(一个节点需要向另一个节点发送脉冲数据,即本节点神经元到其他节点的连接)的数量,那么就可以减少启动MPI通信的次数,进而提高通信效率。
如图 9所示,在启动通信阶段,每个节点都会使用MPI_Reduce_scatter函数与其他节点交流得到源节点的信息,避免与非相邻进程交流,以此提高通信效率。然后每个节点都将脉冲数据异步发送给其所有的目标节点,并等待接收其源节点发送的脉冲,一旦接收完毕,则表明通信阶段结束。
![]() |
Download:
|
图 9 稀疏交换流程 Fig. 9 Procedure of sparse exchange |
每个节点与其他目标节点进行数据传输时使用非阻塞通信,即用MPI_Isend进行发送数据,用MPI_Recv接收数据,最后使用MPI_Waitall等待数据全部传输完成,然后继续仿真操作。此过程不需要等待全部节点通信结束,通过非阻塞通信、重叠通信与计算阶段提高并行计算的效率。
在NEST上使用稀疏交换之前需要先调用Setcomm(type)函数,其中的参数可以设置,从而启用不同的通信机制,如果不调用此函数则默认通信为NEST原本通信模式。
在使用稀疏交换之前先进行神经元重分布操作,减少本节点神经元到其他节点的连接,由于稀疏SNN模型每一轮神经元产生的脉冲比较稀少,因此减少了节点到节点通信的发生,并且只需要发送目标进程所需的脉冲数据,一定程度上解决了NEST集体通信带来的通信能耗可扩展性差的问题。
3 实验结果与分析 3.1 实验案例选择本文选择以下2个实验案例进行分析:
1)皮质微电路SNN模型
此案例基于POTJANS等提出的皮质微电路(Cortical Microcircuit,CM)模型[20]。CM模型网络包含4层,每层由抑制性和兴奋性神经元群组成,分为8个群体,共7.7万个神经元和3亿突触。神经元类型为iaf_psc_exp,所有连接均为静态突触,连接规则为fixed_total_number,另有8个泊松和对应的神经元群全连接。此案例在生物学上比较合理地模拟了大脑皮层的神经活动,为了验证网络稀疏性对于SNN分布式计算的好处,将该模型的神经元和突触缩放至0.1和0.02,以0.1 ms的时间步长仿真200 ms。
2)平衡随机网络模型
在此案例中,平衡随机网络模型的神经元被分成2个种群,分别由400个兴奋性神经元和100个抑制性神经元构成,每个神经元的固定入度为5,因此,共有2 500个突触。神经元类型为iaf_psc_alpha,所有连接均为静态突触,连接规则为fixed_indegree,1个泊松和所有神经元连接。将该模型分别在类脑平台上以0.1 ms的时间步长仿真200 ms。
3.2 实验平台本文选取由28块PYNQ-Z2组成的高性能异构类脑平台,每个节点包括PS(Process System)端的ARM A9双核处理器系统和1个PL(可编程逻辑)端的FPGA器件,物理内存512 MB。节点之间使用1 000 Mb/s网络带宽的以太网进行通信,采用TCP/IP协议。
3.3 实验内容上述2种模型都是Python编写的NEST案例,本文调用NEST的内核(C++实现)对SNN进行仿真,主要特征是采用时间步驱动,并行通信使用MPI库。
对模型进行时间统计:1)计算时间是指每个节点所有神经元顺序状态更新所花时间;2)通信时间是指节点通信启动到数据接收完成所花的时间;3)仿真时间是指完成仿真所花的全部时间,包括计算时间和通信时间;4)通信数据量是指MPI函数在200 ms仿真时间内所有节点实际发送的全部数据字节量(unsigned int型)。
3.4 结果与分析 3.4.1 神经元重分布分别测试应用神经元重分布算法和循环分布算法的交换数据量和神经元到进程的数量,通信模式均采用NEST默认通信机制。如图 10(a)所示,在应用ReLOC算法后,神经元到进程的数量平均减少约20%,但是由于NEST的通信机制为集体通信,无法利用稀疏连接带来的好处,因此交换的数据量并未减少,如图 10(b)所示。
![]() |
Download:
|
图 10 重分布和循环分布算法实验结果对比 Fig. 10 Comparison of experimental results by relocation and cyclic allocation algorithms |
使用重分布稀疏交换方法(ReL-SE)和原版本NEST模式运行3.1节的2个实验案例,这2个案例对于仅使用静态突触的稀疏性SNN网络有比较好的代表性。分别使用4、8、16、28个节点进行仿真,运行结果如图 11和图 12所示。可以发现,对于稀疏SNN模型,在通信数据量大幅减少的情况下,通信时间和仿真时间与原版本相差不大,这就使得通信能耗大幅减少。如图 11所示,在皮质微电路模型中,由于起初神经元脉冲比较密集,导致发送缓冲区一开始就会非常大,因此后续通信数据的浪费更加明显,在28个节点上的仿真结果表明,使用重分布稀疏交换方法的通信能耗相比NEST模式减少约98.63%。由图 11(a)和图 12(a)可以看出,当节点较少时,NEST模式的仿真时间少于重分布稀疏交换方法,然而节点继续增加,NEST模式的仿真时间却呈快速上升趋势。与此相应,通信时间也在快速接近,可以预见的是,节点的扩张有利于稀疏通信。由图 11(c)和图 12(c)可以看出,NEST原本通信数据量随着节点的增加呈现快速上升趋势,而稀疏交换的数据量却缓慢增长,由此可见,同时配后稀疏交换能够大幅降低通信能耗。
![]() |
Download:
|
图 11 皮质微电路模型运行结果 Fig. 11 Running result of CM model |
![]() |
Download:
|
图 12 平衡随机网络模型运行结果 Fig. 12 Running result of balanced stochastic network model |
如图 13所示,随着节点的增加,ReLOC算法花费时间越来越少,这是因为节点的增加导致每个节点上所能容纳的神经元减少,因此在算法循环进行神经元匹配时,突触后神经元位于节点神经元集的个数的计算次数大幅减少。
![]() |
Download:
|
图 13 ReLOC算法耗时 Fig. 13 Time consuming of ReLOC algorithm |
由于神经元重分布是仿真前一次性消耗的时间,因此随着仿真时间的增加,ReLOC所需代价逐渐降低。所以,节点和仿真时间与ReLOC算法的代价成反比,使得代价最终可以忽略不计。
4 结束语NEST循环分配导致联系紧密的神经元易产生分离。针对该问题,本文通过实现神经元的重分布,使联系紧密的神经元更容易分布到同一节点,使进程间的通信更加稀疏。同时,对NEST本身的通信机制进行改进,利用稀疏交换思想大幅减少通信数据量,并配合ReLOC算法提高通信效率。本文在使用重分布稀疏交换方法时只需要调用2个函数来启动使用,与原版本NEST的用户交互相比并未发生很大的变化,此方法的效果随着节点增多进一步明显,而实现代价随节点和仿真时间的增加逐渐减少。后续将通过对神经元进行更有效的分配,进一步缩短通信时间。同时,由于本文算法对于拥有STDP突触的案例效果不佳,因此下一步也将考虑2种突触的平衡性优化神经元重分布算法。
[1] |
MARCUS G. Deep learning: a critical appraisal[EB/OL]. (2018-01-02)[2021-02-12]. https://arxiv.org/ftp/arxiv/papers/1801/1801.00631.pdf.
|
[2] |
FURBER S B, LESTER D R, PLANA L A, et al. Overview of the SpiNNaker system architecture[J]. IEEE Transactions on Computers, 2013, 62(12): 2454-2467. DOI:10.1109/TC.2012.142 |
[3] |
ULLMAN S. Using neuroscience to develop artificial intelligence[J]. Science, 2019, 363(6428): 692-693. DOI:10.1126/science.aau6595 |
[4] |
MARR B, DEGNAN B, HASLER P, et al. Scaling energy per operation via an asynchronous pipeline[J]. IEEE Transactions on Very Large Scale Integration Systems, 2013, 21(1): 147-151. DOI:10.1109/TVLSI.2011.2178126 |
[5] |
FURBER S B, GALLUPPI F, TEMPLE S, et al. The SpiNNaker project[J]. Proceedings of the IEEE, 2014, 102(5): 652-665. DOI:10.1109/JPROC.2014.2304638 |
[6] |
DAVIES M, SRINIVASA N, LIN T H, et al. Loihi: a neuromorphic manycore processor with on-chip learning[J]. IEEE Micro, 2018, 38(1): 82-99. DOI:10.1109/MM.2018.112130359 |
[7] |
MEROLLA P A, ARTHUR J V, ALVAREZ-ICAZA R, et al. A million spiking-neuron integrated circuit with a scalable communication network and interface[J]. Science, 2014, 345(6197): 668-673. DOI:10.1126/science.1254642 |
[8] |
MORRISON A, MEHRING C, GEISEL T, et al. Advancing the boundaries of high-connectivity network simulation with distributed computing[J]. Neural Computation, 2005, 17(8): 1776-1801. DOI:10.1162/0899766054026648 |
[9] |
GEWALTIG M O, DIESMANN M. NEST(NEural simulation tool)[J]. Scholarpedia, 2007, 2(4): 1430. DOI:10.4249/scholarpedia.1430 |
[10] |
NAGESWARAN J M, DUTT N, KRICHMAR J L, et al. Efficient simulation of large-scale spiking neural networks using CUDA graphics processors[C]//Proceedings of 2009 International Joint Conference on Neural Networks. Atlanta, USA: [s. n. ], 2009: 2145-2152.
|
[11] |
CARLOS F M, COCA D, RICHMOND P. Communication sparsity in distributed spiking neural network simulations to improve scalability[J]. Frontiers in Neuroinformatics, 2019, 13: 19. DOI:10.3389/fninf.2019.00019 |
[12] |
URGESE G, BARCHI F, MACII E, et al. Optimizing network traffic for spiking neural network simulations on densely interconnected many-core neuromorphic platforms[J]. IEEE Transactions on Emerging Topics in Computing, 2018, 6(3): 317-329. DOI:10.1109/TETC.2016.2579605 |
[13] |
BALAJI A, DAS A, WU Y F, et al. Mapping spiking neural networks to neuromorphic hardware[J]. IEEE Transactions on Very Large Scale Integration(VLSI) Systems, 2020, 28(1): 76-86. DOI:10.1109/TVLSI.2019.2951493 |
[14] |
XIANG Y D, MENG J Y. A cross-layer based mapping for spiking neural network onto network on chip[J]. International Journal of Parallel, Emergent and Distributed Systems, 2018, 33(5): 526-544. DOI:10.1080/17445760.2017.1399206 |
[15] |
VAN ALBADA S J, ROWLEY A G, SENK J, et al. Performance comparison of the digital neuromorphic hardware SpiNNaker and the neural network simulation software NEST for a full-scale cortical microcircuit model[J]. Frontiers in Neuroscience, 2018, 12: 291. DOI:10.3389/fnins.2018.00291 |
[16] |
MAASS W. Networks of spiking neurons: the third generation of neural network models[J]. Neural Networks, 1997, 10(9): 1659-1671. DOI:10.1016/S0893-6080(97)00011-7 |
[17] |
BRETTE R, RUDOLPH M, CARNEVALE T, et al. Simulation of networks of spiking neurons: a review of tools and strategies[J]. Journal of Computational Neuroscience, 2007, 23(3): 349-398. DOI:10.1007/s10827-007-0038-6 |
[18] |
KASS R E, AMARI S I, ARAI K, et al. Computational neuroscience: mathematical and statistical perspectives[J]. Annual Review of Statistics and Its Application, 2018, 5(3): 183-214. |
[19] |
HOEFLER T, TRAFF J L. Sparse collective operations for MPI[C]//Proceedings of IEEE International Symposium on Parallel and Distributed Processing. Washington D.C., USA: IEEE Press, 2009: 1-8.
|
[20] |
POTJANS T C, DIESMANN M. The cell-type specific cortical microcircuit: relating structure and activity in a full-scale spiking network model[J]. Cerebral Cortex, 2014, 24(3): 785-806. DOI:10.1093/cercor/bhs358 |