Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
263 commits
Select commit Hold shift + click to select a range
b391728
cunningly use $(OutDir) as linker input path for finding GeNN libraries
neworderofjamie Dec 20, 2023
237d799
updated more persistent naming deeper into code generator and python
neworderofjamie Dec 20, 2023
77f7708
updated feature test
neworderofjamie Dec 20, 2023
0609e11
fixed up feature test using ``size`` property
neworderofjamie Dec 20, 2023
48791ed
re-enable lazy compilation
neworderofjamie Dec 21, 2023
85ba06f
add GeNN libraries as extension dependencies so no need to clean
neworderofjamie Jan 2, 2024
947cd75
Delay tidy - axonal delay no longer always needs to be passed to addS…
neworderofjamie Jan 2, 2024
6308e36
fixed unit test
neworderofjamie Jan 2, 2024
a3f182c
jenkins tweaks
neworderofjamie Jan 2, 2024
19add8d
updated PyGeNN wrapper
neworderofjamie Jan 2, 2024
e6b7a79
updated user projects
neworderofjamie Jan 2, 2024
59ec134
update feature tests
neworderofjamie Jan 2, 2024
9e4f833
added missing CI dependency
neworderofjamie Jan 2, 2024
62223fa
remove six dependency
neworderofjamie Jan 2, 2024
face51e
fixed coverage builds of PyGeNN
neworderofjamie Jan 2, 2024
cae2995
fixed some more feature tests
neworderofjamie Jan 2, 2024
e7a4f3e
one more string_types
neworderofjamie Jan 2, 2024
b765017
one more test
neworderofjamie Jan 2, 2024
17c6056
removed unnecessary bits of unit test building code
neworderofjamie Jan 2, 2024
6b9d805
WIP changes
neworderofjamie Jan 2, 2024
ef8df71
fixed typo
neworderofjamie Jan 2, 2024
b834333
added missing wrappers around lambdas when creating sparse and toepli…
neworderofjamie Jan 2, 2024
b0b7e8e
removed debug print
neworderofjamie Jan 2, 2024
e35ce0b
further tweaking to spike time handling in neuron kernel
neworderofjamie Jan 3, 2024
19762a6
missing arguments to gennrand_XXX functions
neworderofjamie Jan 3, 2024
5c879b2
fixed typo
neworderofjamie Jan 3, 2024
09c6e10
rename weight update model code strings in C++
neworderofjamie Jan 3, 2024
13edb95
updated python wrapper
neworderofjamie Jan 3, 2024
d8cf827
raise deprecation warnings as ``FutureWarning`` rather than ``Depreca…
neworderofjamie Jan 3, 2024
3ddc705
added test for accessing spike times in neuron code
neworderofjamie Jan 3, 2024
e90fbd1
rename FixedNumberXXX connectivity parameter
neworderofjamie Jan 3, 2024
6fa442b
extended feature test to check spike times read in pre-spike-code
neworderofjamie Jan 3, 2024
c6847ef
speculative fix for SIMT issue causing ST to be written BEFORE update
neworderofjamie Jan 3, 2024
cbbe649
updated some more tests
neworderofjamie Jan 3, 2024
dafd54f
test works but slightly lost by logic of logic :)
neworderofjamie Jan 5, 2024
570da52
recalculate confidence interval for connect init test
neworderofjamie Jan 5, 2024
83ad765
switch ModelSpec::addSynapseGroup, ModelSpec::addCurrentSource and Mo…
neworderofjamie Jan 5, 2024
51f5191
fixed up unit tests
neworderofjamie Jan 5, 2024
bd69df6
update PyGeNN wrapper
neworderofjamie Jan 5, 2024
be5a676
tidied potjans userproject
neworderofjamie Jan 5, 2024
a88a2c1
expose spike times to PyGeNN
neworderofjamie Jan 5, 2024
025bca0
MNIST mushroom body classifier
neworderofjamie Jan 5, 2024
2f02b60
removed ``name_types`` from create_XXX_model function
neworderofjamie Jan 5, 2024
ca08299
removed some legacy warnings
neworderofjamie Jan 5, 2024
20be5dc
enforced readonlyness of KERNELG variables and postsynaptic stuff in …
neworderofjamie Jan 5, 2024
e676898
removed legacy from tests
neworderofjamie Jan 5, 2024
7df3cc5
fixed typo
neworderofjamie Jan 5, 2024
aabe6da
fixed more typos
neworderofjamie Jan 5, 2024
d967d06
more userproject work
neworderofjamie Jan 5, 2024
475d1e0
removed unnecessary method
neworderofjamie Jan 5, 2024
6010f00
setup tweaks
neworderofjamie Jan 8, 2024
ce29873
copy_extension_to_source required for editable
neworderofjamie Jan 8, 2024
9068335
fixed broken "depends"
neworderofjamie Jan 8, 2024
d46c134
Revert "fixed broken "depends""
neworderofjamie Jan 9, 2024
5e008b9
Revert "copy_extension_to_source required for editable"
neworderofjamie Jan 9, 2024
ccb8d6f
Revert "setup tweaks"
neworderofjamie Jan 9, 2024
c2dc098
don't try and be smart - do what PyTorch does :)
neworderofjamie Jan 9, 2024
ef4d7d7
small tidy
neworderofjamie Jan 9, 2024
252fda8
* restore windows trailing slash
neworderofjamie Jan 9, 2024
ec18b5b
backend-specific array classes can be opaque
neworderofjamie Jan 9, 2024
584602d
fixed typo and moved to anonymous namespace
neworderofjamie Jan 9, 2024
0f42891
* Added backend-specific state object to ``Runtime``
neworderofjamie Jan 9, 2024
4811deb
NCCL fixes
neworderofjamie Jan 10, 2024
7cd3582
missing structs and functions for host reduction merged groups
neworderofjamie Jan 10, 2024
ba01622
fixed binding typos
neworderofjamie Jan 10, 2024
7ca0b7e
added option to never rebuild code
neworderofjamie Jan 10, 2024
b01fe08
``timepoint`` not tokenized correctly
neworderofjamie Jan 10, 2024
75cca18
fixed bug in environment provided to event threshold conditions
neworderofjamie Jan 10, 2024
8d9d081
expose get_var_access_dim in PyGeNN
neworderofjamie Jan 16, 2024
01195db
renamed InSyn[Var]Location to OutputLocation in synapse group
neworderofjamie Jan 17, 2024
8a4cf1e
renamed excessively long getXXXModel() functions to getModel() when t…
neworderofjamie Jan 17, 2024
e8799a1
fix reference to renamed method
neworderofjamie Jan 17, 2024
04840f3
fixed missing rename in PyGeNN
neworderofjamie Jan 17, 2024
2b368ed
Revert breaking of postsynaptic output via shared memory
neworderofjamie Jan 24, 2024
6e3f76b
selecting CUDA device 0 is a much more sensible option
neworderofjamie Jan 24, 2024
7347468
support for allocating spike recording buffers zero-copy
neworderofjamie Jan 29, 2024
b6b0b56
better comment and exposed spike recording to PyGeNN
neworderofjamie Jan 30, 2024
51cf4a5
require argument for superspike demo
neworderofjamie Jan 30, 2024
3fbcbf8
updated deprecated options in MNIST classifier
neworderofjamie Jan 30, 2024
b59cb29
remvoed bitmask synapse dynamics test as that isn't supported
neworderofjamie Jan 30, 2024
635dea7
actually use bitmask connectivity in event propagation test
neworderofjamie Jan 30, 2024
b55fa0c
fixed bitmask code generation for SIMT and CPU
neworderofjamie Jan 30, 2024
43e590b
renamed ``SpanType`` to ``ParallelismHint``
neworderofjamie Jan 30, 2024
0670ad9
switched the word-packed bitmask optimisation from a global preferenc…
neworderofjamie Jan 30, 2024
8a62462
added feature test of propagation through word-packed bitmask connect…
neworderofjamie Jan 30, 2024
a795582
use same memory layout (bits padded to word boundary) whatever Parall…
neworderofjamie Jan 30, 2024
102a2ac
fixed warning
neworderofjamie Jan 31, 2024
92c4294
staticpulsegraded totally broken
neworderofjamie Feb 1, 2024
ec79876
fixed missing path in VS project
neworderofjamie Feb 14, 2024
319085e
fixed incorrect parsing of null statement e.g. while(false);
neworderofjamie Feb 17, 2024
5a6c813
add backend-specific CLZ
neworderofjamie Feb 17, 2024
960d8d2
removed comments
neworderofjamie Feb 17, 2024
1a049a9
added EGP references to custom connectivity update
neworderofjamie Feb 17, 2024
aa72c40
expose atomic or
neworderofjamie Feb 17, 2024
afe0260
exposed egp references to PyGeNN
neworderofjamie Feb 19, 2024
1d1fc4e
expose row length and stride to custom connectivity updates
neworderofjamie Feb 19, 2024
6ac272b
exposed basic uniform RNG output i.e. 32-bit of randomness
neworderofjamie Feb 19, 2024
3071db4
fixed nasty bug
neworderofjamie Feb 19, 2024
1dfb1e2
missing functionality to make EGP references to custom connectivity u…
neworderofjamie Feb 20, 2024
10dcce1
missing wrapper and trampoline for CustomConnectivityUpdateBase::getE…
neworderofjamie Feb 20, 2024
b08e612
no idea what I was thinking when I broke add_synapse!
neworderofjamie Feb 20, 2024
8e3e987
exposing row length isn't THAT easy! Pull function + device pointer r…
neworderofjamie Feb 20, 2024
0f53e93
fixed nasty bug in re-ordering of initialisation groups in CUDA backend
neworderofjamie Feb 20, 2024
1262948
HalfNormal distribution - somehow adding to the C++ is easiest solution
neworderofjamie Feb 20, 2024
2b5c18b
correctly map 64-bit GeNN types to numpy
neworderofjamie Feb 20, 2024
3b4e553
hacky sign change for halfnormal
neworderofjamie Feb 20, 2024
d9b3db2
Revert "hacky sign change for halfnormal"
neworderofjamie Feb 20, 2024
71c7bd3
Revert "HalfNormal distribution - somehow adding to the C++ is easies…
neworderofjamie Feb 20, 2024
00ea257
fixed very nasty bug in SIMT backend
neworderofjamie Feb 23, 2024
c669844
replaced std::unordered_map and std::unordered_set with std::map and …
neworderofjamie Feb 29, 2024
39bd886
used correct typedefs in unit tests rather than raw std::unordered_maps
neworderofjamie Feb 29, 2024
63c6744
used typedefs in pybind11 wrapper rather than raw std::unordered_maps
neworderofjamie Feb 29, 2024
19d8708
fixed broken thread synchronization when copying spikes from shared t…
neworderofjamie Feb 29, 2024
072997f
fixed typo
neworderofjamie Feb 29, 2024
47f97c6
fixed typo in typo
neworderofjamie Feb 29, 2024
e5529f4
first stab at PyDoc setup
neworderofjamie Jan 31, 2024
7c93e2e
basic documentation structure
neworderofjamie Jan 31, 2024
0d53631
hide internal modules and add __all__ so module structure is cleaner
neworderofjamie Jan 31, 2024
a46f984
started configuring documentation structure
neworderofjamie Jan 31, 2024
8128207
remove mock
neworderofjamie Jan 31, 2024
de08363
rough documentation structure
neworderofjamie Jan 31, 2024
86b3ddd
documentation porting
neworderofjamie Jan 31, 2024
b3067bc
directly import from PyGeNN in feature tests
neworderofjamie Feb 1, 2024
731316a
more documentation
neworderofjamie Feb 1, 2024
4c0fda4
correctly enabled type hints and started implementing magic to remove…
neworderofjamie Feb 1, 2024
0609779
WIP documentation
neworderofjamie Feb 1, 2024
e7f54c1
upgrading docs, tranferred basic custom connectivity update from gith…
neworderofjamie Feb 2, 2024
c22f2ae
postsynaptic models
neworderofjamie Feb 2, 2024
05386eb
moved documentation for create_XX into python
neworderofjamie Feb 4, 2024
1aff71f
turned user projects into sphinx-gallery
neworderofjamie Feb 5, 2024
ede1004
re-named and modified potjans userproject to work with sphinx-gallery…
neworderofjamie Feb 5, 2024
7bdefc6
more uiser project fiddling
neworderofjamie Feb 6, 2024
0d4b0ca
lots of documenting
neworderofjamie Feb 6, 2024
1a838de
lots of documenting
neworderofjamie Feb 6, 2024
44dc069
homepage
neworderofjamie Feb 6, 2024
90a80e5
more documenting
neworderofjamie Feb 6, 2024
ac7aafa
unhide _genn_groups
neworderofjamie Feb 6, 2024
d5c57f4
more docs
neworderofjamie Feb 6, 2024
cd615ed
unhide genn_model but exclude from sphinx-apidoc
neworderofjamie Feb 6, 2024
7d6fb33
removed old module-level doc strings
neworderofjamie Feb 6, 2024
d1fc683
:no-index: autodoc in body of text
neworderofjamie Feb 6, 2024
7805826
more documenting
neworderofjamie Feb 6, 2024
944bdbc
local copy of pybind11-mkdoc
neworderofjamie Feb 8, 2024
a54dd11
handle doxygen //! and /*!
neworderofjamie Feb 8, 2024
cd980e1
don't reflow comment text and don't bother including GeNN in document…
neworderofjamie Feb 8, 2024
f08ad9d
doc string header and script to generate
neworderofjamie Feb 8, 2024
cb01ccf
fix parsing of closing */
neworderofjamie Feb 8, 2024
029926b
remove leading spaces on a line-by-line basis
neworderofjamie Feb 8, 2024
9ed220c
doc strings are a dependency for all pybind11 modules
neworderofjamie Feb 8, 2024
09437c5
started hooking up DOC macros to pybind11 bindings
neworderofjamie Feb 8, 2024
78f764f
tiny bit of model tidying and fix some comments to ease parsing
neworderofjamie Feb 8, 2024
4b91157
added commented out regexes from hacky version of mkdoc to fiddle with
neworderofjamie Feb 8, 2024
cfd5d81
fixed conversion of block maths to markdown
neworderofjamie Feb 12, 2024
fac8f4a
use macro to reduce wrapping boilerplate of C++ models
neworderofjamie Feb 12, 2024
9413d89
hide backend internals
neworderofjamie Feb 13, 2024
fd106e9
generate CUDA doc strings into seperate file
neworderofjamie Feb 13, 2024
4073b9b
handle doxygen syntax for comments after members
neworderofjamie Feb 13, 2024
964e5e8
tweak sidebar width
neworderofjamie Feb 13, 2024
1f3e3d2
wrap enums
neworderofjamie Feb 13, 2024
54a56b7
hacky way to remove deprecated methods/functions from docs
neworderofjamie Feb 13, 2024
e4f038e
also correctly handle the OTHER sort of block maths
neworderofjamie Feb 13, 2024
c3bc555
hide some internal bits of model pre-processor
neworderofjamie Feb 14, 2024
8019a31
hide per-group internal methods for loading and unloading
neworderofjamie Feb 14, 2024
3812fd3
disabled hacky deprecation-detecting functionality as it hides proper…
neworderofjamie Feb 14, 2024
dd0a3b4
``GeNNModel`` documentation
neworderofjamie Feb 14, 2024
c491a6b
document backend base to get preferences
neworderofjamie Feb 15, 2024
0a56817
Documentation
neworderofjamie Feb 15, 2024
bfdeb8a
manually add some whitespace around docstring lists to ease conversion
neworderofjamie Feb 15, 2024
6393c41
updated docstrings
neworderofjamie Feb 15, 2024
bbd34b4
more whitespace fixing
neworderofjamie Feb 15, 2024
a5d6b2c
* split VarLocation into VarLocation and VarLocationAttribute
neworderofjamie Feb 15, 2024
2c08d09
updated docstring
neworderofjamie Feb 15, 2024
9244b8e
directly document VarLocation
neworderofjamie Feb 15, 2024
648377d
Made some sometic fixes and filled in a few details.
tnowotny Feb 16, 2024
5b91ba7
add extra dependency lists for testing, docs etc
neworderofjamie Feb 16, 2024
d9ef7ab
Merge pull request #616 from genn-team/pydoc-thomas
neworderofjamie Feb 16, 2024
45fb8f3
tqdm
neworderofjamie Feb 16, 2024
96ce942
fix bad rebase
neworderofjamie Feb 21, 2024
867bd4a
updated doc strings
neworderofjamie Feb 21, 2024
de51890
updated docstrings
neworderofjamie Feb 21, 2024
f187417
fixed doc strings
neworderofjamie Feb 22, 2024
55f4acb
bit more upgrading text
neworderofjamie Feb 22, 2024
8589473
installation instructions
neworderofjamie Feb 22, 2024
1ae77b4
tweaks
neworderofjamie Feb 22, 2024
fb63734
EGPs
neworderofjamie Mar 4, 2024
90ee102
removed ``Kernel`` var initialisation snippet - no longer supported
neworderofjamie Mar 4, 2024
8d12892
hooked up some free function doc strings
neworderofjamie Mar 4, 2024
4116c12
fixed some warnings
neworderofjamie Mar 4, 2024
1ab6a2c
documentation of enums
neworderofjamie Mar 4, 2024
c666487
new docstrings
neworderofjamie Mar 4, 2024
1d087ce
* use create_var_ref documentation
neworderofjamie Mar 4, 2024
199410c
much nicer to have unit tests in same solution as GeNN itself
neworderofjamie Mar 4, 2024
1bb2767
rename SynapseGroup::getConnectivityInitialiser to SynapseGroup::getS…
neworderofjamie Mar 4, 2024
d7117f7
* Made ceilDivide and padSize templated with SFINAE to restrict to an…
neworderofjamie Mar 4, 2024
0751bef
exposed ModelSpecInternal
neworderofjamie Mar 4, 2024
87af2e6
wrapped a bunch more properties and removed a bunch that aren't usefu…
neworderofjamie Mar 4, 2024
ce0ede5
also expose CustomUpdateBase
neworderofjamie Mar 4, 2024
3ea69f5
ModelSpec tidy
neworderofjamie Mar 4, 2024
c886f0c
Revert "removed ``Kernel`` var initialisation snippet - no longer sup…
neworderofjamie Mar 5, 2024
93fbffc
fixed typo
neworderofjamie Mar 5, 2024
40e1e90
kernel docstrings
neworderofjamie Mar 5, 2024
f35640d
updated doxygen comments
neworderofjamie Mar 5, 2024
3515551
docstrings
neworderofjamie Mar 5, 2024
cd288fa
add ModelSpec to __all__
neworderofjamie Mar 5, 2024
3dcdd2d
type annotation etc for
neworderofjamie Mar 5, 2024
c0be0b0
added mixin docstrings
neworderofjamie Mar 6, 2024
73aa04c
changed theme and fiddled
neworderofjamie Mar 6, 2024
6f5bd6a
exposed CustomUpdateBase
neworderofjamie Mar 6, 2024
b544d14
model preprocessor documentation
neworderofjamie Mar 6, 2024
d96fd54
doxygen commenting
neworderofjamie Mar 6, 2024
aa33c3d
updated docstrings
neworderofjamie Mar 5, 2024
5d2204e
bit of renaming
neworderofjamie Mar 6, 2024
35c5ef1
updated docstrings
neworderofjamie Mar 5, 2024
a2d889f
missing comment
neworderofjamie Mar 6, 2024
9efa651
updated docstrings
neworderofjamie Mar 5, 2024
e119ff2
fiddling
neworderofjamie Mar 6, 2024
5175116
updated docstrings
neworderofjamie Mar 5, 2024
63ecb80
more documenting
neworderofjamie Mar 6, 2024
086a845
first pass at nbsphinx tutorials
neworderofjamie Mar 7, 2024
2c95ac6
Created using Colaboratory
neworderofjamie Mar 7, 2024
30cc286
Created using Colaboratory
neworderofjamie Mar 7, 2024
7b47e44
Created using Colaboratory
neworderofjamie Mar 7, 2024
96c0b75
Created using Colaboratory
neworderofjamie Mar 7, 2024
2933d69
Created using Colaboratory
neworderofjamie Mar 7, 2024
88392ff
Created using Colaboratory
neworderofjamie Mar 7, 2024
6dc31be
Created using Colaboratory
neworderofjamie Mar 7, 2024
fcc96ec
Created using Colaboratory
neworderofjamie Mar 7, 2024
99b1fc4
formatting of notebook titles
neworderofjamie Mar 7, 2024
2172c9f
notes
neworderofjamie Mar 8, 2024
e167ba5
comments
neworderofjamie Mar 8, 2024
f76db66
updated mkdoc and docstrings
neworderofjamie Mar 8, 2024
8facf6a
switched from standard deprecated module to custom variant which adds…
neworderofjamie Mar 8, 2024
4c9273b
added sphinx callback to skip deprecated
neworderofjamie Mar 8, 2024
5a0bee9
fixed unit tests
neworderofjamie Mar 8, 2024
c7a4dba
removed elderly model definitions
neworderofjamie Mar 8, 2024
d129917
improved STDP model comment
neworderofjamie Mar 18, 2024
fef2d7f
fixed unit tests
neworderofjamie Mar 18, 2024
5955679
doxygen comments for STDP
neworderofjamie Mar 19, 2024
f5da336
doc strings for STDP
neworderofjamie Mar 19, 2024
4ca9ffb
not an align environment
neworderofjamie Mar 19, 2024
d256619
doc strings for STDP
neworderofjamie Mar 19, 2024
4d8cf68
final doxygen fiddle
neworderofjamie Mar 19, 2024
ee735ac
doc strings
neworderofjamie Mar 19, 2024
3adc4bd
added cross-reference to new STDP model
neworderofjamie Mar 19, 2024
bb6b6f8
updated wrapper
neworderofjamie Mar 19, 2024
85fae41
hidden deprecated wrapper
neworderofjamie Mar 19, 2024
0d67945
handle citations
neworderofjamie Mar 19, 2024
7c6fe1a
Merge branch 'model_cull' of https://github.com/genn-team/genn into m…
neworderofjamie Mar 19, 2024
5e73ff3
missing citations
neworderofjamie Mar 19, 2024
773725f
updated feature tests to use ``empty_neuron_model`` rather than "Spik…
neworderofjamie Mar 19, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
51 changes: 13 additions & 38 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,17 @@ properties([buildDiscarder(logRotator(artifactDaysToKeepStr: '',

// All the types of build we'll ideally run if suitable nodes exist
def desiredBuilds = [
["cuda11", "windows"] as Set,
["cuda10", "windows"] as Set,
["cuda9", "windows"] as Set,
["cuda11", "windows"] as Set,
["cuda12", "windows"] as Set,
["amd", "windows"] as Set,
["cuda11", "linux"] as Set,
["cuda10", "linux"] as Set,
["cuda9", "linux"] as Set,
["cuda11", "linux"] as Set,
["cuda12", "linux"] as Set,
["amd", "linux"] as Set,
["cuda11", "mac"] as Set,
["cuda10", "mac"] as Set,
["cuda9", "mac"] as Set,
["cuda11", "mac"] as Set,
["cuda12", "mac"] as Set,
["amd", "mac"] as Set]

//--------------------------------------------------------------------------
Expand Down Expand Up @@ -145,11 +145,6 @@ for(b = 0; b < builderNodes.size(); b++) {
def runTestsCommand = """
rm -f "${outputFilename}"

# Clean GeNN library and build a version of the single-threaded CPU backend with coverage calculation built
make clean COVERAGE=1 1>> "${outputFilename}" 2>&1

make single_threaded_cpu COVERAGE=1 1>> "${outputFilename}" 2>&1

# Clean and build unit tests
cd tests/unit
make clean all COVERAGE=1 1>> "${outputFilename}" 2>&1
Expand All @@ -171,9 +166,9 @@ for(b = 0; b < builderNodes.size(); b++) {
CALL %VC_VARS_BAT%
DEL "${outputFilename}"

msbuild genn.sln /m /t:single_threaded_cpu_backend /verbosity:minimal /p:Configuration=Release
msbuild genn.sln /m /t:single_threaded_cpu_backend /verbosity:quiet /p:Configuration=Release

msbuild tests/tests.sln /m /verbosity:minimal /p:Configuration=Release
msbuild tests/tests.sln /m /verbosity:quiet /p:Configuration=Release

PUSHD tests/unit
unit_Release.exe --gtest_output="xml:test_results_unit.xml"
Expand All @@ -199,22 +194,12 @@ for(b = 0; b < builderNodes.size(); b++) {
${env.PYTHON} -m venv ${WORKSPACE}/venv
. ${WORKSPACE}/venv/bin/activate
pip install -U pip
pip install numpy scipy pybind11 pytest flaky pytest-cov wheel flake8 bitarray
pip install numpy scipy pybind11 pytest flaky pytest-cov wheel flake8 bitarray psutil
""";
}

buildStep("Installing PyGeNN (${NODE_NAME})") {
dir("genn") {
// Build dynamic LibGeNN with coverage support
echo "Building LibGeNN";
def commandsLibGeNN = """
make DYNAMIC=1 COVERAGE=1 LIBRARY_DIRECTORY=`pwd`/pygenn 2>&1 | tee -a "${compileOutputFilename}" >> "${outputFilename}"
""";
def statusLibGeNN = sh script:commandsLibGeNN, returnStatus:true;
if (statusLibGeNN != 0) {
setBuildStatus("Building LibGeNN (${NODE_NAME})", "FAILURE");
}

// Build PyGeNN module
echo "Building and installing PyGeNN";
def commandsPyGeNN = """
Expand Down Expand Up @@ -281,16 +266,6 @@ for(b = 0; b < builderNodes.size(); b++) {
buildStep("Building Python wheels (${NODE_NAME})") {
dir("genn") {
if(isUnix()) {
// Build set of dynamic libraries
echo "Creating dynamic libraries";
makeCommand = """
make DYNAMIC=1 LIBRARY_DIRECTORY=`pwd`/pygenn 1>> "${outputFilename}" 2>&1
""";
def makeStatusCode = sh script:makeCommand, returnStatus:true
if(makeStatusCode != 0) {
setBuildStatus("Building Python wheels (" + env.NODE_NAME + ")", "FAILURE");
}

// Create virtualenv, install numpy and pybind11; and make Python wheel
echo "Creating Python wheels";
script = """
Expand All @@ -310,19 +285,19 @@ for(b = 0; b < builderNodes.size(); b++) {
echo "Creating dynamic libraries";
msbuildCommand = """
CALL %VC_VARS_BAT%
msbuild genn.sln /m /verbosity:minimal /p:Configuration=Release_DLL /t:single_threaded_cpu_backend >> "${outputFilename}" 2>&1
msbuild genn.sln /m /verbosity:quiet /p:Configuration=Release_DLL /t:single_threaded_cpu_backend >> "${outputFilename}" 2>&1
""";

// If node has suitable CUDA, also build CUDA backend
if("cuda8" in nodeLabel || "cuda9" in nodeLabel || "cuda10" in nodeLabel) {
if("cuda10" in nodeLabel || "cuda11" in nodeLabel || "cuda12" in nodeLabel) {
msbuildCommand += """
msbuild genn.sln /m /verbosity:minimal /p:Configuration=Release_DLL /t:cuda_backend >> "${outputFilename}" 2>&1
msbuild genn.sln /m /verbosity:quiet /p:Configuration=Release_DLL /t:cuda_backend >> "${outputFilename}" 2>&1
""";
}
// If this node has OpenCL, also build OpenCL backend
if(nodeLabel.contains("opencl")) {
msbuildCommand += """
msbuild genn.sln /m /verbosity:minimal /p:Configuration=Release_DLL /t:opencl_backend >> "${outputFilename}" 2>&1
msbuild genn.sln /m /verbosity:quiet /p:Configuration=Release_DLL /t:opencl_backend >> "${outputFilename}" 2>&1
""";
}

Expand Down
49 changes: 10 additions & 39 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,64 +2,35 @@
include src/genn/MakefileCommon

# List of backends
BACKENDS :=single_threaded_cpu
BACKENDS :=single_threaded_cpu_backend
ifdef CUDA_PATH
BACKENDS +=cuda
BACKENDS +=cuda_backend
endif

ifdef OPENCL_PATH
BACKENDS +=opencl
BACKENDS +=opencl_backend
endif

# Build list of libraries
BACKEND_LIBS :=$(BACKENDS:%=$(LIBRARY_DIRECTORY)/libgenn_%_backend$(GENN_PREFIX).$(LIBRARY_EXTENSION))
BACKEND_LIBS :=$(BACKENDS:%=$(LIBRARY_DIRECTORY)/libgenn_%$(GENN_PREFIX).$(LIBRARY_EXTENSION))

# Default install location
PREFIX ?= /usr/local

.PHONY: all clean install uninstall libgenn $(BACKENDS)
.PHONY: all clean genn $(BACKENDS)

all: libgenn $(BACKENDS)
all: genn $(BACKENDS)

install: libgenn $(BACKENDS)
@# Make install directories
@mkdir -p $(PREFIX)/bin
@mkdir -p $(PREFIX)/include/genn
@mkdir -p $(PREFIX)/share/genn
@mkdir -p $(PREFIX)/lib
@mkdir -p $(PREFIX)/src/genn/generator
@# Deploy libraries, headers and data
@cp -f $(LIBRARY_DIRECTORY)/libgenn*.a $(PREFIX)/lib
@cp -rf $(GENN_DIR)/include/genn/* $(PREFIX)/include/genn/
@cp -rf $(GENN_DIR)/share/genn/* $(PREFIX)/share/genn/
@# Deploy minimal set of Makefiles for building generator
@cp -r $(GENN_DIR)/src/genn/MakefileCommon $(PREFIX)/src/genn
@cp -r $(GENN_DIR)/src/genn/generator/Makefile* $(PREFIX)/src/genn/generator
@# Deploy genn_generator source and shell scripts
@cp -r $(GENN_DIR)/src/genn/generator/generator.cc $(PREFIX)/src/genn/generator
@cp -r $(GENN_DIR)/bin/genn-buildmodel.sh $(PREFIX)/bin
@cp -r $(GENN_DIR)/bin/genn-create-user-project.sh $(PREFIX)/bin

uninstall:
@# Delete installed resources
@rm -rf $(PREFIX)/src/genn
@rm -rf $(PREFIX)/lib/libgenn*.a
@rm -rf $(PREFIX)/include/genn
@rm -f $(PREFIX)/share/genn
# Delete installed executables
@rm -f $(PREFIX)/bin/genn-buildmodel.sh
@rm -f $(PREFIX)/bin/genn-create-user-project.sh

libgenn:
genn:
$(MAKE) -C src/genn/genn

single_threaded_cpu:
single_threaded_cpu_backend: genn
$(MAKE) -C src/genn/backends/single_threaded_cpu

cuda:
cuda_backend: genn
$(MAKE) -C src/genn/backends/cuda

opencl:
opencl_backend: genn
$(MAKE) -C src/genn/backends/opencl

clean:
Expand Down
Loading