Conversation
Change VarLocation to HOST for CPU
Implementation of the Array class and the Preference class
Modified the Single Threaded Neuron update implementation to accommodate parallelism.
…oens't work on windows
Ispc build system
Create seperate ISPC file for neuron update kernel
- streamCreator is used to create two streams, one for .ispc and the other for .cc - Introduced the build method to compile all generated ISPC files and link them into a shared library, handling all modules and enabling error logging. This method is incomplete. - Implemented getRestrictKeyword, conditional compilation for platform-specific code, and provided genMakefilePreamble, genMakefileLinkRule, and genMakefileCompileRule to enable builds and file generation. -backend name typo has been corrected in optimiser.cc -Known issues: Occasional inconsistent file generation and missing DLL error (code 126) during runtime.
This commit removes the previously implemented build method. I guess separate handling was redundant and not required in the first place. - Code stream now handles the cc files too - Object files have been added to MakefilePreamle - Dependency generation rule has been added to MakefileCompileRule
* use functionality to add seperate ISPC objects
Improve makefile generation
1. Fixing CodeStream usage to correctly use the provided 'os' stream for C++ code while creating separate streams only for ISPC files. 1. C++ code uses the os stream while codestream is used for ispc only 2. The auto keyword from the Single Threaded CPU backend has been replaced with the uniform keyword 3. C++ wrapper functions have been implemented that call the corresponding ISPC functions
Structs definitions have been moved from ISPC to C++
return type.getname() for getMergedGroupFieldHostTypeName
…alidates previous ones
* ISPC-generated headers have ISPC at the end * t needs to be uniform
This reverts commit bbbb3e5.
- Added method to find out if ISPC is installed and if so then add it to the list of backends
- create the ispc backend file in pygenn similar to the single threaded cpu backend file
- accommodate the ISPC backend
- Add ISPC compiler detection and build target to main Makefile
- Fix namespace reference from Utils::updateHash to GeNN::Utils::updateHash - Resolves linker error: unresolved external symbol updateHash
- Added dendritic delay, synapse dynamics and postsynaptic code to genSynapseUpdate - Implemented genPostsynapticUpdate - These implementations follow the Single threaded CPU backend but with parallelization for loops over neurons.
- Added custom update method similar to the single threaded CPU backend but with parallelization - Added genWriteBackReductions methods required for custom update implementation - Added missing includes in genDefinitionsPreamble - removed uniform keyword usage from MergedCustomUpdateInitGroup reference.
- Excluded ispc backend from tests with batch_size > 1
- getUniformKeyword added to backendBase will return an empty string for all other backends and the uniform keyword for ISPC. - To handle uniform type conversion for reductions in ISPC, reduce_add and reduce_max is used - ISPC uses max instead fmax and so on, these have been declared too
…otOffset - resolves one of the varying to uniform error in neuronUpdate.ispc file
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR introduces an ISPC backend for GeNN as part of Google Summer of Code 2025.