HiPACE Logo

The Washburn University
High-Performance Academic
Computing Environment

On this page:

Types of Users

At this time there are three ways you can use the HiPACE system:

  • Using a Web Browser (appropriate for many users)
  • Using a Command-Line interface through Putty (for compiling and running non-graphical programs)
  • Using an X-Windows Emulator (necessary for running graphical (GUI) programs on HiPACE)
Most HiPACE users will be web-based users. If you are a web-based user, you will not need an account on the HiPACE system itself. You will be able to access the resources you need via a web browser running on a remote desktop connection. Many of the programs available on the HiPACE system can be downloaded from the web site and actually run locally on your PC.

If you need a command-line interface or a graphical user interface (GUI) on the HiPACE system (to compile and run non-graphical or GUI programs that run on the HiPACE system), please contact one of the HiPACE system administrators:

David Bainum - david.bainum@washburn.edu,
Bruce Mechtly - bruce.mechtly@washburn.edu or
Steve Black - steve.black@washburn.edu.

A Note Regarding HiPACE Connectivity

Due to circumstances beyond our control at the present time the only way to connect to the HiPACE system is through a Windows 2003 server. The hostname "hipace.washburn.edu" is actually assigned to this Windows 2003 server and not to the HiPACE system itself. This means that command-line and GUI HiPACE users will always need to go through two separate logins. Also, HiPACE web resources cannot be reached through web browsers on the internet, but only through a web browser running on the Windows 2003 server, which will require logging in.

We are sorry for this inconvenience. It is our hope that this state of affairs is temporary.

Connecting to HiPACE
Step 1. Connecting to the Windows 2003 Server

Please Note: The HiPACE administrators have no control over user accounts on the Windows 2003 server. If you are unable to successfully connect to this system please contact ISS for assistance.

Connecting to the Windows 2003 Server using Windows XP

Click on Start - All Programs - Accessories - Communications - Remote Desktop Connection

In the "Computer" box type in "hipace.washburn.edu" and click on "Connect". Use the same username and password that you use for other WUAD computers on campus.

Connecting to the Windows 2003 Server using Windows Vista

Click on Start - All Programs - Accessories - Remote Desktop Connection

In the "Computer" box type in "hipace.washburn.edu" and click on "Connect". Use the same username and password that you use for other WUAD computers on campus.

Connecting to the Windows 2003 Server using SuSE Linux

Click on K-Menu (the chameleon icon) - Applications - System - Remote Access - Remote Desktop Connection (Krdc) (or type "krdc" on the command line)

In the "Remote Desktop" box type in "hipace.washburn.edu" and click on "Connect". Use the same username and password that you use for other WUAD computers on campus.

Connecting to the Windows 2003 Server using Mac OS

Note: The Remote Desktop Connection software is not native to the Mac. If you have a Microsoft Office for Mac disk you should be able to install it from there.

Click on Finder - Applications - Microsoft Office 2004 - Additional Tools - Remote Desktop Connection - Remote Desktop Connection

In the "Computer" box type in "hipace.washburn.edu" and click on connect. Use the same username and password that you use for other WUAD computers on campus.

Step 2. Connecting to HiPACE from the Windows 2003 Server
Web-Based Users

On the Windows 2003 server open up Internet Explorer and type "http://master" into the "Address" box. You should see the HiPACE home page.

Putty Command-Line Users (non-graphical)

On the Windows 2003 server open up Internet Explorer and in the "Live Search" box type in "putty". Click on the link labelled "Putty Download Page". Next click on the link that says "putty.exe" and save this file to your desktop. While you're at it, also download Psftp from the same page.

To connect to the HiPACE system, double click on the "putty.exe" icon and type "master" or "monster" into the "Host Name" box. Master is the master node of the cluster and monster is the SMP box. Click on "Open" and use the username and password you were given by the HiPACE system administrators. You can save time later by giving the connection a name in the "Saved Sessions" box and then clicking on "Save". The next time you open Putty, just double-click on the session name and it will save you the effort of typing in the host name.

X-Windows Users (for running grahical programs on HiPACE)

