CNS errors before/after recompilation

Hi Alexandre,

This should be a generic solution. I see the issue on LINUX (CentOS 7) with gcc 4.8.5.

Brian

Hi Srinivas sir,
Can you please explain how to remove flag -fastm in the makefile?

After replacing subrotines in machvar.f file
and then recompile cns_solve
shows error:

make[3]: Target '../bin/cns_solve' not remade because of errors.
Makefile:58: recipe for target 'cns_solve' failed
make[2]: *** [cns_solve] Error 2
Makefile:64: recipe for target 'cns_solve' failed
make[1]: *** [cns_solve] Error 2

Garima,
We need to see more of the compiler log to see what your error might be.

After compiling CNS with make install and then source cns_solve_env after entering into C-shell tcsh
I was trying to run cns after typing cns
drriturajpurohit-CELSIUS-M740Bpower:~/Downloads/cns_solve_1.3> cns
Program will stop immediately.
============================================================
Maximum dynamic memory allocation: 0 bytes
Maximum dynamic memory overhead: 0 bytes
Program started at: on
Program stopped at: 08:12:32 on 16-Dec-2017
CPU time used: 0.0040 seconds
============================================================
drriturajpurohit-CELSIUS-M740Bpower:~/Downloads/cns_solve_1.3>

Hello everyone,
I also got these errors and was able to resolve them.
Just take care of installation steps of CNS:
-> After registration, download xyz.tar.gz file “xyz = cns_solve downloaded version”
-> Enter the command in terminal: gunzip xyz.tar.gz
-> Then enter: tar xvf xyz.tar
-> This will create a new cns_solve directory. Now enter into this directory and copy the path.
-> Now open the file cns_solve_env and paste the copied path in place of ‘location of CNSsolve directory’
-> Then open the terminal in this directory, and enter the command:tcsh
-> Then you entered into C-shell, now enter the command: source cns_solve_env
->Then enter: cns
-> Your software will definitely run without any error.

Dear Dr. Bonvin,

I am having the same problem with CNS installation, but I cannot figure out how should I remove -fast-math flag. In my Makefile I don’t have such flag. I tried to run make no-fastm after make clean but it looks like compilation still runs with fortran -ffast-math option.

Thank you

Depending on your operating system, when installing CNS a directory specific for your OS will be created, e.g. intel-x86_64bit-linux/source on a Linux 64bits system.

Go into that directory and edit the Makefile script.

Then in that dir try: make cns_solve

Thank you very much! I think it’s fine now

Hello,

I did exactly those steps and when I entered cns there was the error: cns: Command not found.

any idea what did i do wrong?

