Cluster Computing

From Peyton Hall Documentation

(Difference between revisions)
Jump to: navigation, search
m
Line 21: Line 21:
=== Getting access to Hydra ===
=== Getting access to Hydra ===
-
Students or postdocs wishing to use hydra for computations should discuss with their supervisor whether use of hydra is called for (i.e., parallel computations are needed, and whether the code has been debugged and appropriately optimized).  The supervisor should send email to help@astro requesting that the student or postdoc be given access to hydra, and confirming that the research problem calls for parallel computations.  We'll add your account to the list of those allowed to login, and create the necessary directories on the scratch disks for you to store data.
+
Students or postdocs wishing to use hydra for computations should discuss with their supervisor whether use of hydra is called for (i.e., parallel computations are needed, and whether the code has been debugged and appropriately optimized).  The supervisor should [[Requesting assistance|contact us]] and request that the student or postdoc be given access to hydra, and confirm that the research problem calls for parallel computations.  We'll add your account to the list of those allowed to login, and create the necessary directories on the scratch disks for you to store data.

Revision as of 17:26, 21 May 2007

No, we're not talking about star clusters - not this time, anyway. We're talking about Beowulf clusters, or to use a more general term "computer clusters". Not the same as what OIT calls their "computer labs".


Contents

Introduction

So what is a cluster? It's a set of machines, usually (but not necessarily) on a private network which is attached to a dual-homed "master node". Dual-homed means it sits on two networks at the same time, and may even act as a router between the two. This master node will allow logins, and is where you setup your large parallel jobs. Once the job is submitted, software on the master connects to the drones and runs the job there. This software is designed to fairly execute programs when there is available resources for them, and make sure that someone doesn't start a job on the same nodes that you're using for your processes so that everyone's programs get fair share of the machine.


Hydra

Hydra is a 92 node Beowulf cluster housed in the basement server room of Peyton Hall. Eight of the nodes have only 1GB of memory, another eight have 2GB of memory, and the remainder have 4GB. The nodes have dual processors ranging in speed from 2.2GHz to 3.06GHz.


Status

This section will be updated with status information for Hydra as necessary.

  • The Chimera disk (/chimera on Hydra, and /peyton/scr/chimera0 elsewhere) is truly a scratch disk, in that it is not and will not be backed up. It is a hardware RAID-5 array with one hot spare disk, and should handle most hardware failures without incident.
  • An additional RAID array has been installed on the Hydra cluster, named Chimera. Its scratch disk is mounted on Hydra as /chimera. To access it from the rest of the department, use the path /peyton/scr/chimera0. It is mounted to all the nodes, also as /chimera, and should be the preferred location for storing inputs and outputs from your programs.
  • There is another storage space on Cerberus, mounted as /work on Hydra. This disk used to be mounted on the nodes directly as well, however NFS load problems and network overloading caused it to be unmounted.
  • Some usage policies have been posted; please feel free to comment on them by sending mail to the cluster list. They are not strict policies that must be adhered to, but more like general guidelines to be kept in mind while submitting jobs to the systems. They are posted below.
  • Hydra was just upgraded to 4GB of system memory on the master. This should help to cache some of the data which will be requested via NFS mounts, especially if that data is re-read multiple times, or from multiple nodes simultaneously.
  • Also, a bug was recently fixed in PBS, which caused every node to report having only 864MB of memory. Each node now properly reports the amount of RAM it has, so everyone should be specifying the amount of memory your jobs require through the PBS resource list ("#PBS -l mem=1380MB", for example). Maui will Do The Right Thing and only assign the job to a node with that much available RAM.


Getting access to Hydra

Students or postdocs wishing to use hydra for computations should discuss with their supervisor whether use of hydra is called for (i.e., parallel computations are needed, and whether the code has been debugged and appropriately optimized). The supervisor should contact us and request that the student or postdoc be given access to hydra, and confirm that the research problem calls for parallel computations. We'll add your account to the list of those allowed to login, and create the necessary directories on the scratch disks for you to store data.


Hydra usage policies

The following policies should be kept in mind while running jobs on the clusters. They are not strict rules, but more like guidelines to make sure that all users get a fair share of the processors.

  • Any user who wants to run lengthy jobs on more than about half the available processors at one time should announce this fact to the cluster mailing list in advance. How far in advance should depend on the length of the jobs. For instance, if the jobs will be running for a day or more, then a day or half a day in advance would be appropriate. If the jobs will take a few hours, an hour or so of advance notice is probably enough.
  • Several, perhaps 5 or 6, processors should be left available at most or all times for relatively short-running jobs (on the order of an hour or less). Of course, if your job requires all the processors of the cluster, this doesn't mean you can't run it, but should definitely ask around the cluster list first to make sure others don't have jobs they will need to run during that time.
  • Jobs should not be run on Hydra itself, nor should any intensive programs be run on it (for example, IDL or Mathematica). The master node is primarily for controlling the cluster and storing input or output data, as well as compiling code that will run on the machines. Running programs such as IDL on the master node takes away from the CPU time and memory available to other users for compiling and the scheduling processes. Processes such as these may be killed, especially if they're eating up resources.
  • If you are submitting for publication a paper that uses computational results obtained on hydra, please acknowledge support from NSF grant AST-0216105 [e.g., "This research used computational facilities supported by NSF grant AST-0216105"]. Please send email to draine@astro.princeton.edu with information on the paper (title, author, where submitted) for use in reporting to the NSF on use of the cluster.


Submitting jobs to Hydra

Hydra uses the Portable Batch System (PBS) for job management. You'll find information about how to use it in the PBS article.


FAQ

I have a bunch of serial jobs to run.

Don't use a cluster for them. Clusters are built with high performance networking, high speed disk access, and many tweaks to tune the most performance out of computers for parallel processing jobs - those that use multiple processes spread across many computers. Serial jobs will clog a cluster, since all they do is use a single CPU, and tend to read or write a lot of data to disk (which also clogs the I/O system of the cluster), while parallel jobs tend to talk to each other to exchange data, writing checkpoint information to disk as necessary (and usually only from one process, not all of them). If you have serial jobs to run, you should use Condor to submit them to the idle machines in the building instead of tying up nodes of the cluster.


Can I speed up my compiling?

Yes, you can speed things up with the '-j' option to make. From the man page:

-j jobs
   Specifies the number of jobs (commands) to run simul�-
   taneously.   If there is more than one -j option, the
   last one is effective.  If the  -j  option  is  given
   without  an  argument, make will not limit the number
   of jobs that can run simultaneously.

So using 'make -j2' will cause make to run 2 instances at the same time, which is good for a dual-processor machine. If you want it to just run wild, run 'make -j', and it will fork as many as it can at the same time.


See also

  • Condor, a batch scheduling system which is perfect for serial jobs that would otherwise clog the cluster.
  • MPICH, an implementation of the Message Passing Interface commonly used in large parallel jobs.
Personal tools