Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RuntimeError: Project compilation failed #128

Open
RRHHAAWW opened this issue Aug 9, 2021 · 2 comments
Open

RuntimeError: Project compilation failed #128

RRHHAAWW opened this issue Aug 9, 2021 · 2 comments

Comments

@RRHHAAWW
Copy link

RRHHAAWW commented Aug 9, 2021

I was using Brian2GeNN on the example code on GeNN:

from brian2 import *
import brian2genn
set_device('genn', use_GPU=True, debug=False)

prefs.devices.genn.cuda_backend.cuda_path = '/usr/local/cuda'
prefs.devices.genn.path = '/home/rw/SNN/GENN/genn'

n = 1000
duration = 1*second
tau = 10*ms
eqs = '''
dv/dt = (v0 - v) / tau : volt (unless refractory)
v0 : volt
'''
group = NeuronGroup(n, eqs, threshold='v > 10*mV', reset='v = 0*mV',
                    refractory=5*ms, method='exact')
group.v = 0*mV
group.v0 = '20*mV * i / (n-1)'
monitor = SpikeMonitor(group)
run(duration)

If I set use_GPU=False, then the code would run since it's using CPU. But when I set use_GPU=True, it returned a runtime error.
I noticed one line saying that /home/rw/anaconda3/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/bin/ld: cannot find -lcuda. It seems that lcuda was missing. Is this the cause?

(base) rw@rw-ubt:~/SNN/T2$ python t2.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 ...
['/home/rw/SNN/GENN/genn/bin/genn-buildmodel.sh', '-i', '/home/rw/SNN/T2:/home/rw/SNN/T2/GeNNworkspace:/home/rw/SNN/T2/GeNNworkspace/brianlib/randomkit', 'magicnetwork_model.cpp']
make: Entering directory '/home/rw/SNN/GENN/genn/src/genn/generator'
if [ -w /home/rw/SNN/GENN/genn/lib ]; then make -C /home/rw/SNN/GENN/genn/src/genn/genn; fi;
if [ -w /home/rw/SNN/GENN/genn/lib ]; then make -C /home/rw/SNN/GENN/genn/src/genn/backends/cuda; fi;
make[1]: Entering directory '/home/rw/SNN/GENN/genn/src/genn/genn'
make[1]: Entering directory '/home/rw/SNN/GENN/genn/src/genn/backends/cuda'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/rw/SNN/GENN/genn/src/genn/backends/cuda'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/rw/SNN/GENN/genn/src/genn/genn'
mkdir -p /tmp/genn.UPKaur4P
/home/rw/anaconda3/bin/x86_64-conda_cos6-linux-gnu-c++ -std=c++11 -fvisibility-inlines-hidden -std=c++17 -fmessage-length=0 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /home/rw/anaconda3/include -Wall -Wpedantic -Wextra -MMD -MP -I/home/rw/SNN/GENN/genn/include/genn/genn -I/home/rw/SNN/GENN/genn/include/genn/third_party -I/home/rw/SNN/T2 -I/home/rw/SNN/T2/GeNNworkspace -I/home/rw/SNN/T2/GeNNworkspace/brianlib/randomkit -I/home/rw/SNN/GENN/genn/include/genn/backends/cuda -DMODEL="/tmp/genn.cZ5nE9Gx/magicnetwork_model.cpp" -DBACKEND_NAMESPACE=CUDA -I"/usr/local/cuda/include" generator.cc -o /tmp/genn.UPKaur4P/generator -Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,--disable-new-dtags -Wl,--gc-sections -Wl,-rpath,/home/rw/anaconda3/lib -Wl,-rpath-link,/home/rw/anaconda3/lib -L/home/rw/anaconda3/lib -L/home/rw/SNN/GENN/genn/lib -lgenn_cuda_backend -lgenn -L"/usr/local/cuda/lib64" -lcuda -lcudart -pthread
make: Leaving directory '/home/rw/SNN/GENN/genn/src/genn/generator'
genn-buildmodel.sh:93: error 50: command failure
In file included from /tmp/genn.cZ5nE9Gx/magicnetwork_model.cpp:5:0,
from generator.cc:31:
/tmp/genn.cZ5nE9Gx/brianlib/randomkit/randomkit.cc:132:1: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
};
^
/tmp/genn.cZ5nE9Gx/brianlib/randomkit/randomkit.cc:132:1: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
In file included from /tmp/genn.cZ5nE9Gx/objects.h:6:0,
from /tmp/genn.cZ5nE9Gx/magicnetwork_model.cpp:7,
from generator.cc:31:
/tmp/genn.cZ5nE9Gx/brianlib/clocks.h:12:3: warning: extra ';' [-Wpedantic]
};
^
/tmp/genn.cZ5nE9Gx/brianlib/clocks.h:13:2: warning: extra ';' [-Wpedantic]
};
^
In file included from /tmp/genn.cZ5nE9Gx/magicnetwork_model.cpp:13:0,
from generator.cc:31:
/tmp/genn.cZ5nE9Gx/code_objects/neurongroup_group_variable_set_conditional_codeobject.cpp: In function 'void _run_neurongroup_group_variable_set_conditional_codeobject()':
/tmp/genn.cZ5nE9Gx/code_objects/neurongroup_group_variable_set_conditional_codeobject.cpp:105:18: warning: unused variable '_vectorisation_idx' [-Wunused-variable]
const size_t _vectorisation_idx = _idx;
^~~~~~~~~~~~~~~~~~
/tmp/genn.cZ5nE9Gx/code_objects/neurongroup_group_variable_set_conditional_codeobject.cpp:83:15: warning: unused variable '_numv0' [-Wunused-variable]
const int _numv0 = 1000;
^~~~~~
/tmp/genn.cZ5nE9Gx/code_objects/neurongroup_group_variable_set_conditional_codeobject.cpp:84:11: warning: unused variable '_numi' [-Wunused-variable]
const int _numi = 1000;
^~~~~
/tmp/genn.cZ5nE9Gx/code_objects/neurongroup_group_variable_set_conditional_codeobject.cpp:93:14: warning: unused variable '_vectorisation_idx' [-Wunused-variable]
const size_t _vectorisation_idx = -1;
^~~~~~~~~~~~~~~~~~
/home/rw/anaconda3/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.3.0/../../../../x86_64-conda_cos6-linux-gnu/bin/ld: cannot find -lcuda
collect2: error: ld returned 1 exit status
make: *** [MakefileCommon:41: /tmp/genn.UPKaur4P/generator] Error 1
ERROR Brian 2 encountered an unexpected error. If you think this is a bug in Brian 2, please report this issue either to the discourse forum at http://brian.discourse.group/, 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_k_dg6o42.log Additionally, you can also include a copy of the script that was run, available at: /tmp/brian_script_5qtmy7cw.py You can also include a copy of the redirected std stream outputs, available at /tmp/brian_stdout_vv3yvqed.log and /tmp/brian_stderr_ki4egz78.log Thanks! [brian2]
Traceback (most recent call last):
File "/home/rw/anaconda3/lib/python3.8/site-packages/brian2genn/device.py", line 882, in build
self.compile_source(debug, directory, use_GPU)
File "/home/rw/anaconda3/lib/python3.8/site-packages/brian2genn/device.py", line 1169, in compile_source
check_call(args, cwd=directory, env=env)
File "/home/rw/anaconda3/lib/python3.8/subprocess.py", line 364, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['/home/rw/SNN/GENN/genn/bin/genn-buildmodel.sh', '-i', '/home/rw/SNN/T2:/home/rw/SNN/T2/GeNNworkspace:/home/rw/SNN/T2/GeNNworkspace/brianlib/randomkit', 'magicnetwork_model.cpp']' returned non-zero exit status 50.

