School exercise environment

The goal of this step is for you to get familiar with the ESC working environment and check that everything is correctly set up for the school exercises.

If something doesn’t work as expected, please ask one of the organizers.

When using these computing resources you agree to comply with the “Regulation on the use of INFN computing resources”, available in Italian and English. Please read also the “General information note on processing of personal data by INFN”, available in Italian and English.

Wi-Fi access

You can use either the eduroam federation, ask the organization for an alternative access upon your arrival.

SSH access to School computers

You have been assigned a personal account to access computing resources hosted at INFN-CNAF. Credentials are that of your INFN AAI account.

Most of the exercises will be done on the following host: esc26s.cloud.cnaf.infn.it (IP: 131.154.98.210, that also has the esc26s-01 hostname).

To log on this server, prepared for the School, just SSH on it using your AAI username.

[me@mylaptop ~]$ ssh username@esc26s.cloud.cnaf.infn.it
username@esc26s.cloud.cnaf.infn.it's password:
Last login: ...
[username@esc26s-01 ~]$

From esc26s-01 you can then log onto the other School computers. There are two servers available, named esc2s-01 and esc26s-02. Both are equipped with four nVidia H100 80GB GPUs, 192 physical CPU cores and 1.5 TB of RAM. We will use the second one just for the MPI exercises, and you should not log on it unless the tutors tell you to this explicitely. NOTE that esc26s-02 is not a public hostname and it is known only within esc26s-01.

The names of the machines can be tedious to type, but you can get around it by creating a config file for ssh. With the ssh configuration on your laptop you can also avoid the explicit jump through the esc26s-01 host and forward the X11 display and the SSH agent.

[me@mylaptop ~]$ cat ~/.ssh/config
Host esc1
  Hostname esc26s.cloud.cnaf.infn.it
  User username
  ForwardX11 yes
  ForwardAgent yes


[me@mylaptop ~]$ ssh esc1
username@esc26s-01's password:
Last login: ...
[username@esc26-01 ~]$

To further simplify the login to esc1, you can use an SSH key. You first need to create it (if you don’t have one already), copy it remotely on esc1 and set it in your SSH configuration.

[me@mylaptop ~]$ ssh-keygen -C username@esc1 -f ~/.ssh/id_rsa_student_esc
Generating public/private rsa key pair.
...
[me@mylaptop ~]$ ssh-copy-id -i ~/.ssh/id_rsa_student_esc esc1
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/me/.ssh/id_rsa_student_esc.pub"
...
username@esc26s-01's password:
...

[me@mylaptop ~]$ cat ~/.ssh/config
Host esc1
  Hostname esc26s.cloud.cnaf.infn.it
  User username
  IdentityFile ~/.ssh/id_rsa_student_esc
  ForwardX11 yes
  ForwardAgent yes


[me@mylaptop ~]$ ssh esc1
Last login: ...
[username@esc26s-01 ~]$

Now, to allow passwordless authentication between the to esc nodes for the MPI exercises, you should copy the key-pair and the config file in ~/.ssh/ of esc1 (which is, by the way, also shared with esc2).

[me@mylaptop ~]$ scp .ssh/id_rsa_student_esc esc1:.ssh/
[me@mylaptop ~]$ scp .ssh/id_rsa_student_esc.pub esc1:.ssh/
[me@mylaptop ~]$ scp .ssh/config esc1:.ssh/

Now edit the .ssh/config file in esc1 to add an entry also for esc2.

[username@esc26s-01 ~]$ cat ~/.ssh/config
Host esc1
  Hostname esc26s.cloud.cnaf.infn.it
  User username
  IdentityFile ~/.ssh/id_rsa_student_esc
  ForwardX11 yes
  ForwardAgent yes

Host esc2
  Hostname esc26s-02
  User username
  IdentityFile ~/.ssh/id_rsa_student_esc
  ForwardX11 yes
  ForwardAgent yes

Now you should be able to login passwordless:

  • from your laptop to esc1
  • from esc1 to esc2.
  • from esc2 to esc1

This passwordless login(s) will be important for the MPI exercises.