In order to use cns you must first source the cns_solve_env from the installation directory (provided you edited it properly. And check that the compilation was successful

Dear all,

I have tried making all the modifications that have been suggested so far in the forum. I am still getting the following error -

%SETFPEPS Machine epsilon determined to be 0.494-323
%SETFPEPS error encountered: Machine epsilon value is too small
(CNS is in mode: SET ABORT=NORMal END)
WARNING: program encountered a fatal error.
However, in interactive mode, program execution
will continue. Proceed at your own risk.
Program will stop immediately.
============================================================
Maximum dynamic memory allocation: 0 bytes
Maximum dynamic memory overhead: 0 bytes
Program started at: on
Program stopped at: 14:13:57 on 29-Oct-2019
CPU time used: 0.0082 seconds
============================================================
Note: The following floating-point exceptions are signalling: IEEE_UNDERFLOW_FLAG IEEE_DENORMAL

I am using 64 bit Ubuntu 18.04.3 LTS. Kindly advise if I can try any other value of MXFPEPS2. I tried 8192 and it gave the same error.

Thanks in advance.
P.S. replacing the entire SETFPEPS subrouting from bosmith produced a fatal error.

I recently recompiled CNS on OSX and CentOS7 using gfortran.

The compiler flags are:

F77 = gfortran
F77STD = -fdefault-integer-8 -w
F77OPT = -O3 $(CNS_MALIGN_I86) -funroll-loops -ffast-math -static
F77FLAGS = $(F77STD) $(F77OPT) $(EXT_F77FLAGS) $(F77BUG)

# C options
CC = gcc
CPP = g++
CCFLAGS = -O -DINTEGER='long int' -DCNS_ARCH_TYPE_$(CNS_ARCH_TYPE) $(EXT_CCFLAGS)

# link options
LD = gfortran
LDFLAGS = -w $(EXT_LDFLAGS)

The machine.f file looks like:

C ==========================================================================
C
      SUBROUTINE DPSTOR(X)
C
      IMPLICIT NONE
C I/O
      INCLUDE 'machvar.inc'
      DOUBLE PRECISION  X
C
C FORCES THE ARGUMENT VALUE X TO BE STORED IN MEMORY LOCATION V.
C Source code taken from fftpack41/tfftpk.f
C
      DPTMPV=X
      RETURN
      END
C
C ==========================================================================
C
      DOUBLE PRECISION FUNCTION DPTRUNC(X)
C
      IMPLICIT NONE
C I/O
      INCLUDE 'machvar.inc'
      DOUBLE PRECISION  X
C
C DPTRUNC IS A PORTABLE FORTRAN FUNCTION WHICH TRUNCATES A VALUE TO THE
C MACHINE DOUBLE PRECISION WORD SIZE, REGARDLESS OF WHETHER LONGER
C PRECISION INTERNAL REGISTERS ARE USED FOR FLOATING POINT ARITHMETIC IN
C COMPUTING THE VALUE INPUT TO DPTRUNC.  THE METHOD USED IS TO FORCE A
C STORE INTO MEMORY BY USING A COMMON BLOCK IN ANOTHER SUBROUTINE.
C Source code taken from fftpack41/tfftpk.f
C
      CALL DPSTOR(X)
      DPTRUNC=DPTMPV
      RETURN
      END
C
C ==========================================================================
C
      SUBROUTINE SETFPEPS
C
      IMPLICIT NONE
C I/O
      INCLUDE 'numbers.inc'
      INCLUDE 'machvar.inc'
C
C Determine the machine epsilon i.e. the smallest FPEPS such that both
C 1+FPEPS and 1-FPEPS are different from 1.
C
C local
      DOUBLE PRECISION ONEDP
      DOUBLE COMPLEX DBCOMP
C
C external
C NONE
C
C begin
C
C ONEDP doesn't really need to be defined - EPSILON() only needs to know
C the type
      ONEDP=(1.00)
      FPEPS = EPSILON(ONEDP)
      DBCOMP = DCMPLX(ZERO,ZERO)
      CALL DECLAR('FP_EPSILON', 'DP', ' ', DBCOMP, FPEPS)
      RETURN
      END
C
C ==========================================================================
C

Dear Dr. Bonvin,
Thank you very much for your prompt reply. ‘cns’ seems to be working now.
Thanks again.

Hello,
I am trying to perform a HADDOCK docking run locally for the first time, however when I enter haddock2.4 in my run1 directory it comes up with an error message saying ./protocols/cns1 not found. I have installed cns_solve_1.3 and set CNSTMP on the haddock configuration file to the cns executable directory (/home/user/software/cns_solve_1.3/intel-x86_64bit-linux). I also edited the run.cns file to queue_1=“csh” and set cns_exe_1="/home/user/software/cns_solve_1.3/intel-x86_64bit-linux". Has anyone got any idea what I might be doing wrong?

The cns_exe must be the link to the executable and not the directory where it resides.

If you have the correct link you should be able to simply give it as command and see CNS starting.

Thank you for your prompt reply! I managed to link cns_exe to the correct executable now (software/cns_solve_1.3/intel-x86_64bit-linux/bin/cns) however when I now go to proceed with the docking run I get an error stating there is a problem with my CNS executable. Any idea what the problem is here? How could I check CNS has been compiled properly? As also when I go to source cns_solve_env now I also get an error saying that there is unexpected syntax in line 32 : if ( ! $?CNS_ARCH ) setenv CNS_ARCH$CNS_SOLVE/bin/getarch`. Any help would be greatly appreciated!

Did you try a fresh run and not the old one giving problems?

Yeah I attempted a fresh run removing the run1 directory that was created in my previous docking attempt. Still get the error message saying there is a problem with the CNS executable defined in run.cns.

can you manually start CNS based on the definition you put in run.cns?

I.e. copy and paste in the command line