brian-team / brian2genn

Brian 2 frontend to the GeNN simulator
http://brian2genn.readthedocs.io/
GNU General Public License v2.0
46 stars 16 forks source link

How to troubleshoot "NotImplementedError?" #63

Closed jtg374 closed 5 years ago

jtg374 commented 6 years ago

Dear all, When running a test script (from here) I encountered this error:

$ python simple_example.py

Traceback (most recent call last): File "simple_example.py", line 14, in run(10ms) File "/home/jintao/anaconda2/lib/python2.7/site-packages/brian2/units/fundamentalunits.py", line 2375, in new_f result = f(args, *kwds) File "/home/jintao/anaconda2/lib/python2.7/site-packages/brian2/core/magic.py", line 371, in run namespace=namespace, profile=profile, level=2+level) File "/home/jintao/anaconda2/lib/python2.7/site-packages/brian2/core/magic.py", line 231, in run namespace=namespace, profile=profile, level=level+1) File "/home/jintao/anaconda2/lib/python2.7/site-packages/brian2/core/base.py", line 276, in device_override_decorated_function return getattr(curdev, name)(args, kwds) File "/home/jintao/anaconda2/lib/python2.7/site-packages/brian2genn/device.py", line 1571, in network_run level=level + 1) File "/home/jintao/anaconda2/lib/python2.7/site-packages/brian2/devices/cpp_standalone/device.py", line 1299, in network_run self.build(direct_call=False, self.build_options) File "/home/jintao/anaconda2/lib/python2.7/site-packages/brian2genn/device.py", line 711, in build self.process_neuron_groups(neuron_groups, objects) File "/home/jintao/anaconda2/lib/python2.7/site-packages/brian2genn/device.py", line 1137, in process_neuron_groups override_conditional_write=combined_override_conditional_write, File "/home/jintao/anaconda2/lib/python2.7/site-packages/brian2/devices/cpp_standalone/device.py", line 552, in code_object override_conditional_write=override_conditional_write, File "/home/jintao/anaconda2/lib/python2.7/site-packages/brian2/devices/device.py", line 302, in code_object '%s: %s') % (varname, ex)) NotImplementedError: Cannot use function timestep: 'No implementation available for target genn. Available implementations: cython, numpy, cpp'

