Berkeley UPC Site and Job Startup Information

As a general rule, the UPC compiler presents a very portable interface to the user across a wide variety of Operating Systems and High-Performance networks. However, there are always site specific details such as programming environments, compiler installations, batching systems that cannot be captured by the build and runtime process. For example, the GM conduit runs over Myrinet, a highly available network which unfortunately presents no real job spawning interface. The following table describes the job startup mechanisms currently supported:

GASNet/GM Job Startup Mechanisms

Site InstallationInformationGASNet/GM spawning command
MPICH/gm Distributed as mpirun.ch_gm.pl with the MPICH distribution. it should be noted that GASNet/GM only supports the script from the MPICH 1.2.5..10 distribution mpirun -np NP
MPICH/gm or LAM The mpiexec utility provides the best portability and keeps track of Myricom's changes to the spawner interface (many sites have already adopted it and it is available from http://www.osc.edu/~pw/mpiexec/). mpiexec -n NP
gexec The gexec utility is another cluster remote execution system, and is often used in conjunction with the gstat and Ganglia cluster management software (available from http://www.theether.org/gexec/). The GEXEC_SVRS can be set to target a specific list of nodes to be used for the job. gasnetrun_gm -n NP --gexec
Others / Berkeley UPC Default As a fallback mechanism and also installed by default in uprun.conf, the GASNet/GM contrib directory contains a gasnetrun_gm.pl perl script. It is added as a commodity for clusters which do not necessarily have some of the above site-specific spawners or for administrators which may want to tailor a spawning script. A '-v' verbose output may help debug the script. gasnetrun_gm -n NP

Berkeley UPC installation sites

There are currently 4 different sites on which our UPC compiler is operating.

1. NERSC 'Alvarez' Myrinet Cluster

This is an experimental Myrinet/GM cluster at NERSC, which generally has rather light traffic, yet is fairly stable.

The login for the machine is alvarez.nersc.gov. The homepage (including information on how to get accounts) is at

    http://www.nersc.gov/alvarez/

To compile UPC programs on alvarez

  1. Make sure that your shell startup files include a line to set up the 'modules' system (they should have them unless you've overwritten the default .profile, etc. that were given to you as a new user). For bash, use

    source /usr/local/pkg/Modules/init/bash

    Note: the alvarez convention seems to be for you to put any customizations in your .bashrc.ext file (or .profile.ext, .login.ext, etc.), rather than in .bashrc itself.

  2. Make sure you have the 'upc', 'gcc', 'pbs', and 'maui' modules loaded, and make sure you do not have the 'pgi' one (which they load in by default in their initial login scripts) present. You can do this either by editing the default module commands in your .bashrc file directly, or adding

    module delete pgi
    module add upc gcc pbs maui

    to your .bashrc.ext file.

  3. In order to build the GM conduit, make sure the following two environment variables are set to point to the latest GM revision:
    	GM_INCLUDE = /usr/gm/include
    	GM_LIB     = /usr/gm/lib
        

  4. Compile/link your program with upcc (see the upcc man page for details).

To run UPC programs on alvarez

To run programs, you must use the PBS batch system. Generally you'll want to do this interactively:

  1. Enter PBS via

    qsub -I -l nodes=2,walltime=5:00:00.

    This shouldn't take more than a minute or so (you can use qstat to examine the job queue), and you can remain in the session for up to 5 hours. You will now be logged onto a compute node on the system, but the file system is largely the same, so you generally won't notice the difference.

  2. The GM conduit install the gasnetrun_gm script in the GASNet bin directory and should be used to start jobs (as described in the GASNet/GM spawning mechanisms table above). Alternatively, the mpirun script from MPICH 1.2.5..10 can be used exactly as described below for MPI jobs.

  3. If you have built your UPC program to run over MPI instead of the default GM conduit (i.e., you compiled with "upcc -network mpi"), then you should not use the gasnetrun script, and instead should use the MPI startup script mpirun as follows:

    mpirun -machinefile $PBS_NODEFILE -np 2 executable_name

    where '2' is the number of nodes, and 'executable_name' is your program. To allow a little less typing, the upc module contains a program called mpirun-batch, which can simply be called as

    mpirun-batch executable_name

  4. Exit the shell to leave PBS and return to your alvarez session.

2. FTG PC Fast Ethernet Cluster

This is a system maintained by our group at LBL. You'll need an account on n2001.lbl.gov to use the cluster.

The only conduit supported on the FTG cluster at present is MPI.

To compile UPC programs on n2001

  1. Make sure that your shell startup files include a line to set up the 'modules' system (they should have them unless you've overwritten the default .profile, etc. that were given to you as a new user). For bash, use

    source /usr/local/pkg/Modules/init/bash

  2. Add

    module add mpich pbs upc

    to your shell's startup script, to ensure you've got the correct MPI libraries, PBS, and our UPC compiler in your PATH.

    Multiple versions of our UPC compiler are present on this system: use 'modules avail' to see a list of them. The version that a plain 'module add upc' will load is shown with a '(default)'. This is generally the right version to be using, but other versions can be loaded via 'module load upc/1.0-debug', etc. You can switch between versions via 'module switch upc upc/stable-opt', for instance (you can always just use 'upc' as the first argument, no matter which upc module you actually currently have loaded).

  3. Compile/link your program with upcc (see the upcc man page for details).

To run UPC programs on n2001

To run programs, you must use the PBS batch system. Generally you'll want to do this interactively:

  1. Enter PBS via

    qsub -I -l nodes=2,walltime=5:00:00.

    This shouldn't take more than a minute or so, and you can remain in the session for up to 5 hours. You will now be logged onto a compute node on the system, but the file system is largely mapped to n2001's, so you generally won't notice the difference.

  2. Run programs with 'mpirun program'. The number of nodes specified in your qsub command will automatically be used.

  3. Exit the shell to leave PBS and return to your n2001 session.

More information on using the PC cluster is available at http://www.nersc.gov/research/FTG/pcp/user/x86cluster.html.

3. 'ymca' Linux Myrinet cluster

We have a temporary login to this system, located at ymca.lbl.gov. It has a particularly nice setup, being a very new machine, with Myrinet LANai9.2 and a 64bit/66MHz PCI bus.

YMCA uses LAM/MPI instead of MPICH, which makes a difference for booting GM jobs. LAM uses a per-use daemon for process and environment control and the 'lamboot' utility must be run prior to invoking upcrun. The connection to the daemon is per-user and is thus remains active even if new terminals are created to run more upc jobs.

The 'lamboot' utility should only be run once -- any attempt to run it more than once will kill all previous connections to the LAM daemon. The LAM/MPI environment on YMCA can be "booted" as follows:

    wwnodes --mpi > lamhosts.out
    lamboot -v lamhosts.out

    upcrun -np 2 testprogram1
    upcrun -np 2 testprogram2
    upcrun -np 2 testprogram3
If a different set of nodes is required, 'lamhalt' can be run and the boot process can be run again.

YMCA does not share the GM library across all slave nodes. As a result, you must always pass upcc '-Wl,-static' in order to compile the GM library into the binary (note: this may change in the near future). You can do this by putting the flag in 'default_options' in your $HOME/.upccrc file.

4. Citris/Millennium UCB Cluster

This is a 32-node Myrinet/XP (GM-2) Itanium-2 cluster, where each node contains 4GB of memory. The installation is rather brittle and NFS performance is sometimes flaky.

To compile UPC programs on citrus

  1. Because of the absence of modules, the PATH variable must be adjusted to contain /usr/mill/pkg/gm/bin:/usr/mill/pkg/mpich-gm/bin.
  2. The following additional environment variables must be set:
    	CC         = /usr/bin/gcc-3.3
    	GM_INCLUDE = /usr/gm/include
    	GM_LIB     = /usr/gm/lib
        

To run UPC programs on citrus

The system currently does not contain a batch scheduler and there is no node reservation mechanism other than gexec. It is therefore deprecated for performance runs, since stray processes can already be running on the selected nodes. Gexec either works in a mode where the user specifies the nodes to use or resorts to using gstat which keeps some load balancing information in order to select nodes to use.

  1. Specific nodes can be selected by setting the GEXEC_SVRS to a list of Internet hostname style:
    	GEXEC_SVRS = "c17 c18 c19 c20"
        
  2. Broken or unresponsive nodes can be filtered out by setting the GEXEC_SVRS_IGNORE variable to a list nodes to be ignored by gexec.
Finally, a job can be started using
    gasnetrun_gm -np NP --gexec