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_null

Empty message, possibly used as a keep-alive signal.

msg_null()
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 intercomm comm and receive the unanimous answer. message must be one of the types msg_* 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 cell gid 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.