Hippu User's Guide > Program development > Running programs
Tehdyt toimenpiteet

Running programs

This section gives a short introduction on how to run programs on Hippu.

Foreground jobs

On Hippu a user runs programs without a scheduler. For example:

./my_own_serial_executable

This way is suitable for programs whose runtimes are fairly short, because you cannot use the terminal window to any other purpose and you must wait until the program will finish execution or you can open an another terminal window for some other work. However, the input for the program can be given from the terminal window during the execution of the program if the program reads from standard input and if that is not redirected from a file. The options can be given in the above command, if program uses such, and the normal redirection of standard input, output and error can be used, too. The execution of the program can finished or interrupted with the hangup signals like ctrl-C.

Background jobs

If the execution time of the program is long or you can not wait until the program is finished, the following form of the command can be used:

nohup ./my_own_serial_executable&

The command nohup in front of the executable command means that the program will ignore hangup signals like ctrl-C, which does not interrupt the execution of the program. The ampersand (&) at the end of the command means that the program executes in background and you can use the terminal window for other purposes, but your program should not read any input directly from the terminal or write to the terminal. Standard input, output and error should be redirected to files. However, you can even exit the shell and close the terminal window and your program still continues to run without the terminal control until it finishes itself. The terminal session seems to hang after the shell exit, but you can still close the terminal window safely.

Please, remember in which one of the servers your program was running. You may open later a new terminal window for checking is your program still running, e.g. by the command ps -fu user_id where user_id is your user id. If you got a session from other server you can log on the another server by the command ssh server or you can give the ps command in the form ssh server ps -fu user_id.  server in these commands is hippu1, hippu2, hippu3 or hippu4 with or without .csc.fi. No user id or password is not requested.

If you want to interrupt the program prematurely from the window, where the program was started as a background job, you may bring the job into the foreground with the command fg and then use ctlr-C. If you have several background programs running at the same time you can connect interactively to the pogram which you want with the command fg %job where job is the number given by the command jobs.

You may also use the command kill -9 pid where pid is the process id of your program given for example by the command ps. You may use the kill command also from some other terminal window (possibly opened later) on the same server if you know the process id and even from the another server by the command ssh server kill -9 pid.

Module environment

Some programs might need a purpose-built environment, i.e., a module file. Typically, a module file contains instructions that alter or set shell environment variables, such as PATH to enable access to various installed software or libraries.

To view the modulefiles that are currently loaded in your environment
module list

All the available modulefiles can be seen

module avail

If the program needs access to specific shared libraries that are defined in a modulefile load the modulefile before running the executable. You do not have to do this if the modulefile is already loaded by yourself or by default. Below is an example

module load modulefilename

In addition to the environment set by the module commands your program may need some additional settings or there is a need to copy files or make or change directories before the execution of the program. In such cases it may be better to write all needed module and other commands including the execution command and possible postprocessing commands after that to a shll script and run this script instead of giving all the commands from a command line.

See also Chapter Module environment.

Where should I keep my data and applications

There are several disk areas available. Some are suitable for data processing and storage, while some work better as storage for your own applications. Choosing the proper type of disk areas for your task is important. If you compile your own applications, then the right place where you should install them is in your user application directory $USERAPPL. Please note that this folder is not the same space on the newer and in the older servers, as the former support RHEL6, while the latter RHEL5, and the applications should be compiled for the correct operating system. The main directory for storing data is $WRKDIR. If faster I/O is crucial for your application, consider using $TMPDIR on hippu3 and hippu4, or  $FCWRKDIR on hippu1 and hippu2. If you would like to share your data with other computing servers like Murska or Louhi, then the right place to save it is in $METAWRK. For more information, see the chapter storing and moving files.