I am running an Arch Linux (linux 4.14.56-1-lts) have installed nvidia-lts, opencl-nvidia and cuda packages have installed brian2 and brian2genn via conda from brian2-team(https://anaconda.org/brian-team) have set $CUDA_PATH , $GENN_PATH and $PATH.

$ echo $CUDA_PATH /opt/cuda $ echo $GENN_PATH /home/jintao/anaconda2/opt/genn $ echo $PATH /home/jintao/anaconda2/opt/genn/lib/bin:/opt/cuda/bin:/home/jintao/anaconda2/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/opt/cuda/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl

not sure what to troubleshoot :(

Sincerely thanks, Jintao

tnowotny commented 6 years ago

@mstimberg fixed the problem with the missing timestep function in a recent update. We need to make a new release soon. In the meantime, if you install brian2genn from the latest master branch, the error should go away.

jtg374 commented 6 years ago

@tnowotny Thanks Thomas, I git cloned the latest master branch and ran "python setup.py install"; I also git cloned the latest genn and set GENN_PATH to where I put the genn directory. In this way I encoutered no errors in most examples.

However if I direct GENN_PATH to /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn, I will experience this kind of error

$ python simple_spikesource.py INFO The following preferences have been changed for Brian2GeNN, reset them manually if you use a different device later in the same script: codegen.loop_invariant_optimisations, core.network.default_schedule [brian2.devices.genn] running brian code generation ... building genn executable ... g++ -std=c++11 -Wall -Wextra -DNVCC=\""/opt/cuda/bin/nvcc"\" -DMODEL=\"/home/jintao/b2genn/examples/simple_spikesource/magicnetwork_model.cpp\" -o /home/jintao/b2genn/examples/simple_spikesource/generateALL /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/src/generate.cc -I"/home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/include" -I"/opt/cuda/include" -L"/home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib" -L"/opt/cuda/lib64" -lgenn -lcuda -lcudart genn-buildmodel.sh:71: error 50: command failure /usr/bin/ld: /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib/libgenn.a(global.o): relocation R_X86_64_32 against .rodata' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib/libgenn.a(modelSpec.o): relocation R_X86_64_32 against.rodata' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib/libgenn.a(neuronGroup.o): relocation R_X86_64_32 against .rodata' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib/libgenn.a(synapseGroup.o): relocation R_X86_64_32 against.rodata' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib/libgenn.a(neuronModels.o): relocation R_X86_64_32 against .rodata' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib/libgenn.a(synapseModels.o): relocation R_X86_64_32 against.rodata' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib/libgenn.a(postSynapseModels.o): relocation R_X86_64_32 against .rodata' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib/libgenn.a(utils.o): relocation R_X86_64_32 against.rodata' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib/libgenn.a(codeGenUtils.o): relocation R_X86_64_32 against .rodata' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib/libgenn.a(newNeuronModels.o): relocation R_X86_64_32 against symbolnModels' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib/libgenn.a(newPostsynapticModels.o): relocation R_X86_64_32 against symbol postSynModels' can not be used when making a PIE object; recompile with -fPIC /usr/bin/ld: /home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/lib/libgenn.a(newWeightUpdateModels.o): relocation R_X86_64_32 against symbolweightUpdateModels' can not be used when making a PIE object; recompile with -fPIC /tmp/ccnCE7oI.o: In function modelDefinition(NNmodel&)': generateALL.cc:(.text+0x43): undefined reference toGENN_PREFERENCES::userCxxFlagsWIN[abi:cxx11]' generateALL.cc:(.text+0x56): undefined reference to GENN_PREFERENCES::userCxxFlagsGNU[abi:cxx11]' generateALL.cc:(.text+0x69): undefined reference toGENN_PREFERENCES::userNvccFlags[abi:cxx11]' generateALL.cc:(.text+0x65d): undefined reference to NNmodel::setName(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateALL.cc:(.text+0x6ef): undefined reference toNNmodel::addNeuronPopulation(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, unsigned int, unsigned int, double const, double const)' generateALL.cc:(.text+0x768): undefined reference to `NNmodel::addNeuronPopulation(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, unsigned int, unsigned int, double const, double const)' generateALL.cc:(.text+0x886): undefined reference to `NNmodel::addSynapsePopulation(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, unsigned int, SynapseConnType, SynapseGType, unsigned int, unsigned int, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, double const, double const, double const, double const)' /tmp/ccnCE7oI.o: In function chooseDevice(NNmodel&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': generateALL.cc:(.text+0x113d): undefined reference toNNmodel::isSynapseGroupPostLearningRequired(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateALL.cc:(.text+0x1177): undefined reference to `NNmodel::isSynapseGroupDynamicsRequired(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateALL.cc:(.text+0x19ea): undefined reference to GENN_PREFERENCES::userNvccFlags[abi:cxx11]' /tmp/ccnCE7oI.o: In functionmain': generateALL.cc:(.text+0x39c3): undefined reference to gennError(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /tmp/cc5tryJ3.o: In function(anonymous namespace)::generate_process_presynaptic_events_code_CPU(std::ostream&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, SynapseGroup const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)': generateCPU.cc:(.text+0x351): undefined reference to SynapseGroup::getOffsetPre[abi:cxx11]() const' generateCPU.cc:(.text+0x934): undefined reference tosubstitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateCPU.cc:(.text+0x9d6): undefined reference to substitute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateCPU.cc:(.text+0xabe): undefined reference toStandardSubstitutions::weightUpdateThresholdCondition(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, SynapseGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateCPU.cc:(.text+0xd6f): undefined reference to `substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateCPU.cc:(.text+0xe11): undefined reference to substitute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateCPU.cc:(.text+0x11cb): undefined reference tosubstitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateCPU.cc:(.text+0x12bc): undefined reference to `StandardSubstitutions::weightUpdateSim(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, SynapseGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' /tmp/cc5tryJ3.o: In function genNeuronFunction(NNmodel const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': generateCPU.cc:(.text+0x221a): undefined reference toStandardGeneratedSections::neuronOutputInit(std::ostream&, NeuronGroup const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateCPU.cc:(.text+0x25b0): undefined reference to `StandardGeneratedSections::neuronLocalVarInit(std::ostream&, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateCPU.cc:(.text+0x2c84): undefined reference to `substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateCPU.cc:(.text+0x2d54): undefined reference to substitute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateCPU.cc:(.text+0x2dea): undefined reference toStandardSubstitutions::postSynapseCurrentConverter(std::__cxx11::basic_string<char, std::char_traits, std::allocator >&, SynapseGroup const, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateCPU.cc:(.text+0x32c9): undefined reference to `substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateCPU.cc:(.text+0x334c): undefined reference to StandardSubstitutions::neuronThresholdCondition(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateCPU.cc:(.text+0x34b9): undefined reference tosubstitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateCPU.cc:(.text+0x353c): undefined reference to `StandardSubstitutions::neuronSim(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateCPU.cc:(.text+0x362d): undefined reference to `substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateCPU.cc:(.text+0x372a): undefined reference to NeuronGroup::getQueueOffset(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' generateCPU.cc:(.text+0x37d6): undefined reference toStandardGeneratedSections::neuronSpikeEventTest(std::ostream&, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateCPU.cc:(.text+0x3f2a): undefined reference to substitute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateCPU.cc:(.text+0x3fad): undefined reference toStandardSubstitutions::neuronReset(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateCPU.cc:(.text+0x413b): undefined reference to StandardGeneratedSections::neuronLocalVarWrite(std::ostream&, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateCPU.cc:(.text+0x42ac): undefined reference tosubstitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateCPU.cc:(.text+0x437c): undefined reference to `substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateCPU.cc:(.text+0x4412): undefined reference to StandardSubstitutions::postSynapseDecay(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, SynapseGroup const*, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /tmp/cc5tryJ3.o: In functiongenSynapseFunction(NNmodel const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)': generateCPU.cc:(.text+0x5c33): undefined reference to `NNmodel::findSynapseGroup(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateCPU.cc:(.text+0x6078): undefined reference to substitute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateCPU.cc:(.text+0x639b): undefined reference toStandardSubstitutions::weightUpdateDynamics(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, SynapseGroup const*, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateCPU.cc:(.text+0x6855): undefined reference to `StandardSubstitutions::weightUpdateDynamics(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, SynapseGroup const, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateCPU.cc:(.text+0x7564): undefined reference to NNmodel::findSynapseGroup(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' generateCPU.cc:(.text+0x7b40): undefined reference toSynapseGroup::getOffsetPost(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateCPU.cc:(.text+0x7ef1): undefined reference to `substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateCPU.cc:(.text+0x835d): undefined reference to `StandardSubstitutions::weightUpdatePostLearn(std::__cxx11::basic_string<char, std::char_traits, std::allocator >&, SynapseGroup const, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' /tmp/cc5tryJ3.o: In function void name_substitutions<PairKeyConstIter<__gnu_cxx::__normal_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const*, std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > > >(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, PairKeyConstIter<__gnu_cxx::__normal_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const*, std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > >, PairKeyConstIter<__gnu_cxx::__normal_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const*, std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': generateCPU.cc:(.text._Z18name_substitutionsI16PairKeyConstIterIN9__gnu_cxx17__normal_iteratorIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_ESt6vectorISA_SaISA_EEEEEEvRS9_RKS9_T_SL_SK_SK_[_Z18name_substitutionsI16PairKeyConstIterIN9__gnu_cxx17__normal_iteratorIPKSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_ESt6vectorISA_SaISA_EEEEEEvRS9_RKS9_T_SL_SK_SK_]+0x131): undefined reference tosubstitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' /tmp/cc4MmIus.o: In function `(anonymous namespace)::generatePreParallelisedSparseCode(std::ostream&, SynapseGroup const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)': generateKernels.cc:(.text+0xac1): undefined reference to StandardSubstitutions::weightUpdateThresholdCondition(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, SynapseGroup const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateKernels.cc:(.text+0xe2a): undefined reference tosubstitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateKernels.cc:(.text+0xef2): undefined reference to `substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateKernels.cc:(.text+0xfa7): undefined reference to substitute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateKernels.cc:(.text+0x104b): undefined reference tosubstitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateKernels.cc:(.text+0x10ed): undefined reference to `substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateKernels.cc:(.text+0x12ef): undefined reference to StandardSubstitutions::weightUpdateSim(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, SynapseGroup const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /tmp/cc4MmIus.o: In function(anonymous namespace)::generatePostParallelisedCode(std::ostream&, SynapseGroup const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)': generateKernels.cc:(.text+0x1e51): undefined reference to SynapseGroup::getOffsetPre[abi:cxx11]() const' generateKernels.cc:(.text+0x258a): undefined reference toStandardSubstitutions::weightUpdateThresholdCondition(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, SynapseGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateKernels.cc:(.text+0x2b40): undefined reference to substitute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateKernels.cc:(.text+0x2c2b): undefined reference tosubstitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateKernels.cc:(.text+0x2ce0): undefined reference to `substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateKernels.cc:(.text+0x2d84): undefined reference to substitute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateKernels.cc:(.text+0x2e26): undefined reference tosubstitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' /tmp/cc4MmIus.o:generateKernels.cc:(.text+0x2fdb): more undefined references to `substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' follow /tmp/cc4MmIus.o: In function (anonymous namespace)::generatePostParallelisedCode(std::ostream&, SynapseGroup const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': generateKernels.cc:(.text+0x3385): undefined reference toStandardSubstitutions::weightUpdateSim(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, SynapseGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' /tmp/cc4MmIus.o: In function `genNeuronKernel(NNmodel const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)': generateKernels.cc:(.text+0x50c6): undefined reference to StandardGeneratedSections::neuronOutputInit(std::ostream&, NeuronGroup const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateKernels.cc:(.text+0x5c97): undefined reference toStandardGeneratedSections::neuronLocalVarInit(std::ostream&, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateKernels.cc:(.text+0x6490): undefined reference to substitute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateKernels.cc:(.text+0x6522): undefined reference tosubstitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateKernels.cc:(.text+0x65a9): undefined reference to `StandardSubstitutions::postSynapseCurrentConverter(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, SynapseGroup const*, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateKernels.cc:(.text+0x6a58): undefined reference to `substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateKernels.cc:(.text+0x6abd): undefined reference to StandardSubstitutions::neuronThresholdCondition(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateKernels.cc:(.text+0x6bfe): undefined reference tosubstitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateKernels.cc:(.text+0x6c63): undefined reference to `StandardSubstitutions::neuronSim(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateKernels.cc:(.text+0x6d18): undefined reference to `StandardGeneratedSections::neuronSpikeEventTest(std::ostream&, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateKernels.cc:(.text+0x71b5): undefined reference to `substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateKernels.cc:(.text+0x721a): undefined reference to StandardSubstitutions::neuronReset(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateKernels.cc:(.text+0x736d): undefined reference toStandardGeneratedSections::neuronLocalVarWrite(std::ostream&, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateKernels.cc:(.text+0x7506): undefined reference to substitute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateKernels.cc:(.text+0x7598): undefined reference tosubstitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateKernels.cc:(.text+0x761f): undefined reference to `StandardSubstitutions::postSynapseDecay(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, SynapseGroup const, NeuronGroup const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateKernels.cc:(.text+0x802c): undefined reference to `NeuronGroup::getQueueOffset(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' /tmp/cc4MmIus.o: In function genSynapseKernel(NNmodel const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': generateKernels.cc:(.text+0x9ce6): undefined reference toNNmodel::findSynapseGroup(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateKernels.cc:(.text+0xa1fd): undefined reference to `substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateKernels.cc:(.text+0xa72d): undefined reference to `StandardSubstitutions::weightUpdateDynamics(std::__cxx11::basic_string<char, std::char_traits, std::allocator >&, SynapseGroup const, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::cxx11::basic_string<char, std::char_traits, std::allocator > > > > > const&, NameIterCtx<std::vector<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> >, std::allocator<std::pair<std::cxx11::basic_string<char, std::char_traits, std::allocator >, std::function<double (std::vector<double, std::allocator > const&, double)> > > > > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateKernels.cc:(.text+0xacc4): undefined reference to StandardSubstitutions::weightUpdateDynamics(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, SynapseGroup const*, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' generateKernels.cc:(.text+0xb58a): undefined reference toNNmodel::isSynapseGroupPostLearningRequired(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateKernels.cc:(.text+0xbfd7): undefined reference to `NNmodel::isSynapseGroupPostLearningRequired(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateKernels.cc:(.text+0xd0bb): undefined reference to NNmodel::findSynapseGroup(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' generateKernels.cc:(.text+0xd842): undefined reference toSynapseGroup::getOffsetPost(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateKernels.cc:(.text+0xe06e): undefined reference to `substitute(std::cxx11::basic_string<char, std::char_traits, std::allocator >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateKernels.cc:(.text+0xe519): undefined reference to StandardSubstitutions::weightUpdatePostLearn(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, SynapseGroup const*, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::function<double (std::vector<double, std::allocator<double> > const&, double)> > > > > const&, NameIterCtx<std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /tmp/cctzmCUV.o: In function(anonymous namespace)::allocate_variable(std::basic_ofstream<char, std::char_traits >&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, bool, unsigned long)': generateRunner.cc:(.text+0x86c): undefined reference to theSize(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /tmp/cctzmCUV.o: In functiongenRunner(NNmodel const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)': generateRunner.cc:(.text+0x7a6a): undefined reference to `ensureFtype(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateRunner.cc:(.text+0x7d97): undefined reference to `ensureFtype(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateRunner.cc:(.text+0x8012): undefined reference to `ensureFtype(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateRunner.cc:(.text+0x828d): undefined reference to `ensureFtype(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateRunner.cc:(.text+0x8508): undefined reference to `ensureFtype(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateRunner.cc:(.text+0xa105): undefined reference to `NNmodel::isSynapseGroupDynamicsRequired(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateRunner.cc:(.text+0xa20e): undefined reference to NNmodel::isSynapseGroupPostLearningRequired(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' generateRunner.cc:(.text+0xb60a): undefined reference togennError(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' generateRunner.cc:(.text+0xc067): undefined reference to `NeuronGroup::isVarQueueRequired(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateRunner.cc:(.text+0xc0ce): undefined reference to NeuronGroup::isVarZeroCopyEnabled(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' generateRunner.cc:(.text+0xc53e): undefined reference toSynapseGroup::isWUVarZeroCopyEnabled(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateRunner.cc:(.text+0xc6c6): undefined reference to `SynapseGroup::isPSVarZeroCopyEnabled(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateRunner.cc:(.text+0xdb10): undefined reference to NeuronGroup::isVarQueueRequired(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' generateRunner.cc:(.text+0xdd76): undefined reference toNNmodel::scalarExprabi:cxx11 const' generateRunner.cc:(.text+0xe37c): undefined reference to NNmodel::scalarExpr[abi:cxx11](double) const' generateRunner.cc:(.text+0xe697): undefined reference toNNmodel::scalarExprabi:cxx11 const' generateRunner.cc:(.text+0xea88): undefined reference to NNmodel::scalarExpr[abi:cxx11](double) const' generateRunner.cc:(.text+0xf25c): undefined reference toNNmodel::isSynapseGroupDynamicsRequired(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateRunner.cc:(.text+0xf40e): undefined reference to `NNmodel::isSynapseGroupPostLearningRequired(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateRunner.cc:(.text+0xfa59): undefined reference to NNmodel::isSynapseGroupDynamicsRequired(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' generateRunner.cc:(.text+0xfb1c): undefined reference toNNmodel::isSynapseGroupPostLearningRequired(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateRunner.cc:(.text+0xfe04): undefined reference to `SynapseGroup::isWUVarZeroCopyEnabled(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateRunner.cc:(.text+0x10448): undefined reference to NNmodel::isSynapseGroupDynamicsRequired(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' generateRunner.cc:(.text+0x10517): undefined reference toNNmodel::isSynapseGroupPostLearningRequired(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateRunner.cc:(.text+0x1075f): undefined reference to `SynapseGroup::isWUVarZeroCopyEnabled(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateRunner.cc:(.text+0x10ad9): undefined reference to NNmodel::isSynapseGroupDynamicsRequired(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' generateRunner.cc:(.text+0x10bdc): undefined reference toNNmodel::isSynapseGroupPostLearningRequired(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateRunner.cc:(.text+0x11186): undefined reference to `NeuronGroup::isVarZeroCopyEnabled(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateRunner.cc:(.text+0x114fd): undefined reference to NNmodel::isSynapseGroupPostLearningRequired(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' generateRunner.cc:(.text+0x11758): undefined reference toNNmodel::isSynapseGroupDynamicsRequired(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateRunner.cc:(.text+0x1196c): undefined reference to `SynapseGroup::isWUVarZeroCopyEnabled(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateRunner.cc:(.text+0x11a96): undefined reference to SynapseGroup::isPSVarZeroCopyEnabled(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' /tmp/cctzmCUV.o: In functiongenRunnerGPU(NNmodel const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)': generateRunner.cc:(.text+0x17ba9): undefined reference to `NeuronGroup::isVarZeroCopyEnabled(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateRunner.cc:(.text+0x17be1): undefined reference to NeuronGroup::isVarQueueRequired(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' generateRunner.cc:(.text+0x19632): undefined reference toSynapseGroup::isWUVarZeroCopyEnabled(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateRunner.cc:(.text+0x19842): undefined reference to `SynapseGroup::isPSVarZeroCopyEnabled(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateRunner.cc:(.text+0x19f1e): undefined reference to NeuronGroup::isVarZeroCopyEnabled(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' generateRunner.cc:(.text+0x19f56): undefined reference toNeuronGroup::isVarQueueRequired(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateRunner.cc:(.text+0x1bab7): undefined reference to `SynapseGroup::isWUVarZeroCopyEnabled(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&) const' generateRunner.cc:(.text+0x1bcc7): undefined reference to SynapseGroup::isPSVarZeroCopyEnabled(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' /tmp/cctzmCUV.o: In functiongenMakefile(NNmodel const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)': generateRunner.cc:(.text+0x21c24): undefined reference to `GENN_PREFERENCES::userNvccFlags[abi:cxx11]' /usr/bin/ld: final link failed: Symbol needs debug section which does not exist collect2: error: ld returned 1 exit status make: [/home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/GNUmakefile:99: /home/jintao/b2genn/examples/simple_spikesource/generateALL] Error 1 ERROR Brian 2 encountered an unexpected error. If you think this is bug in Brian 2, please report this issue either to the mailing list at http://groups.google.com/group/brian-development/, or to the issue tracker at https://github.com/brian-team/brian2/issues. Please include this file with debug information in your report: /tmp/brian_debug_3vw_Ve.log Additionally, you can also include a copy of the script that was run, available at: /tmp/brian_script_sZo3n8.py You can also include a copy of the redirected std stream outputs, available at /tmp/brian_stdout_969PWH.log and /tmp/brian_stderr_h5cN61.log Thanks! [brian2] Traceback (most recent call last): File "simple_spikesource.py", line 15, in run(7ms) File "/home/jintao/anaconda2/lib/python2.7/site-packages/brian2/units/fundamentalunits.py", line 2375, in new_f result = f(*args, *kwds) File "/home/jintao/anaconda2/lib/python2.7/site-packages/brian2/core/magic.py", line 371, in run namespace=namespace, profile=profile, level=2+level) File "/home/jintao/anaconda2/lib/python2.7/site-packages/brian2/core/magic.py", line 231, in run namespace=namespace, profile=profile, level=level+1) File "/home/jintao/anaconda2/lib/python2.7/site-packages/brian2/core/base.py", line 276, in device_override_decorated_function return getattr(curdev, name)(args, kwds) File "/home/jintao/anaconda2/lib/python2.7/site-packages/Brian2GeNN-1.1.5+git-py2.7.egg/brian2genn/device.py", line 1571, in network_run level=level + 1) File "/home/jintao/anaconda2/lib/python2.7/site-packages/brian2/devices/cpp_standalone/device.py", line 1299, in network_run self.build(direct_call=False, **self.build_options) File "/home/jintao/anaconda2/lib/python2.7/site-packages/Brian2GeNN-1.1.5+git-py2.7.egg/brian2genn/device.py", line 753, in build returncode=ex.returncode) RuntimeError: Project compilation failed (Command ['/home/jintao/anaconda2/pkgs/brian2genn-1.1.5-py27hd8aa01e_0/opt/genn/lib/bin/genn-buildmodel.sh', 'magicnetwork_model.cpp'] failed with error code 50). See the output above (if any) for more details.

Not sure if it's any compatibility issues in the internal genn in brian2genn or I messed up anything. If it's indeed a bug, I am glad to help report.

Also, forgive me as a newbie here, how do I properly uninstall the brian2genn I just installed with setup.py if I need to upgrade or downgrade to another version? I know I could dry run the setup.py script and delete all the copied stuff but would it be enough?

mstimberg commented 6 years ago

Hi, there are unfortunately still some issues with the GeNN package that we bundle with Brian2GeNN. Some of its files are pre-compiled and do not necessarily work with the libraries on your machine at runtime. We were discussing similar issues in #59. For now, installing GeNN manually and setting GENN_PATH accordingly is the best solution, I think.

jtg374 commented 6 years ago

Thanks

On Tue, Aug 14, 2018, 12:23 AM Marcel Stimberg notifications@github.com wrote:

Hi, there are unfortunately still some issues with the GeNN package that we bundle with Brian2GeNN. Some of its files are pre-compiled and do not necessarily work with the libraries on your machine at runtime. We were discussing similar issues in #59 https://github.com/brian-team/brian2genn/issues/59. For now, installing GeNN manually and setting GENN_PATH accordingly is the best solution, I think.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/brian-team/brian2genn/issues/63#issuecomment-412577915, or mute the thread https://github.com/notifications/unsubscribe-auth/AoFONlkAFS6X26jB5CCPOzXL9IjukjZNks5uQagcgaJpZM4Vr45K .