Version 1.7.0

Distributed access to Bsoft

The most efficient way to manage Bsoft (and other software) in a laboratory with many workstations, and potentially a variety of platforms, is to provide a central location for software. Under Unix, this means designating a common disk on the network as a software disk and mounting it on all computers. This allows upgrading the software in only one location, as opposed to every computer.

In addition, the setup proposed below becomes important for distributed processing using Peach, which requires a common disk not only for the

Here is an example setup for a typical laboratory. Assume there are four different platforms with three of them capable of either 32- or 64-bit addressing: Mac OSX (Darwin), Linux, SGI (IRIX) and Tru64 (Alpha OSF1). The choice for the names comes from the result of the command "uname -s" and can be used in an environmental resource file.

The 32-bit versions of Bsoft are required for computers not capable of 64-bit processing (old Macs and 32-bit Linux boxes), or for associated packages. Under Mac OSX 10.4, the Tcl/Tk libraries are still 32-bit which means that the 32-bit version is still required. Under IRIX64 and on Macs, the associated package PFT2/EM3DR2 is still 32-bit and requires a 32-bit version of Bsoft. The 64-bit capable Macs (G5 and Intel) need only one Bsoft directory because all the required versions are incorporated into universal binaries and libraries.


Setting up the environment

The environment can be set in every user account or on every computer. However, it is more efficient to use the common disk and provide a file that sets up all the common software for the whole group. The following resource file should be set up on the common disk and sourced by the system or user resource file on every computer.

Example C-shell resource file text

# Example setup script for paths to Bsoft
# Bernard Heymann
# 20050809

set OS = `uname -s | cut -f1 -d"-"`

# Common programs disk
setenv PROGS /common_disk

# Program directories
setenv BSOFT ${PROGS}/${OS}/bsoft
setenv BSOFT32 ${PROGS}/${OS}/bsoft32

if ( $OS == "Darwin" ) then
        set V = `uname -r | cut -f1 -d"."`
        if ( $V < 8 ) setenv BSOFT $BSOFT32
        if ( `machine` != "ppc970" ) setenv BSOFT $BSOFT32
        if ( $?DYLD_LIBRARY_PATH ) then
                setenv DYLD_LIBRARY_PATH ${BSOFT32}/lib:${BSOFT}/lib:$DYLD_LIBRARY_PATH
        else
                setenv DYLD_LIBRARY_PATH ${BSOFT32}/lib:${BSOFT}/lib
        endif
endif

setenv PATH ./:${BSOFT}/bin:$PATH

if ( $OS == "IRIX" || $OS == "IRIX64" ) then
        if ( $?LD_LIBRARYN32_PATH ) then
                setenv LD_LIBRARYN32_PATH ${BSOFT32}/lib:$IMOD_DIR/lib32:$LD_LIBRARYN32_PATH
        else
                setenv LD_LIBRARYN32_PATH ${BSOFT32}/lib:$IMOD_DIR/lib32
        endif
        if ( $?LD_LIBRARY64_PATH ) then
                setenv LD_LIBRARY64_PATH ${BSOFT}/lib:$LD_LIBRARY64_PATH
        else
                setenv LD_LIBRARY64_PATH ${BSOFT}/lib
        endif
endif

# Program parameters
setenv BPARAM $BSOFT/parameters/

set symlinks=none


Peach

Managed distributed processing


Peach was developed to allow the user to launch multiple jobs on a distributed cluster composed of different platforms and capabilities. Peach is described and available from the web site below and will only briefly be covered here:

http://lsbr.niams.nih.gov/peach/

The setup explained above can be used, where Peach is installed on the common disk as:
/common_disk/Peach

The only further environmental setup is to add the "PEACH" variable to the resource file and include it in the "PATH" variable:

setenv PEACH ${PROGS}/Peach
setenv PATH ${PEACH}:$PATH

Peach controls its own environmental variables, and these are specified in the .Peachpath file in the Peach directory. Here is an example of what such a file need to look like:

# .Peachpath
# type in all required enviromental variables needed for running programs on the
 respective systems

Darwin:
$ENV{PATH} = "./:/bin:/usr/bin:/common_disk/Darwin/bsoft32/bin:/common_disk/Darwin/bsoft/bin";
$ENV{BPARAM} = "/common_disk/Darwin/bsoft/parameters/";
$ENV{DYLD_LIBRARY_PATH} = "/common_disk/Darwin/bsoft32/lib:/common_disk/Darwin/bsoft/lib:";

Linux i686:
$ENV{PATH} = "./:/bin:/usr/bin:/common_disk/Linux/bsoft32/bin";
$ENV{BPARAM} = "/common_disk/Linux/bsoft32/parameters/";
$ENV{LD_LIBRARY_PATH} = "/common_disk/Linux/bsoft32/lib";

Linux x86_64:
$ENV{PATH} = "./:/bin:/usr/bin:/common_disk/Linux/bsoft/bin";
$ENV{BPARAM} = "/common_disk/Linux/bsoft/parameters/";
$ENV{LD_LIBRARY_PATH} = "/common_disk/Linux/bsoft/lib";

IRIX64:
$ENV{PATH} = "./:/bin:/usr/bin:/common_disk/IRIX64/bsoft/bin:";
$ENV{BPARAM} = "/common_disk/IRIX64/bsoft/parameters/";
$ENV{LD_LIBRARY_PATH} = "/common_disk/IRIX64/bsoft/lib";
$ENV{LD_LIBRARYN32_PATH} = "/common_disk/IRIX64/bsoft32/lib";
$ENV{LD_LIBRARY64_PATH} = "/common_disk/IRIX64/bsoft/lib";

OSF1:
$ENV{PATH} = "./:/bin:/usr/bin:/common_disk/OSF1/bsoft/bin";
$ENV{BPARAM} = "/common_disk/OSF1/bsoft/parameters/";
$ENV{LD_LIBRARY_PATH} = "/common_disk/OSF1/bsoft/lib";