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.
- /common_disk/
- Darwin/
- bsoft
- bsoft32
- Linux/
- bsoft
- bsoft32
- IRIX64/
- bsoft
- bsoft32
- OSF1/
- bsoft
- bsoft
- Darwin/
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";