On the Windows 2003 Server there should be an icon on your desktop named "X-Manager". Double-click on that icon and it will open up a folder with several other icons it in. Double-click on the icon named "Xstart". It will open up a window. In the "Session" box type in "Master" or "Monster" depending on which machine you want to connect to. In the "Host" box type in "master" or "monster" (note the lower case). Under "Protocol" select "RLOGIN". Put your HiPACE (not WUAD) username into the "User Name" box. Type your HiPACE (not WUAD) password in the "Password" box. Next, click on "Run" and it should give you a remote desktop to either Master or Monster.

Changing Your HiPACE Password

You can change your password on HiPACE by typing the command "passwd" at the command line. Your password must be at least 7 characters long and must not be a dictionary word.

Using Basic Linux Commands

If you are using Linux on the command-line and you want to learn more about UNIX and Linux, follow this link to a UNIX tutorial that may be of some help. UNIX and Linux are nearly 100% compatable. Skip the parts about AIX. That part of the tutorial is somewhat out of date.

Click here for a summary of UNIX/Linux commands.

Most Linux users need to know how to use the "vi" text editor. Here is a link to a vi tutorial that will help you use vi to edit text files.

Moving Files To and From HiPACE

Under the current setup of HiPACE you can move files between HiPACE and your WUAD directories in one step. If you want to move your files to any other computer on the internet, you will have to transfer your files twice.

To move your files you can use either the "WinSCP" program on the Windows 2003 desktop or the Psftp program that you can download from the Putty download page.

Using WinSCP to Transfer Files

