Skip to content

unkaktus/robin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿง robin

robin is a tool for easy job managment on HPC like referencing by name, logging, logging into nodes.

Works across Slurm and PBSPro.

Easy installation using Mamba

Install MambaForge on your cluster. In case you don't have internet access there, you can use mitten (https://github.com/unkaktus/mitten).

Then, install robin itself:

mamba install -c https://mamba.unkaktus.art robin

Installation using Go

  1. Install MambaForge on your cluster. In case you don't have internet access there, you can use mitten (https://github.com/unkaktus/mitten).

  2. Install Go

mamba install go
  1. Install robin:
go install github.com/unkaktus/robin/cmd/robin@latest
  1. Add $HOME/go/bin into your $PATH into your .bashrc:
export PATH="$HOME/go/bin:$PATH"

Manual building

  1. Install Go (https://go.dev)

  2. Build robin for Linux:

git clone https://github.com/unkaktus/robin
cd robin/cmd/robin
env GOOS=linux GOARCH=amd64 go build
  1. scp the robin binary to your favorite supercomp and add it to your $PATH.

Example uses

List jobs

$ robin list
โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚         NAME          โ”‚  STATE  โ”‚ QUEUE โ”‚          TIME           โ”‚ NODES โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Compare_Apples        โ”‚ R [0]   โ”‚ small โ”‚ [8%] 2h0m41s/24h0m0s    โ”‚     8 โ”‚
โ”‚ Compare_Oranges       โ”‚ Q [0]   โ”‚ small โ”‚ [0%] 0s/20h0m0s         โ”‚     2 โ”‚
โ”‚ Compare_Bananas       โ”‚ F [9]   โ”‚ small โ”‚ [0%] 0s/20h0m0s         โ”‚    16 โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

Logs

Open full logs in $EDITOR (defauts to vim):

$ robin logs Compare_Apples

Follow the log tail of a job:

$ robin logs -f Compare_Apples

Shell

To connect to the shell on the job nodes, you first need to start your job binary via robin nest:

[mpirun -n 16] robin nest ./exe/binary

For nest on PBS Pro, you need to export the following variable inside your job:

export MPI_SHEPHERD=true

Then, to connect to the shell of the node 1 of running job Compare_Apples:

$ robin shell Compare_Apples 1
node123$

Stopping jobs

Cancel job Compare_Apples:

$ robin cancel Compare_Apples

Portable jobs

Start a portable job using compare_apples.begin file and configuration file data.csv for the run:

$ robin begin -f compare_apples.begin data.csv

Remote commands

Do all above without logging manually to the cluster:

$ robin on supercomp list
$ robin on supercomp shell compare_apples

This requires to have robin to be installed and added to the PATH there.

Port forwarding

Forward a port to the node of a job:

$ robin port-forward -p 11111 -m supercomp compare_apples

Changing directory to the job root

You might want to add the following function to your .bashrc, that will bring you to the directory from which the job was submitted:

cdj () {
        cd $(robin list --json | jq -r '.[] | select(.Name=="'$1'").WorkingDirectory')
}

Note that it requires jq.