Programming for the Linux Cluster
The primary purpose of the SCV Linux Cluster is to run multiprocessor applications. The system
consists of 1 login nodes, cootie.bu.edu, and 30
compute nodes. The login node is for code development and compilation, while the compute nodes are dedicated to serial and multiprocessor batch processing.
Before proceeding to compile your code, be sure to go to the
Code Porting page first to see if there are any
hardware or software constraints that might affect your code.
If your code requires external packages (e.g., linear algebra subroutines
), go to the Packages page to see what is available. On the Cluster, all multiprocessor jobs must be submitted to the batch system to run on the back-end. This topic is covered in the Running
Jobs page.
Compile
The primary means for multiprocessing on the Cluster is MPI. Technically, OpenMP is also supported. However, because shared-memory support is
limited to the 2 processors within each node, running a code parallelized with
OpenMP alone is not practical.
There are several C and Fortran compilers from different vendors available on
the Cluster. Overall, they perform comparably, both in single processor
and multiprocessor (MPI) modes. Hence, the compiler choice should probably
be based on your familiarity and preference, rather than on performance
grounds. However, if you use a compiler's automatic parallelization feature,
it is possible that one compiler may be more effective than another. This is
highly code-dependent.
In addition, there may be more than one version of a vendor's compiler
available on the system at any given time.
To see which versions of compilers are currently selected by the system,
use the command:
cootie:~ % module list
Currently Loaded Modulefiles:
1) gcc/3.4.5(default)
2) intel/9.0(default)
3) mpichgm/1.2.6..14b_gcc(default:mpich-gcc)
For users who prefer to use the system's default compilers, no action is
required.
For users who prefer to use a specific version of a compiler, there are three
approaches.
If your code does not require a specific compiler, then the first approach is to simply use
the system default compilers (i.e., GNU compilers). In this case, you don't have to
take any action. On the other
hand, if you must use a particular compiler, then you may want to consider one of the two
approaches below.
The second approach is to find out
where the particular compiler resides and provide the exact path for it
when you use it -- thereby bypassing the system default. The advantage of
this method is that you know exactly what you are using.
The third approach is to override the system default via the
module command. The advantage of
this method, especially if you make the selection via the module
command in your starting shell script, is essentially that you picked your own
default compiler and no absolute path needs to be provided.
Shown below is a table which includes all of the available compilers with
details on two key parallel features: OpenMP and MPI.
* The leading character, "i", represents an
Intel compiler.
  GNU C compiler. This is the system default C (
cc) compiler.
Scratch Space Usage
Each Cluster node has its own /scratch filesystem. These filesystems are intended to be used for temporary storage space by a local compute node. You can access a remote scratch space via the pathname "/net/nodexxx/scratch", where xxx is the node number. Please note that scratch files older than 10 days are automatically removed by the system. Files in /scratch are NOT BACKED UP.
In regards to using scratch space, you should use only the local scratch whenever possible as it will be more efficient than accessing scratch of another node. Here are some additional details on /scratch:
- If you are on a node, a reference to /scratch automatically points to the local node's /scratch, which is equivalent to /net/`hostname`/scratch.
- From any of the compute nodes, you will NOT be able to access either Skate or Cootie's scratch.
- You CANNOT access
cootie scratch from skate or vice versa.
- To access
cootie or skate's own (local) scratch, type "cd /scratch" at system prompt.
Programming Tools
|