Problems Running pknotsRG

cuda pknotsRG is slow

For random sequences of 120nt the CPU version processes about 10 per second. Whereas the GPU version processes about 0.8 per second.

Work around

Well none really. The automatically generated CUDA code has far too few threads, far too few blocks and diverges.

Reducing the number of threads (using -T 1) speeds up cuda pknotsRG by almost three times.

No examples

Work around

See rnafold

cuda pknotsRG does not work with CUDA 6.0

Work around

As rnafold. I.e. replace cutil.h and update cudalib.cu

Problems linking adpc/pknotsRG/cpu

Known Centos Redhat problem

make fails with
gcc  pknotsRG.o adplib.o rnalib.o  \
              pknotsRG_energy.o  -lreadline -lm -o pknotsRG 
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `PC'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgetflag'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgetent'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `UP'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tputs'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgoto'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgetnum'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `BC'
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libreadline.so: undefined reference to `tgetstr'
collect2: ld returned 1 exit status

It appears this is a known problem with centos and Red hat linux distributions.

Work around

Explicitly link libtermcap or libncurses. Eg
gcc  pknotsRG.o adplib.o rnalib.o pknotsRG_energy.o -lreadline -lm -lncurses -o pknotsRG

pknotsRG Appears to Loop

By default pknotsRG pretty prints all RNA structures within 10% of the optimal structure. With random RNA strands of a few hundred nucleotides the number of eligible structures is huge and pknotsRG appears to be looping as it tries to print them all.

This is compounded by the fact that pknotsRG's use of memory continues to grow as it outputs this huge file.

Work around

pknotsRG's -e command line option overrides the percent -c option, hence
./pknotsRG -e 0 -f input_file
will ensure only the best folds are output.

CUDA pknotsRG may give wrong answers

Some short sequences give incorrect answers. eg
>gc wbl 29 June 2015
GCCCCCGGGC
should give

energy: -4.00 kcal/mol
Suboptimal range: [-4.00 kcal/mol - -4.00 kcal/mol]

>gc wbl 29 June 2015
GCCCCCGGGC
(((....)))  (-4.00)  
but actually fails to display results correctly. Instead it erroneously claims the self binding energy: 0.00 kcal/mol

The RNAfold WebServer agrees the structure for the minimum free energy prediction is

GCCCCCGGGC
(((....)))
but gives slightly different energy.

Work around

The Genetically Improved version pknotsGI.tar.gz gives the correct energy and gives the correct structure in more cases. However the underlying bug is not fully fixed.


W.B.Langdon Back 11 March 2015 (last update 7 July)