Getting Started

Acquiring a user account

For participants of the workshop, please skip to Accessing Chalawan.

The process below describes how to register for an account. For further information please contact


Register for an account via online registration. We will review your information and activate your account within one working day. After the account is activated, you may now log in and fill in an application form.


Fill an online application form and submit. Once completed, you should receive notification of our decision within a week and further query regarding required software and setup if any.


Once your account and required setup are ready, we will send you email regarding account details and how to login to Chalawan cluster.


You can learn how to submit a job as well as uploading/downloading your file to/from Chalawan cluster from this page. Now you can launch your first job.


You can monitor Chalawan cluster status and utilization in the user-login area where you can also monitor the status of your submitted jobs.

The command-line interface

Our operating system is based on GNU/Linux. Thus, a command-line interface or command language interpreter (CLI) is the primary mean of interaction with our HPC. In case you are not familiar with the command-line interface, free-online course at Codecademy is a good place to start.

Accessing the Chalawan

For Microsoft Windows user, see Connect to the Remote Server from Microsoft Windows.

The Chalawan cluster is an isolated system which resides in the NARIT’s internal network. At the present time, we have two systems, Castor and Pollux (hereafter the computing systems).

  • Castor is the old system which is assigned with the IP address It contains 16 traditional Compute nodes suited for CPU-intensive tasks.
  • Pollux is the newest one assigned with the IP address It contains 3 GPU nodes and 3 traditional Compute node which have been refurbished from Castor.

If you are using the internet inside NARIT network you can directly connect to these systems via the Secure shell (ssh) command.

Connection from outside NARIT network

However, if you are using the internet outside NARIT, you need to log in to the gateway machine, A.K.A. stargate, first. The gateway machine’s IP address and other information are given to you once you get the permission to access the Chalawan Cluster.

Secure shell (ssh) through an intermediate host (the gateway)

This is the easiest method that using the ProxyJump directive. If this method doesn’t work for you because you are using the very old version of ssh, please read the next section.

To use ProxyJump, you can simply add the flag -J followed by user@gateway.ip:port. The example below shows how to connect to Castor (don’t forget to replace gateway.ip and port with the given information from the email).

If this is the first time you connect to our system, the gateway will prompt you to change the given password. Please remember that the password on the gateway and the computing system is not synchronised. After the password on the gateway is changed, please continue to log in to the computing system with the given (old) password. You can then change your password on the computing system with the command passwd.

If the command is correct, it will ask you for the gateway password and then the password. The successful connection will print an output:

The naive method

For an older version of ssh, this method always works for you. Log in to the gateway machine with the given port number:

After that, log in to the computing system (in this case, Castor):

Transferring data

Direct connection

These commands are applicable if you are using the internet inside NARIT network. Otherwise, please read the next section.


Rsync is a file transfer program capable of efficient remote update
via a fast differencing algorithm. It is the recommended command for transferring files or directories.

For example,

will copy a directory called src on to the research241 machine to castor at /home/user/src. Note that transferring an empty directory to the destination directory will delete all files in the destination directory to create another empty directory, too.

SecureCopy (scp)

scp is a basic command used to transfer files. For more information about scp, run man scp or scp -h. Note that option -r is recursive.

Transferring a file from a remote machine (in this case, Castor) to the local machine.

Transferring multiple files from a remote machine to the local machine.

Transferring a file from the local machine to a remote machine.

Through an intermediate host

Rsync through an intermediate host

This method requires OpenSSH’s version is equal or newer than 7.3 (to check, please use the command ssh -V). If you are using an older version or for the full details on this method, see Rsync files via intermediate host.

Rsync through the gateway machine is simple. You can use -J (ProxyJump) option.

For example

will copy a directory src from local machine (your laptop or PC) through the gateway machine to the remote machine, castor, at /home/user/src. Don’t forget to replace user@gateway.ip.address:port with the actual information from our email.

SCP through an intermediate host

Likewise rsync, This method also requires OpenSSH’s version is equal or newer than 7.3 (to check, please use the command ssh -V). If you are using an older version or for the full details on this method, see scp files via intermediate host.

For example

Using Module Environments

The Modules package provides dynamic modification of the user’s environment via modulefiles. List of all available modules are displayed; when typing the command module avail or module av:

To use a module of a library or software, type the command module load followed by the name of the modulefile. This will modify a user’s environment variables. The user may remove the environment setting by unloading the loaded modulefile, or by logging out of the system.

To unload a module, use the command module unload modulefile. Many modulefiles can be loaded at the same time by typing module load name1 name2 ....

If you would like to know which modules have been loaded, you can use module list. Sometimes, it is convenient to remove all the loaded modules which can be done by typing module purge. The example below shows how to load the MUSIC modulefile, list the names, and remove all of them.

Some module may be conflicted with the currently loaded module, so you have to use module switch or module swap module1 module2 to switch from using module1 to module2. For module package documentation type module --help or module -H.

Enhancement of module on the Pollux

We have applied Lmod as a new environment module system. It provides with an alternative minimalist command and solves the module hierarchy problem. Let’s see the output when running a command module avail or ml av.

General Modulefiles are kept in /opt/ohpc/pub/modulefiles while OpenHPC’s Modulefiles are kept in a hierarchy of directories. Modulefiles in /opt/ohpc/pub/moduledeps/gnu8 appear only when the Modulefile gnu8 is loaded. This directory shows all the software compiled with GNU Compiler Collection (GCC) version 8. 

The following directory follows the same style as well. Modulefiles in /opt/ohpc/pub/moduledeps/gnu8-openmpi3 appear only when openmpi3/3.1.3 in /opt/ohpc/pub/moduledeps/gnu8 is loaded. All software containing in this directory are compiled by GCC8 and Openmpi3.

Lmod and OpenHPC organise all Modulefiles this way. It is much easier than looking over a terminal screen trying to find some specific software compiled with a particular compiler. For the details, sees an official user guide.

Introducing a minimal style

Lmod provides with effortless alternative control for those who frequently misspell module to such as “moduel” or “mdoule”. On Pollux, Lmod reduces module-related commands to a few characters while you can still use the old fashioned one. For example, you can either call the module list command or just only ml.

Similarly, the command module avail that prints all available Modulefiles, you can use ml av instead. Note that this command doesn’t display all possible Modulefiles. Alternatively, module spider will to the job (we will explain it in the next topic). Lmod shows a default Modulefile with (D) and an in-use module with (L).

Besides, you may load a Modulefile with command ml module_a and unload another one with ml -module_b. It is possible to combine these command into

By default, Lmod always loads the ohpc (OpenHPC) module so you can access Modulefiles containing in /opt/ohpc/pub/moduledeps/. Otherwise, if you run ml purge, you only see the general Modulefiles.