00001 #ifndef STDISTRIBUTEDINCOMINGSPIKESCHEDULER_H_ 00002 #define STDISTRIBUTEDINCOMINGSPIKESCHEDULER_H_ 00003 00004 #include "PropagatedSpikeBuffer.h" 00005 #include "MPIInputBuffer.h" 00006 #include "GlobalSingleTargetDelayMap.h" 00007 #include "DistributedIncomingSpikeScheduler.h" 00008 00010 00016 class STDistributedIncomingSpikeScheduler : public DistributedIncomingSpikeScheduler 00017 { 00018 public: 00020 /* 00021 * Constructs an instance of STDistributedIncomingSpikeScheduler. 00022 * 00023 * \param inputBuffers Reference to an array of the MPI input buffers that are to be scaned for incoming spikes. 00024 * 00025 * \param globalDelayMap Reference to the global delay map which contains the delays and target groups for each spike source. 00026 * 00027 * \param spikeBuffer Destination buffer of the processing. For each incoming spike a set of target groups are inserted in the appropriate place with respect to the delay. 00028 * 00029 * \param cycleSteps Number of simulation steps in one simulation cycle (usualy equal to minimum synapse delay). 00030 */ 00031 STDistributedIncomingSpikeScheduler( 00032 MPIInputBufferVector &inputBuffers, 00033 GlobalSingleTargetDelayMap &globalDelayMap, 00034 PropagatedSpikeBuffer &spikeBuffer, 00035 int cycleSteps); 00036 00037 virtual ~STDistributedIncomingSpikeScheduler(); 00038 00040 00043 virtual void processMPIInputSpikeBuffers(); 00044 00045 protected: 00046 00047 PropagatedSpikeBuffer & spikeBuf; 00048 00049 MPIInputBufferVector & mpiInBuffers; 00050 00051 GlobalSingleTargetDelayMap &delayMap; 00052 00053 int _cycleSteps; 00054 }; 00055 00056 #endif /*STDISTRIBUTEDINCOMINGSPIKESCHEDULER_H_*/