During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "t2.py", line 20, in
run(duration)
File "/home/rw/anaconda3/lib/python3.8/site-packages/brian2/units/fundamentalunits.py", line 2434, in new_f
result = f(*args, **kwds)
File "/home/rw/anaconda3/lib/python3.8/site-packages/brian2/core/magic.py", line 373, in run
return magic_network.run(duration, report=report, report_period=report_period,
File "/home/rw/anaconda3/lib/python3.8/site-packages/brian2/core/magic.py", line 231, in run
Network.run(self, duration, report=report, report_period=report_period,
File "/home/rw/anaconda3/lib/python3.8/site-packages/brian2/core/base.py", line 276, in device_override_decorated_function
return getattr(curdev, name)(*args, **kwds)
File "/home/rw/anaconda3/lib/python3.8/site-packages/brian2genn/device.py", line 1821, in network_run
super(GeNNDevice, self).network_run(net=net, duration=duration,
File "/home/rw/anaconda3/lib/python3.8/site-packages/brian2/devices/cpp_standalone/device.py", line 1511, in network_run
self.build(direct_call=False, **self.build_options)
File "/home/rw/anaconda3/lib/python3.8/site-packages/brian2genn/device.py", line 884, in build
raise RuntimeError(('Project compilation failed (Command {cmd} '
RuntimeError: Project compilation failed (Command ['/home/rw/SNN/GENN/genn/bin/genn-buildmodel.sh', '-i', '/home/rw/SNN/T2:/home/rw/SNN/T2/GeNNworkspace:/home/rw/SNN/T2/GeNNworkspace/brianlib/randomkit', 'magicnetwork_model.cpp'] failed with error code 50).
See the output above (if any) for more details.

@tnowotny
Copy link
Contributor

tnowotny commented Aug 9, 2021

Yes, it looks like you are having problems with your CUDA installation.
Have you checked whether CUDA us working in principle (e.g. by running an example from the CUDA toolkit)?

I see you are using anaconda python. We often find that the C++ compiler provided with anaconda doesn't work well together with the CUDA compiler. If your CUDA install seems to be ok otherwise it would be worth to try using a python virtual environment and the system compiler instead of anaconda.

@RRHHAAWW
Copy link
Author

After uninstalling anaconda and reinstalling CUDA 11.4, now the example can run with GeNN.
However, I found it didn't make the execution time faster as compared to CPU. Actually, when running another example from Brian, the run time for CPU was 15 seconds, and the time for GPU was 56 seconds (17s for compiling, 39s for executing).
Is this a hardware bottleneck? My CPU is i7 8700 and GPU is RTX2070. GPU driver is from nvidia-driver-470 (proprietary).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants