Sparx is parallelized using MPI on python level and requires python wrapper called MyMPI to run parallel jobs. The following instructions will guide you through the installation of MyMPI. EMAN2 has to be installed before one can proceed.
The installer is meant to work in one of the three possible situations:
* Installation on a customized cluster:
- Requirements: MPI environment and gcc compiler. In all likelihood both are provided by default. If in doubts, please consult the cluster manager. Should the installation script fail because of lack of MPI environment or gcc compiler,most likely you will have to use "module load" command to load appropriate module.
* Installation on a Linux workstation:
- You need gcc compiler and make tool. They may be already installed - you can try to execute "gcc" and "make" from command line to check it. If you cannot find them, most likely they will have to be installed using the package management program. At this point one can also install a favorite MPI environment (both runtime and developer packages are needed). However, if you do not have MPI installed, installation script will download and install it for you.
* Installation on a Mac workstation:
- Requirements: Xcode package. It may be already installed - one can try to execute "gcc" from command line to check it. Xcode can be installed from App Store and is available for free (Apple registration is required). Additional package called "Command line tools" must be installed.
numpy conflict on OS X Yosemite - the operating system contains its own version of numpy, so the one installed by EMAN2 binary installer has to be removed:
rm -rf /Applications/EMAN2/extlib/site-packages/numpy
- At this point one can also install a favorite MPI environment (both runtime and developer packages are needed). However, if you do not have MPI installed, installation script will download and install it for you.
You have to use 32-bit version of EMAN2 on 32-bit OS and 64-bit version of EMAN2 on 64-bit OS. In other case the following error will appear during MyMPI compilation:
"LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)."
Download and install MyMPI
Download MyMPI package prepared for sparx
Use this link http://ncmi.bcm.edu/ncmi/software/counter_222/software_121 to download the latest version of pydusa-1.15es-XXX.tgz (XXX stands for version number).
Unzip the package
Run the following command to unzip the file
tar -xzf pydusa-1.15es-XXX.tgz
This should create a new folder pydusa-1.15-sparx-8 within the current directory.
Run the installation script
(Note for advanced users: you can omit this step and configure and build MyMPI by yourself - see INSTALL file from pydusa-1.15es-XXX directory for further details.)
Enter folder pydusa-1.15es-XXX and run install_mpi.py script.
cd pydusa-1.15es-XXX ./install_mpi.py
It will try to configure and compile MyMPI wrapper using your current MPI library. If you do not have MPI installed, it will fail with appriopriate message. In this case one may use parameter "--force" to download and install default MPI environment (but do not do it on a custom cluster - consult the cluster manager instead):
It will download and install MPI for you and proceed with MyMPI installation (openmpi-1.10.2 will be installed in EMAN2 directory).
Start sparx and try import mpi. If it runs OK (without any error message) the installation is complete.
After successful installation you can safely remove pydusa-1.15es-XXX.tgz archive and pydusa-1.15es-XXX directory. Please keep in mind that if you reinstall EMAN2 you have to repeat the entire MPI installation procedure. However, one can keep the directory pydusa-1.15es-XXX unchanged and after reinstallation of EMAN2 simply run ./install_mpi.py from it.
On some linux machines OpenMPI may not work properly with Python wrapper (errors about "undefined symbols" will appear). It may be solved by one of the following:
* Recompile the OpenMPI library with additional option "--disable-dlopen" passed to the configure script (root privileges are needed to do that)
* Set the environment variable LD_PRELOAD=<path_to_libmpi.so>
Should everything else fail, please contact: Pawel.a.Penczek(at)uth.tmc.edu.