Hands-On: logging in, editing, compiling, and starting a job
Logging in to the "Fritz" cluster at RRZE
If you are sitting at a terminal at FAU
You can log in directly from a terminal window via ssh:$ ssh -X your_account@fritz.nhr.fau.de
If you are outside FAU or on your own laptop via WiFi
You can either log in via ssh or use the NoMachine NX client. If you use ssh, you have to "proxyjump" through our only exposed host , cshpc.rrze.fau.de:$ ssh -X -J your_account@cshpc.rrze.fau.de your_account@fritz.nhr.fau.de
This will log you in to one of the "Fritz" frontends, fritz[1-4]. Wherever you log in, your $HOME will always be the same.
Copying example code to your home directory
You will mostly be working on example code that we provide. The file(s) for the examples are available in the teacher account. In order to copy a specific code, e.g., "HELLO", you just type:
$ cp -a ~z34d0000/HELLO ~
This copies the whole folder, including any subfolders, into your $HOME.
Editing and compiling code
Standard editors like vim, nano, and emacs are available on the frontend nodes. If you really need a GUI-based editor, we do not recommend that you use X forwarding over your DSL connection - the experience will most probably be unpleasant. Instead, use NoMachine NX to fire up a persistent desktop session on cshpc and use "ssh -X" to fritz from there. It is good practice to have at least two terminal windows open: one with a connection to the frontend to do editing, compiling, and other interactive stuff, and one for actually executing a job (see below).
Most software, including compilers and some libraries, is available via the "modules" system. The "module load <x>" command loads software module "<x>", i.e., it sets some environment variables (e.g., PATH) so you can use the software. For loading the Intel compiler and the Intel MPI library, you type:
$ module load intel intelmpiAfter that, you have a C (icx), C++ (icpx), and a Fortran (ifx) compiler at your disposal. In addition, an Intel MPI module is loaded. The example codes you will be working with are quite simple. The Intel compiler accepts the same options (well, mostly) as the GCC (here shown for a C code):
$ icx -Ofast my_source.c
In order to make the compiler recognize OpenMP directives, you have to add "-qopenmp" to the command line. For MPI code you have to use one of the provided wrapper scripts (mpiicx, mpiicpx, mpiifx). They behave like normal compilers except that they "know" where to find the MPI headers and libraries.
It is good practice to do all editing and compiling on a frontend node. Not all tools and libraries you need may be available on the compute nodes.
Running a batch job
In order to run something on the cluster, you have to start a "batch job," i.e., you specify some amount of resources and the system decides when these resources will be available to you. During working hours (9:00 a.m. - 5:00 p.m.), some nodes of Fritz are reserved for the course participants so nobody has to wait if they only allocate a single node. In order to start an interactive batch job, the simplest way is to use salloc:
$ salloc -N 1 --time=01:00:00
This way, the environment (including modules) will be "inherited" from the shell on the frontend. The command line above allocates one node (-N 1) for one hour (--time=01:00:00) and starts a login shell as soon as these resources become available (this should be very quick).
As soon as your job runs out of time, all your processes on the allocated node(s) will be terminated.
You may also run batch jobs non-interactively (recommended for real production runs) via the "sbatch" command. See
https://doc.nhr.fau.de/batch-processing/batch_system_slurm/