Getting started on Rusty (Flatiron cluster)

See also general instructions for running phantom on a remote cluster.

We assume you already have a Flatiron username and account

First time you log in

Make sure you log in with the -Y flag to enable X-Windows forwarding:

ssh -Y -p 61022 <USER>@gateway.flatironinstitute.org
ssh -Y rusty

show available software:

module avail

load intel compilers and splash

module load intel-oneapi-compilers/2023.0.0
module use ~yjiang/modulefiles
module load splash/3.8.3

get phantom

Clone a copy of phantom into your home directory:

git clone https://github.com/danieljprice/phantom.git

set your username and email address

Ensure that your name and email address are set, as follows:

cd phantom
git config --global user.name "Joe Bloggs"
git config --global user.email "joe.bloggs@monash.edu"

Please use your full name in the format above, as this is what appears in the commit logs (and in the AUTHORS file).

edit your .bashrc file

I put the “module load” commands in a file called ~/.modules which contains the modules I want every time I log in. For example:

$ cat .modules
module load intel-oneapi-compilers/2023.0.0

Then, add the following lines to your ~/.bashrc:

source ~/.modules
export SYSTEM=rusty
ulimit -s unlimited
export OMP_STACKSIZE=512M
export OMP_SCHEDULE=dynamic

Now, when you login again, all these should be set automatically.

Performing a calculation

You should not perform calculations in your home space - this is for code and small files. Calculations should be run in the “ceph” area in /mnt/ceph/users/$USER/

On other machines I usually make a soft link / shortcut called “runs” pointing to the directory where I want to run my calculations:

$ cd
$ ln -s /mnt/ceph/users/$USER runs
$ cd runs
$ pwd -P
/mnt/ceph/users/USERNAME

However on the Flatiron machines there is already a shortcut called “ceph” in your homespace.

Then make a subdirectory for the name of the calculation you want to run (e.g. shock):

mkdir shock
cd shock
~/phantom/scripts/writemake.sh shock > Makefile
make setup
make
./phantomsetup shock

To run the code, you need to write a slurm script. You can get an example by typing “make qscript”:

make qscript NOMP=10 INFILE=shock.in > run.q

should produce something like:

$ cat run.q
#!/bin/bash
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=10
#SBATCH --job-name=audiencia
#SBATCH --partition=gen
#SBATCH --output=shock.in.qout
#SBATCH --mail-type=BEGIN
#SBATCH --mail-type=FAIL
#SBATCH --mail-type=END
#SBATCH --mail-user=daniel.price@monash.edu
#SBATCH --time=0-168:00:00
#SBATCH --mem=16G
echo "HOSTNAME = $HOSTNAME"
echo "HOSTTYPE = $HOSTTYPE"
echo Time is `date`
echo Directory is `pwd`

ulimit -s unlimited
export OMP_SCHEDULE="dynamic"
export OMP_NUM_THREADS=10
export OMP_STACKSIZE=1024m

echo "starting phantom run..."
export outfile=`grep logfile "shock.in" | sed "s/logfile =//g" | sed "s/   \\!.*//g" | sed "s/\s//g"`
echo "writing output to $outfile"
./phantom shock.in >& $outfile

You can then submit this to the “temp” queue using:

$ sbatch -p temp run.q
Submitted batch job 2547013

check status using:

$ squeue -u $USER
          JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
        2547013      temp audienci   dprice  R       0:02      1 worker3109

Once the job is running, follow the output log using the tail -f command:

tail -f shock01.log

splash on rusty

There is a version of splash you can get by loading the relevant module:

module use ~yjiang/modulefiles
module load splash/3.8.3

Alternatively, you can also install a local copy of splash in your home space:

cd
git clone https://github.com/danieljprice/splash
cd splash; git clone https://github.com/danieljprice/giza
make withgiza SYSTEM=ifort

You can add this directory in your path by putting the following lines in your ~/.bashrc file:

export SPLASH_DIR=/mnt/home/dprice/splash
export PATH=${SPLASH_DIR}/bin:${PATH}
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${SPLASH_DIR}/giza/lib

visualising the shock problem

Simple plots with splash can be launched from the command line, e.g.:

splash shock_0* -y density -x x

then press space to step through the snapshots. You can plot the exact solution for the shock tube by switching it on from the o) menu:

Please enter your selection now (y axis or option):o
------------- particle plot options -------------------
8) plot exact solution                 (  3 )
...
enter option ([0:9], default=0): 8
...
3) shock tube
...
enter exact solution to plot ([0:18], default=3):
plotting exact solution number  3
no file sod.shk
 >> read sod.setup
 rhoL, rho_R =    1.0000000000000000       0.12500000000000000
 pr_L, pr_R  =    1.0000000000000000       0.10000000000000001
 v_L,  v_R   =    0.0000000000000000        0.0000000000000000
set adiabatic gamma manually? (no=read from dumps) (default=no):

then press ‘s’ from the main menu to save, and remake your plot:

Please enter your selection now (y axis or option):6
(x axis) (default=1):
(render) (0=none) ([0:16], default=0):
Graphics device/type (? to see list, default /xw):

To make an offline version of the same plot from the command line, use:

splash shock_0* -y density -x x -dev shock.pdf

read the splash userguide for more

more interesting examples

To proceed to a more interesting calculation, just change the name of the SETUP parameter when you created the Makefile in the run directory, as per the examples:

cd ~/ceph
mkdir disc
cd disc
~/phantom/scripts/writemake.sh disc > Makefile
make setup; make

followed by:

./phantomsetup disc

after editing the .setup file as desired, then finish the setup and run the calculation:

./phantomsetup disc
make qscript NOMP=10 INFILE=disc.in > run.q
sbatch -p temp run.q

…and you’re off and rolling.

more examples of test problems, e.g. Orszag-Tang vortex

To run your own version of standardised test problems shown in the code paper, you can clone the phantom-examples repository:

cd ~/ceph
git clone https://github.com/phantomSPH/phantom-examples
cd phantom-examples/mhd/orstang
make setup; make

followed by:

./phantomsetup orstang256.setup
make qscript NOMP=10 INFILE=orstang256.in > run.q
sbatch -p temp run.q

more info

For more information on the actual machine read the userguide