Try the following, type yes when asked to add a fingerprint (this will be asked only during the first attempt).

[me@mylaptop ~]$ ssh esc1
[username@esc26s-01 ~]$ ssh esc2
[username@esc26s-02 ~]$ ssh esc1
[username@esc26s-01 ~]$

Your shell is bash.

Please note that:

  • Each esc computer is not assigned exclusively to a student.
  • Your home directory is shared between all esc computers
  • Your home directory will be wiped out and your username account will be disabled soon after the end of the School. Please make sure to save somewhere else what you want to keep.

School material

All the school hands-on material is included in a git repository. Get it using:

[username@esc26s-01 ~]$ git clone https://github.com/infn-esc/sesame26.git

The repository contains also these pages.

Check the environment

Once logged into esc, verify that the environment is set up correctly:

[username@esc26s-01 ~]$ gcc --version
gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-11)
...
[username@esc26s-01 ~]$ gdb --version
GNU gdb (AlmaLinux) 16.3-2.el9
...
[username@esc26s-01 ~]$ valgrind --version
valgrind-3.25.1
[username@esc26s-01 ~]$ scl enable gcc-toolset-15 -- gcc --version
gcc (GCC) 15.1.1 20250521 (Red Hat 15.1.1-2)
...

As you can see from the last command, beside the native compiler (gcc v. 11.5), there are also more recent version (gcc v. 14.2 and 15.1), available through a so-called software collection.

To always work with the more recent version, enable the toolset in a new shell:

[username@esc26s-01 ~]$ scl enable gcc-toolset-14 bash
[username@esc26s-01 ~]$ gcc --version
gcc (GCC) 14.2.1 20250110 (Red Hat 14.2.1-7)

[username@esc26s-01 ~]$ scl enable gcc-toolset-15 bash
[username@esc26s-01 ~]$ gcc --version
gcc (GCC) 15.1.1 20250521 (Red Hat 15.1.1-2)
...

Editing source code

Editing locally

On esc you can find several editors available, such as vim, nvim, hx, and emacs. If the X display is available, graphical editors will open a window on your laptop; the network latency however may not be good enough to give you a fine experience. Just try.

Editing remotely

The best option to edit files remotely is to use Visual Studio Code with its remote development extension.

Alternatively you could edit the source code for the exercises on your laptop, synchronizing them with the esc machine, for example using one of the following:

  • scp: You can copy files remotely using scp, in both directions.

  • sshfs: You can mount your esc home directory on your laptop via sshfs.

  • rsync: You can synchronize your local workspace with the one you keep on esc using rsync. Please refer to the rsync manual to fully understand the meaning of the different options, so to avoid mistakes that could cause loss of data.

For all these options to work seamlessly, however, you should first simplify your use of SSH to connect to esc, as described above.

Environment configuration for MPI hands-on

To execute the MPI exercises you should be able to login passwordless among the esc nodes as shown in the previous paragraphs.

OpenMPI is installed and configured on the esc nodes. Just check that the “mpirun” command is avaible in this way:

[username@esc26s-01 ~]$ which mpirun
/opt/hpcx-v2.25.1-gcc-doca_ofed-redhat9-cuda13-x86_64/ompi/bin/mpirun

Environment configuration for TBB hands-on

Set the environment to locate the TBB library

[me@esc1 ~]$ source /opt/intel/oneapi/tbb/latest/env/vars.sh
[me@esc1 ~]$ echo $TBBROOT
/opt/intel/oneapi/tbb/2022.2/env/..

Enviroment configuration for CUDA hands-on

Set the enviroment to locate the CUDA toolkit

[me@esc1 ~]$ export PATH=/usr/local/cuda-13/bin:$PATH
[me@esc1 ~]$ export LD_LIBRARY_PATH=/usr/local/cuda-13/lib64:$LD_LIBRARY_PATH
[me@esc1 ~]$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Wed_Aug_20_01:58:59_PM_PDT_2025
Cuda compilation tools, release 13.0, V13.0.88
Build cuda_13.0.r13.0/compiler.36424714_0