Skip to content

Deployment on EEE

Bartosz Bosak edited this page Dec 6, 2016 · 1 revision

This page describes a possible and recommended way of installation of MUSCLE2 on the ComPat EEE resources. The instruction refers to compat branch. In order to get more detailed descriptions for the master branch, see the Installation section.

Dependencies

In order to install MUSCLE from source, you need at least:

  • a recent Java runtime (Java 6 or higher);
  • a Ruby interpreter
  • the CMake build system.

Getting the sources

The most current sources of muscle2 can be cloned from githab. It is important to checkout a proper branch:

git clone https://github.com/psnc-apps/muscle2.git
cd muscle2
git fetch
git checkout compat

Building & Installation

The building and installation process of MUSCLE2 is based on CMake scripts and may be performed purely with CMake. However, in order to simplify production deployments on EEE, it is advised to use prepared helper bash scripts.

Following the CMake rules, the process of building MUSCLE2 should be performed in the build directory:

cd build

In this directory, there is a build.sh script which steers the build process. It takes a couple of parameters that may be displayed with -h:

./build.sh -h
USAGE: ./build.sh [OPTIONS]
Builds and installs MUSCLE to specific directory using provided settings
If no options are specified MUSCLE will be tried to build using configuration
from files with predefined names and then installed in /opt/muscle

Options:
  -c, --config=FILE         use configuration stored in FILE
  -i, --install-prefix=DIR  install to DIR
  -g, --use-git-tag         create a subdir in DIR with the name of last git tag
  -p, --performance         include C++ performance counters
  -h, --help                display this message

The -c/--config option allows to use some site-specific configuration stored in a given file. For ComPat, a special folder with predefined configuration files for EEE resources was created.

E.g. for the resource Inula, the configuration file compat/inula.conf looks as follows:

module load plgrid/tools/openmpi
module load plgrid/tools/python/2.7.3
export INSTALL_PREFIX=/home/plgrid-groups/plggcompat/Common/muscle2/inula/inst

For such a configuration, the build process may be invoked in the following way:

./build.sh -c compat/inula.conf -g

If succeeded, MUSCLE2 will be installed to $INSTALL_PREFIX/LAST_GIT_TAG_NAME directory.

Note: The presented build configuration doesn't enable performance counters required by Allinea tools. In order to enable them add -p option to ./build.sh command.

#Modules In the EEE MUSCLE2 should be available to use after loading special ComPat environment module.

Example module

A module for MUSCLE2 in version compat-1.0 installed on Inula looks as follows:

#%Module1.0#####################################################################
##
## MUSCLE2 Modulefile
##
proc ModulesHelp { } {
        global version

        puts stderr "\tThis module sets environment variables for the compat branch of MUSCLE2."
        puts stderr "\tThe module details:"
        puts stderr "\t* target resource: inula"
        puts stderr "\t* tag: compat-1.0"
}

module-whatis   "Sets environment variables for the compat branch of MUSCLE2"

module add plgrid/tools/python/2.7.3
module add compat/common/ruby

set MUSCLE_HOME "/home/plgrid-groups/plggcompat/Common/muscle2/inula/inst/compat-1.0"
setenv MUSCLE_HOME $MUSCLE_HOME
setenv MUSCLE_MTO "192.168.11.102:20303"
setenv MUSCLE_PORT_MIN "20506" 
setenv MUSCLE_PORT_MAX "20599"
setenv QCG_COORDINATOR_URL "http://150.254.161.193:21000/"

if { ! [info exists ::env(SESSION_ID)] } {
     setenv SESSION_ID $env(USER)
}

prepend-path PATH "${MUSCLE_HOME}/bin"
prepend-path LD_LIBRARY_PATH "${MUSCLE_HOME}/lib"

set curMod [module-info name]

if { [ module-info mode load ] } {
        puts stderr "$curMod load complete."
}

if { [ module-info mode remove ] } {
        puts stderr "$curMod unload complete."
}

set     version      "compat-1.0"

Location of modules

All ComPat modules should be created in the Modules directory being the 1st-level subdirectory of the ComPat shared directory ($COMPAT_SHARED). For the QCG purposes, the same directory - so the same set of modules - should be linked to the hidden .qcg-modules subdirectory as well.

With the jobs started by QCG, the defined modules will be added to MODULES_PATH automatically and available to easy use in executed tasks. In case of jobs not submitted by QCG, MODULES_PATH should be manually prepended with the $COMPAT_SHARED/Modules.

For MUSCLE2, in the simplest case (without specifying a version) the module should be available under the following command:

module load compat/common/muscle2

Thus, the module file for such a case should be stored in $COMPAT_SHARED/Modules/compat/common/muscle2. All version-specific modulefiles should be stored in subdirectories of that directory.

Clone this wiki locally