To open WinSCP double-click on the "WinSCP" icon on the Windows 2003 desktop. It will open a new window. In the "Host name" box type in either "master" or "monster" (note the lower case). In the "User name" box type in your HiPACE (not WUAD) username. In the "Password" box type in your HiPACE (not WUAD) password (you can also leave the password box empty if you'd rather type it in later). Then click on "Save". A new window will appear. In this window click on "Login" and it will connect you to the appropriate machine.

When you are connected it will open a window with your local directories on the left and the HiPACE directories on the right. On the upper-left side there is a drop-down box where you should select the "N:" drive. That way your files will be stored where you can get to them from any WUAD computer on campus. Now you should be able to drag and drop files and directories from HiPACE to your WUAD directories and vice versa.

If you need to transfer your files to or from another server on campus or on the internet, you can type in the hostname of that machine and use WinSCP to transfer between your WUAD directories and any remote machine that is accessible over the internet.

Using Psftp to Transfer Files

Psftp works in a similar way to WinSCP except that you will need to type the host name every time and you will need to change directories on the command line.

To start Psftp just double-click on the icon named "psftp.exe". At the "psftp>" prompt type in "open master" or "open monster" depending on which machine you want to connect to. It will respond with "Login as:" whereupon you type in your HiPACE (not WUAD) username. It will then prompt for your password and you should type in your HiPACE (not WUAD) password. When connected type "cd directoryname" to change remote (master or monster) directories or "lcd directoryname" to change directories on the Windows 2003 server. When you are ready to transfer files type in "get filename" or "put filename" to transfer from HiPACE to the Windows 2003 server or to HiPACE from the Windows 2003 server respectively.

Programming Languages on HiPACE

Java

You can compile java programs on the command line as follows:

  javac ClassName.java
To run a java program use the following command:
  java ClassName

C

You can compile C programs with the following command:

  gcc -o execfile.exe sourcefile.c
The result is an executable named "execfile.exe". To run the executable, simply type its name on the command line. On some nodes you'll need to type a "./" in front of the executable's name or it won't find it.

If your program uses math functions like sqrt and sin, you should add the "-lm" option to the gcc command (BTW that's a lower case L not a 1).

FORTRAN

Note:The g95 compiler is currently only available on the "master" node.

You can compile FORTRAN programs with the following command:

  g95 -o execfile.exe sourcefile.f
The result is an executable named "execfile.exe". To run the executable, simply type its name on the command line. On some nodes you'll need to type a "./" in front of the executable's name or it won't find it.

Distributed Programming on the HiPACE Cluster
The Distributed Shell - dsh

Perhaps the easiest way to distribute a programming project is to use dsh. It will run linux commands on all nodes or on particular compute nodes. If your batch programs use command-line arguments you can pass different parameters to each program so that every compute node is working on a different part of the problem. We'll give an example shortly.

To run a command on all 34 compute nodes use the following command:

   dsh -a command
To run a command on a particular node (node 5 for example) use the command:
   dsh -w cnode5 command
Here's a simple example of how you can distribute a program that calculates data at various time intervals. This works if each time interval can be calculated independently of the other intervals. Let's say the program is called "simulation.exe" and we pass it a time value and a filename where the result will be stored. Create a file called "batch1.bash" with the following contents:
  #!/bin/bash
  dsh -w cnode1 simulation.exe 0.1 data01.txt
  dsh -w cnode2 simulation.exe 0.2 data02.txt
  dsh -w cnode3 simulation.exe 0.3 data03.txt
  dsh -w cnode4 simulation.exe 0.4 data04.txt
      . . .
The first line is a linux standard for a bash shell script. After the script is saved you need to give yourself execute access to it. Run the following command:
  chmod u+x batch1.bash
You can run the batch program on the command line like this:
  ./batch1.bash
If you have a lot of batch programs to run it is probably worth taking the time to write a program that generates the batch shell script as its output.

MPI - The Message Passing Interface

Using MPI you can write programs that share data between the various programs while they run on different compute nodes. Click on this link to see a great MPI Resource Page.

One important difference between MPI programs and non-MPI programs is how one compiles and runs the programs. Before compiling you should load the appropriate module for the MPI environment. For C programs type the following command:

  module load mpich/enet-gcc
You can see what modules are available with the command "module avail".

To compile a C program that has MPI calls in it, use the command:

  mpicc -o programname.exe programname.c
It will create an executable called "programname.exe".

As with C compiling with the gcc compiler, if you use math functions like sqrt, sin, cos, etc you should use the "-lm" option with mpicc.

To run the executable produced by mpicc use the command
  mpirun -np 10 programname.exe
where the -np option tells it to distribute the program over 10 nodes. It is a good idea to write your code in such a way that it will work no matter how many nodes you run it on. This will make it more flexible in the future when you may have to run it on fewer nodes than you wish due to down time or heavy load. However, sometimes a program needs to have an even number of nodes or even a power of 2.

A popular way to write MPI programs consists of writing one program that does different things depending on which compute node it runs on. The program uses calls to "MPI_Comm_size" and "MPI_Comm_rank" to determine how many nodes are being used in the problem and which particular node this program is running on. For example, if there are 10 nodes working on the problem, then "size" will be 10 and "rank" will be a number between 0 and 9, depending on the node.

Within the program we use an if to determine what to do on this particular node. In the following C example, the node of rank 0 opens a file and waits for data from the other nodes which all solve the problem for a different time value:

     . . .
  if(rank==0)
  {
    //open the data file and wait for data from other nodes
  }
  else
  {
    for(i=rank;i<=max_time_steps;i+=size-1)
    {
      float time=i*0.1;
         . . .
    }
  }
     . . .
In this example, if there are 10 nodes working on the problem (size=10) the node with rank=1 will work on times 0.1, 1.0, 1.9, etc. The node with rank=2 will work on times 0.2, 1.1, 2.0, etc.

Data can be passed between the nodes using MPI_Send and MPI_Recv. In the example above the node with rank=0 will call MPI_Recv in a for loop where we specify which compute node we are receiving data from (which is incremented in a round-robin fashion so the data can be written to the file in order). Compute nodes of rank=1 through 9 will use MPI_Send to send their results to the node of rank 0.

Notice that the for loop that assigns time values to work on ensures that the time values are processed in an efficient way. The time values 0.1 through 0.9 are all being done concurrently and values 1.0 through 1.8 are done next (presumably concurrently, unless some nodes fall behind). Since the node with rank=0 is blocked waiting for the results in order of time value, it is important to get the time values processed somewhat in order. The calls to MPI_Send and MPI_Recv will synchronize the nodes to a degree, so it is important to proceed in a way that results in the shortest blocking time.

For the coding details see this MPI Tutorial.