Installing ctffind-4.1.14 on IBM Power9

Dear support,

I am trying to install ctffind software on a IBM cluster with Power9 architecture. During compilation I get the following error

g++ -DPACKAGE_NAME=\"ctffind\" -DPACKAGE_TARNAME=\"ctffind\" -DPACKAGE_VERSION=\"4.1.14\" -DPACKAGE_STRING=\"ctffind\ 4.1.14\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"ctffind\" -DVERSION=\"4.1.14\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -Dwx_is_available=1 -I. -I..  -I/m100_scratch/userinternal/dmolina1/CCTF/wxwidget/wxWidgets/install/lib/wx/include/gtk2-unicode-3.1 -I/m100_scratch/userinternal/dmolina1/CCTF/wxwidget/wxWidgets/install/include/wx-3.1 -D_FILE_OFFSET_BITS=64 -DwxDEBUG_LEVEL=0 -DWXUSINGDLL -D__WXGTK__ -DwxUSE_GUI=0 -DNDEBUG -funroll-loops -O3 -Wall -pipe -fexpensive-optimizations -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -I/m100_scratch/userinternal/dmolina1/CCTF/wxwidget/wxWidgets/install/lib/wx/include/gtk2-unicode-3.1 -I/m100_scratch/userinternal/dmolina1/CCTF/wxwidget/wxWidgets/install/include/wx-3.1 -D_FILE_OFFSET_BITS=64 -DwxDEBUG_LEVEL=0 -DWXUSINGDLL -D__WXGTK__ -DwxUSE_GUI=0 -DNDEBUG -funroll-loops -O3 -Wall -pipe -fexpensive-optimizations -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fopenmp -MT src/core/ctffind-matrix.o -MD -MP -MF src/core/.deps/ctffind-matrix.Tpo -c -o src/core/ctffind-matrix.o `test -f 'src/core/matrix.cpp' || echo '../'`src/core/matrix.cpp

 

../src/core/matrix.cpp:16:33: error: impossible constraint in ‘asm’
     FLOATSINCOS(x, sin_x, cos_x);  \
                                 ^
../src/core/matrix.cpp:208:5: note: in expansion of macro ‘MAKE_ROTATION_f’
     MAKE_ROTATION_f(x, y, z);
     ^~~~~~~~~~~~~~~
../src/core/matrix.cpp:17:33: error: impossible constraint in ‘asm’
     FLOATSINCOS(y, sin_y, cos_y);  \
                                 ^
../src/core/matrix.cpp:208:5: note: in expansion of macro ‘MAKE_ROTATION_f’
     MAKE_ROTATION_f(x, y, z);
     ^~~~~~~~~~~~~~~
../src/core/matrix.cpp:18:33: error: impossible constraint in ‘asm’
     FLOATSINCOS(z, sin_z, cos_z);  \
                                 ^
../src/core/matrix.cpp:208:5: note: in expansion of macro ‘MAKE_ROTATION_f’
     MAKE_ROTATION_f(x, y, z);
     ^~~~~~~~~~~~~~~

make: *** [Makefile:814: src/core/ctffind-matrix.o] Error 1

I configured like this

../configure --enable-static --enable-openmp FC=gfortran F77=gfortran

I am afraid that the problem is related to the function __asm__ that is present only in matrix.cpp  file. Do you have a suggestion to solve this issue? Does the software support IBM Power9 systems?

Many thanks for your availability.

Best regards,

Diego

 

 

Hello Diego,

Apologies for this problem. 

Could you please change line 7 of src/core/matrix.cpp from:

#define _AL_SINCOS(x, s, c)  __asm__ ("fsincos" : "=t" (c), "=u" (s) : "0" (x))

to 

#if defined(__i386__) || defined(__x86_64__)
#define _AL_SINCOS(x, s, c) __asm__ ("fsincos" : "=t" (c), "=u" (s) : "0" (x))
#else
#define _AL_SINCOS(x, s, c) s = sinf(x); c = cosf(x);
#endif

and try again?

Thanks,
Alexis