The version of RNAfold to run on nVidia graphics cards and
Tesla high performance computing parallel hardware
will be available shortly.
Contact me or
for advanced version.
ViennaRNA-2.3.0cuda configure error message: Could not find nvcc
Make sure nvcc is in your PATH
ViennaRNA-2.3.0cuda make error message:
nvcc fatal : Unsupported gpu architecture 'compute_61'
Make sure you are using a version of the CUDA nvcc compiler
(e.g. CUDA 9.1)
which supports nVidia GPU compute level 6.1
Is your GPU at compute level 6.1?
If you cannot upgrade your version of CUDA,
it may be possible to compile for an older compute level
and run the CUDA version of RNAfold with only marginal loss of efficiency.
Use make V=1
To confirm the nvvc command line used by make.
gcc mfe_cuda.c warning: passing argument discards const qualifier from pointer target type
These warnings are fine.
The new code uses const and passes such data to older code
which does not. The older code does not modify the data.
However the compiler does not know this and hence issue many warnings
when compiling mfe_cuda.c
It appears on newer versions of gcc,
such warnings can be suppressed with
The gcc command line option
-Wdiscarded-qualifiers is relatively new but
in older (e.g. version 4.8.5)
the -w option
will suppress all warnings.
NVCC modular_decomposition.o /usr/include/stdc-predef.h fatal error: cuda_runtime.h: No such file or directory
Problem can arise when old version of CUDA nvcc is used with newer command line.
(E.g. CUDA 7.0 versus 9.1)
Ensure CUDA 9.1 is used through out compilation.
NVLD RNAfold /usr/bin/crt/link.stub fatal error: host_defines.h: No such file or directory
It appears this can arise when a different version of CUDA nvcc is
used to link the RNAfold executable than was used to compile it.
(E.g. CUDA 7.0 versus 9.1)
Ensure CUDA 9.1 is used both to compile and link
modular_decomposition.cu init_gpu(1, 60)
cudaMalloc d_energy_min 244 returned error CUDA driver version is insufficient for CUDA runtime version (code 35) line(236)
this is a known compatibility problem
between nVidia driver 384.98 and CUDA 9.1
(and, I guess, every version older than 384.98.
For example, it appears also with nvidia driver version 384.59).
Use nvidia-smi to find which driver you have installed
and nvcc -V to find the CUDA compiler's version.
Recompile on the host
(e.g. with CUDA 8.0),
rather than simply copying the executable.
Alternatively you might upgrade the nVidia driver.
ViennaRNA Package version 2.3.5 (April 2017)
is the first version to support SSE.
However SSE is not enabled by default.
To get the speed advantages of
SSE instructions you will need
- An x86 processor that supports SSE.
Any CPU less than five years old is probably going to include SSE.
E.g., with unix look in the special system file /proc/cpuinfo,
or look at
- A C compiler that supports SSE.
E.g. almost any recent version of GCC
(GCC 4.3 onwards)
which supports the -msse4.1 command line flag.
- When you
ViennaRNA-2.3.5.tar.gz use ./configure --enable-sse
before you run make.
error: '__builtin_ia32_pminsd128' needs isa option -m32 -msse4.1
return (__m128i) __builtin_ia32_pminsd128 ((__v4si)__X, (__v4si)__Y);
lto-wrapper: gcc returned 1 exit status
Make sure you are using a version of the C compiler which supports SSE.
This problem seems to be removed by using GCC release 6.2.1
This may be because libRNA_conv.a is not compatible with
the GCC link time optimiser.
E.g. due to it containing object files produced by an old version of
the GCC compiler or different version of the GCC compiler.
libtool: link: gcc -fno-strict-aliasing -flto -ffat-lto-objects
-fopenmp -g -O2 -fno-strict-aliasing -flto -o RNALfold RNALfold_cmdl.o
RNALfold.o ../../src/ViennaRNA/.libs/libRNA_conv.a -lstdc++ -lm
lto1: fatal error: bytecode stream generated with LTO version 2.2
instead of the expected 5.1
suggestion leads to may be trying something like:
strings libRNA_conv.a | grep 'GCC:'| sort -u
Ensure you are using the same version of GCC for both
gcc and g++.
It is possible to disable gcc's link time optimiser with the gcc
link time switch -fno-lto
cannot find -lstdc++
collect2: error: ld returned 1 exit status
Ensure have both C and C++ compilers installed.
The SSE code in RNAfold 2.3.5 is derived from:
Improving SSE Parallel Code with Grow and Graft Genetic Programming,
William B. Langdon and Ronny Lorenz.
GI 2017, pp1537-1538, 15-19 July, Berlin.
9 July 2017
(last update 8 May 2018)