Remote Communication¶
Wraps remote communication for Arbor. This is meant to facilitate sending data _to_ Arbor, not for pulling data into Arbor from the outside, which is done automatically. If you are developing a bridge between Arbor and another simulator that is written in pure Python, this is the correct place. In all other cases it is likely not what you are looking for. For a description of the protocol see
Control Messages¶
- class arbor.msg_abort¶
Request termination, giving the reason as a message (< 512 bytes)
- msg_abort(reason)¶
- class arbor.msg_epoch¶
Commence next epoch, giving the open interval \([from, to)\) with times in ms.
- msg_epoch(from, to)¶
- class arbor.msg_done¶
Conclude simulation, giving the final time \(t_{\mathrm{final}}\) in ms.
- msg_done(tfinal)¶
- arbor.exchange_ctrl(message, comm)¶
Send
message
to all peers in the MPI intercommcomm
and receive the unanimous answer.message
must be one of the typesmsg_*
above.
Spike Exchange¶
- class arbor.arb_spike¶
- gid¶
Global id of the spiking cell, must fit in an unsigned 32b integer.
gid
must be unique in the external network.
- lid¶
Local id on the spiking cell, must fit in an unsigned 32b integer. This
lid
describes which logical part of the cellgid
emitted the spike. If the external simulation doesn’t distinguish betwenn different sources on the same cell, always set this to zero.
- time¶
Time at which the occured.
- arbor.gather_spikes(spikes, comm)¶
Sends a buffer of spikes over
comm
receiving back the concatenated result of all calling MPI tasks in Arbor. This is a collective operation; each MPI task on the remote side must call it simultaneously with its _local_ part of the spikes to send.