class CodeGenerator::CUDA::PresynapticUpdateStrategy::PostSpan

Overview

Postsynaptic parallelism. More…

#include <presynapticUpdateStrategy.h>

class PostSpan: public CodeGenerator::CUDA::PresynapticUpdateStrategy::Base
{
public:
    // methods

    virtual size_t getNumThreads(const SynapseGroupInternal& sg) const;
    virtual bool isCompatible(const SynapseGroupInternal& sg) const;
    virtual bool shouldAccumulateInRegister(const SynapseGroupInternal& sg, const Backend& backend) const;
    virtual bool shouldAccumulateInSharedMemory(const SynapseGroupInternal& sg, const Backend& backend) const;

    virtual void genCode(
        CodeStream& os,
        const ModelSpecInternal& model,
        const SynapseGroupInternal& sg,
        const Substitutions& popSubs,
        const Backend& backend,
        bool trueSpike,
        BackendBase::SynapseGroupHandler wumThreshHandler,
        BackendBase::SynapseGroupHandler wumSimHandler
        ) const;
};

Inherited Members

public:
    // methods

    virtual size_t getNumThreads(const SynapseGroupInternal& sg) const = 0;
    virtual bool isCompatible(const SynapseGroupInternal& sg) const = 0;
    virtual bool shouldAccumulateInRegister(const SynapseGroupInternal& sg, const Backend& backend) const = 0;
    virtual bool shouldAccumulateInSharedMemory(const SynapseGroupInternal& sg, const Backend& backend) const = 0;

    virtual void genCode(
        CodeStream& os,
        const ModelSpecInternal& model,
        const SynapseGroupInternal& sg,
        const Substitutions& popSubs,
        const Backend& backend,
        bool trueSpike,
        BackendBase::SynapseGroupHandler wumThreshHandler,
        BackendBase::SynapseGroupHandler wumSimHandler
        ) const = 0;

Detailed Documentation

Postsynaptic parallelism.

Methods

virtual size_t getNumThreads(const SynapseGroupInternal& sg) const

Get the number of threads that presynaptic updates should be parallelised across.

virtual bool isCompatible(const SynapseGroupInternal& sg) const

Is this presynaptic update strategy compatible with a given synapse group?

virtual bool shouldAccumulateInRegister(const SynapseGroupInternal& sg, const Backend& backend) const

Are input currents emitted by this presynaptic update accumulated into a register?

virtual bool shouldAccumulateInSharedMemory(const SynapseGroupInternal& sg, const Backend& backend) const

Are input currents emitted by this presynaptic update accumulated into a shared memory array?

virtual void genCode(
    CodeStream& os,
    const ModelSpecInternal& model,
    const SynapseGroupInternal& sg,
    const Substitutions& popSubs,
    const Backend& backend,
    bool trueSpike,
    BackendBase::SynapseGroupHandler wumThreshHandler,
    BackendBase::SynapseGroupHandler wumSimHandler
    ) const

Generate presynaptic update code.