This version (2022/06/20 09:01) was approved by msiegel.

Small bug in line 658 in src/backprojector.cpp:

change:

double myfsc = XMIPP_MAX(0., DIRECT_A1D_ELEM(fsc, i));

to:

double myfsc = XMIPP_MAX(0.001, DIRECT_A1D_ELEM(fsc, i));
Configure VSC-1

on VSC-1 only gcc works currently well. Intel 10.x and 11.x have problems with some part of the code.

CPPFLAGS="-I/usr/include " \
CFLAGS="-L/usr/lib64 -lpthread" \
LDFLAGS="-L/usr/lib64 -lpthread" \
CXXFLAGS="-L/usr/lib64 -lpthread" \
MPICXX="mpicxx -DMPICH_IGNORE_CXX_SEEK " \
CXX=g++ \
CC="gcc" CPPFLAGS="-I/usr/include " \
CFLAGS="-L/usr/lib64  -lpthread" \
./configure --enable-mpi \
--prefix=/home/lv70172/blaas/software/relion-1.1
Configure VSC-2

Configure: (Note '\' characters are on all lines, i.e. following paragraph is treated like one single line by bash):

With INTEL MPI + IntelCompiler:

CPPFLAGS="-I/opt/fftw/3.3/intel_12.1_O3_pic/include " \
CFLAGS="-L/opt/fftw/3.3/intel_12.1_O3_pic/lib -lpthread" \
LDFLAGS="-L/opt/fftw/3.3/intel_12.1_O3_pic/lib -lpthread" \
CXXFLAGS="-L/opt/fftw/3.3/intel_12.1_O3_pic/lib -lpthread" \
MPICXX="mpicxx -DMPICH_IGNORE_CXX_SEEK " \
CXX=icpc \
CC="icc" CPPFLAGS="-I/opt/fftw/3.3/intel_12.1_O3/include " \
CFLAGS="-L/opt/fftw/3.3/intel_12.1_O3/lib  -lpthread" \
./configure --enable-mpi \
--prefix=/home/lv70172/blaas/software/relion-1.1

With gcc and intelmpi, first use INSTALL.sh to compile fftw for relion itself. FFTW on VSC-2 althoug configured very similarly, did not work here:

CPPFLAGS="-I/home/lv70172/blaas/software/relion-1.1_gcc/include " \
CFLAGS="-L/home/lv70172/blaas/software/relion-1.1_gcc/lib -lpthread" \
LDFLAGS="-L/home/lv70172/blaas/software/relion-1.1_gcc/lib -lpthread" \
CXXFLAGS="-L/home/lv70172/blaas/software/relion-1.1_gcc/lib -lpthread" \
MPICXX="mpigxx -DMPICH_IGNORE_CXX_SEEK" \
CXX=g++ \
CC="gcc" CPPFLAGS="-I/home/lv70172/blaas/software/relion-1.1_gcc/include " \
CFLAGS="-L/home/lv70172/blaas/software/relion-1.1_gcc/lib  -lpthread" \
./configure --enable-mpi \
--prefix=/home/lv70172/blaas/software/relion-1.1_gcc

Compiling and Installation (VSC-1 and VSC-2)

Then:

make
make install 

For installing the GUI edit INSTALL.sh:

BUILD_FFTW=false
BUILD_FLTK=true
BUILD_RELION=false
BUILD_RELION_GUI=true

Finally execute:

./INSTALL.sh

When running jobs on the queue, place a file 'qsub.bash' in the 'gui' directory of relion:

#!/bin/bash
#$ -pe XXXqueueXXX XXXmpinodesXXX
#$ -e XXXerrfileXXX
#$ -o XXXoutfileXXX
#$ -cwd
#$ -V

#needed on VSC-1:
export IPATH_NO_CPUAFFINITY=1

mpirun -machinefile $TMPDIR/machines  -np XXXmpinodesXXX  XXXcommandXXX

Settings in the GUI:

  • queue name: mpich
VSC-2: GCC and INTEL MPI

Compile FFTW from relion sources, because VSC FFTW showed some errors:

in INSTALL.sh set:

BUILD_FFTW=true
BUILD_FLTK=false
BUILD_RELION=false
BUILD_RELION_GUI=false

execute:

#might be needed to remove path to pgi because fftw does not compile, at least on vsc-1
PATH=`echo $PATH | sed -e s?/opt/sw/pgi/linux86-64/13.7/bin:??`

./INSTALL.sh

Somewhere a missing 'include' directive. Add to 'src/mpi.cpp' at the very beginning of the file:

#include <stdio.h>

Configure and install Relion: RELION_PREFIX should be the source directory of the current version

GNU compiler

For gcc use:

#export RELION_PREFIX=/home/lv70172/blaas/software/relion-1.2_gcc
export RELION_PREFIX=`pwd`

CPPFLAGS="-I${RELION_PREFIX}/include " \
CFLAGS="-L${RELION_PREFIX}/lib -lpthread" \
LDFLAGS="-L${RELION_PREFIX}/lib -lpthread" \
CXXFLAGS="-L${RELION_PREFIX}/lib -lpthread" \
MPICXX="mpigxx -DMPICH_IGNORE_CXX_SEEK" \
CXX=g++ \
CC="gcc" CPPFLAGS="-I${RELION_PREFIX}/include " \
CFLAGS="-L${RELION_PREFIX}/lib  -lpthread" \
./configure --enable-mpi \
--prefix=${RELION_PREFIX}


make 
make install

Intel Compiler

For the Intel compiler first compile and install the FFTW libraries by editing the following lines in INSTALL.sh:

BUILD_FFTW=true
BUILD_FLTK=false
BUILD_RELION=false
BUILD_RELION_GUI=false

...

#################### FFTW ###########################
if $BUILD_FFTW; then
  echo -e "$GREEN Compiling $VFFTW ...$ENDC"
  echo -e "See $RELION_HOME/external/fftw_build.log for details"
  cd external
  tar -zxf $VFFTW.tar.gz
  cd $VFFTW
  CC=icc CPP=cpp MPICC=mpiicc F77=ifort ./configure --enable-openmp --enable-shared prefix=$PREFIX > $RELION_HOME/external/fftw_build.log
  make $N_THREADS >> $RELION_HOME/external/fftw_build.log
  make install >> $RELION_HOME/external/fftw_build.log
  cd ../..
fi

Then run:

./INSTALL.sh

Then execute

export RELION_PREFIX=`pwd`

CPPFLAGS="-I${RELION_PREFIX}/include "\
CFLAGS="-L${RELION_PREFIX}/lib -openmp -lpthread -liomp5" \
LDFLAGS="-L${RELION_PREFIX}/lib -lpthread" \
CXXFLAGS="-L${RELION_PREFIX}/lib -openmp -lpthread -liomp5" \
MPICXX="mpiicpc -DMPICH_IGNORE_CXX_SEEK" \
CXX=icpc \
CC="icc" \
CPPFLAGS="-I${RELION_PREFIX}/include " \
CFLAGS="-L${RELION_PREFIX}/lib -openmp -lpthread -liomp5" \
./configure --enable-mpi --prefix=${RELION_PREFIX}

make 
make install

Finally recompile ctf by editing the appropriate Makefile in software/ctf:

all: ctffind3.exe ctftilt.exe

ctffind3.exe: ctffind3.o iof.o ioc.o
        ifort -xHost -openmp -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \
        ctffind3.o iof.o ioc.o -o ctffind3.exe

ctftilt.exe: ctftilt.o iof.o ioc.o
        ifort -xHost -openmp -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \
        ctftilt.o iof.o ioc.o -o ctftilt.exe
        \rm *.o

ctffind3.o: ctffind3.f
        ifort -xHost -openmp \
        -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \
        -w -c ctffind3.f

ctftilt.o: ctftilt.f
        ifort -xHost -openmp \
        -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \
        -w -c ctftilt.f

iof.o: iof.f
        ifort -xHost -openmp \
        -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \
        -w -c iof.f

ioc.o: ioc.c
        icc -DPROTOTYPE -Dalliant -D_FILE_OFFSET_BITS=64 \
        -D_LARGEFILE_SOURCE -w -c ioc.c

Then execute make -f Makefile

For installing the GUI edit INSTALL.sh:

BUILD_FFTW=false
BUILD_FLTK=true
BUILD_RELION=false
BUILD_RELION_GUI=true

Finally execute:

./INSTALL.sh

When running jobs on the queue, place a file 'qsub.bash' in the 'gui' directory of relion:

#!/bin/bash
#$ -pe XXXqueueXXX XXXmpinodesXXX
#$ -e XXXerrfileXXX
#$ -o XXXoutfileXXX
#$ -cwd
#$ -V

#needed on VSC-1:
export IPATH_NO_CPUAFFINITY=1

mpirun -machinefile $TMPDIR/machines  -np XXXmpinodesXXX  XXXcommandXXX

The generated submit script should be modified to look like this:

#!/bin/bash
#$ -pe mpich 128
#$ -e particles.err
#$ -o particles.out
#$ -cwd
#$ -V

export I_MPI_DAT_LIBRARY=/usr/lib64/libdat2.so.2
export OMP_NUM_THREADS=1
export I_MPI_FABRICS=shm:dapl
export I_MPI_FALLBACK
export I_MPI_CPUINFO=proc
export I_MPI_PIN_PROCESSOR_LIST=0-15
export I_MPI_JOB_FAST_STARTUP=0
unset PE_HOSTFILE


mpirun -machinefile $TMPDIR/machines -np $NSLOTS `which relion_preprocess_mpi` --o particles --ctffind "Micrographs/*.mrc" --ctfWin -1 --CS 2 --HT 300 --AmpCnst 0.1 --XMAG 79372 --DStep 15 --Box 512 --ResMin 100 --ResMax 7 --dFMin 5000 --dFMax 50000 --FStep 500 --ctffind3_exe /home/lv60000/jz/users/blaas/software/ctf/ctffind3.exe --coord_files "Micrographs/*.poscorr" --extract --coord_format xmipp2 --extract_size 240 --norm --bg_radius 100 --white_dust 3.5 --black_dust 3.5 --invert_contrast

Settings in the GUI:

  • queue name: mpich

Installation Procedure with Intelcompilers and Intelmpi:

umask 0022
my_src=/opt/src/relion/relion-1.3
my_inst=INSTALL_vsc.sh
my_prefix=/opt/sw/relion/1.3-intel/
cp_dirs="bin include lib share"

cd $my_src
sed '3 i export MPICXX=mpiicpc ; export CC=icc; export CXX=icpc ' INSTALL.sh > $my_inst
bash $my_inst

mkdir -p $my_prefix
for d in $cp_dirs
do
	cp -r $my_src/$d $my_prefix
done

mkdir -p $my_prefix/gui
echo '
#!/bin/bash
#$ -pe XXXqueueXXX XXXmpinodesXXX
#$ -e XXXerrfileXXX
#$ -o XXXoutfileXXX
#$ -cwd
#$ -V

#needed on VSC-1:
#export IPATH_NO_CPUAFFINITY=1

mpirun -machinefile $TMPDIR/machines  -np XXXmpinodesXXX  XXXcommandXXX
'> $my_prefix/gui/qsub.bash

Add this to .bashrc:

RELION_PREFIX=/opt/sw/relion/1.3-intel
export PATH=${RELION_PREFIX}/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${RELION_PREFIX}/lib
export RELION_QSUB_TEMPLATE="$RELION_PREFIX/gui/qsub.bash"
export RELION_CTFFIND3_EXECUTABLE="/opt/sw/ctf/ctffind3.exe"
  • doku/relion.txt
  • Last modified: 2014/10/22 10:00
  • by markus