Parallel Computing

From UFRC
Revision as of 21:49, 27 February 2015 by Sahar (talk | contribs) (Created page with " {|align=right |__TOC__ |} ==Parallel Computing== Parallel computing refers to running multiple computational tasks simultaneously. The idea behind it is based on the assu...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Parallel Computing

Parallel computing refers to running multiple computational tasks simultaneously. The idea behind it is based on the assumption that a big computational task can be divided into smaller tasks which can run concurrently.

Single Instruction Multiple Instructions Single Program Multiple Programs
Single Data SISD MISD
Multiple Data SIMD MIMD SPMD MPMD

Types of parallel computing

Parallel computing is used only for the last row of below table;

Windows

Microsoft Windows does not come with a built-in SSH client. You have to download a client from the web. We recommend the following software:

MacOS

For MacOS users, the connection instructions are very similar to those for Linux/Unix users.

Terminal, the terminal emulation application under MacOS is located in Applications/Utilities.

Both FileZilla and Cyberduck are available for MacOS if you prefer a graphical interface for transferring files.

Running Graphical Programs

See the Gui Programs page for information on running graphical user interface applications at UFRC.

Getting Help

If you are having problems connecting to the UFRC system, please let the UFRC Staff know by submitting a Support Request.

Interactive work under Linux

Once you are logged in to a Research Computing server, you will find yourself at a Linux command line prompt. That may be daunting at first. However, you only need to know a small subset of Linux commands to accomplish most tasks. There are many Linux "Getting Started" guides online and in print. Below are just a few possibilities. Many more are easily found via a Google search.

A Few Basic Commands

While it is advantageous to have a working knowledge of the most common Linux commands, it is not a requirement. For the uninitiated, the following information may be useful as well as a good "Introduction to Using Linux" book.

Command Description
ls List files in the current directory
cd Change directory
more View a file's contents
mkdir <dir> Create a directory
cp file1 file2 Copy a file
mv file1 file2 Move (i.e. rename) a file
rm file Delete a file
rmdir dir Delete an empty directory

Editing

Editing files on the cluster can be done through a couple of different methods...

Native Editors

  • vi - The visual editor (vi) is the traditonal Unix editor. However, it is not necessarily the most intuitive editor. That being the case, if you are unfamiliar with it, the following tutorial may be useful.
    • VI Tutorial
    • Another resource for vi is right here on our wiki.
    • There is also a vi tutorial, vimtutor. Once logged in, simply type "vimtutor" at the command line to start the tutorial.
  • emacs - Emacs is a much heavier duty editor, but again has the problem of having commands that are non-intuitive. Again, we have provided a link to a tutorial for this editor.
  • pico - While pico is not installed on the system, nano is installed, and is a pico work-a-like.
  • nano - Nano has a good bit of on-screen help to make it easier to use.

External Editors

You can also use your favorite editor on your local machine and then transfer the files over to the Research Computing afterwards. One caveat to this is that with files created on Windows machines, usually contain unprintable characters which may be misinterpreted by Linux command interpreters (shells). If this happens, there is a utility called dos2unix that you can use to convert the text file from DOS/Windows formatting to Linux formatting.

Using Installed Software

We use Environment Modules to provide access to the installed software. Read about the basic usage of environment modules for information on loading software.

Running Jobs

Trivial Example

#! /bin/sh
#PBS -N testjob
#PBS -o testjob.out
#PBS -e testjob.err
#PBS -M <INSERT EMAIL HERE>
#PBS -r n
#PBS -l walltime=00:01:00
#PBS -l nodes=1:ppn=1
#PBS -l pmem=100mb

date
hostname

module load python
python -V

To submit this job from gator.hpc.ufl.edu, you would use the following command:

$ qsub <your job script>

To check the status of running jobs, you would use the following command:

$ qstat [-u <username>]

DRMAA

It's possible to submit jobs by using the scheduler API via the DRMAA library. A python example that uses our installed Python DRMAA library can be found in Example_pbs-drmaa_python_script.

Notes on Batch Scripts

  • The script can handle only one set of directives. Do not submit a script that has more than one set of directives included in it.

Job Status

You can view the job status of your jobs and your group's jobs via the PBS Job Status page as described in PBS Job Status Documentation

Scratch Storage

See Scratch for notes on the main high-performance storage.

Developmental Nodes

See Test_Nodes to read about the available interactive servers.